26 lines
9.2 KiB
JSON
26 lines
9.2 KiB
JSON
{
|
||
"schema_version": 1,
|
||
"saved_at": "2026-08-07T04:54:57.2646669Z",
|
||
"content_sha256": "c0af288a6fa4fbf251c54004aa76031bb0100360a63e724c54f7efcefa18aed0",
|
||
"result": {
|
||
"title": "Konfigurationsmanagement in Kubernetes: ConfigMaps \u0026 Secrets - IT-Virtuoso Knowledge Base",
|
||
"url": "https://it-virtuoso.de/container/configmaps-and-secrets/",
|
||
"snippet": "Dieser Artikel erklärt, wie man ConfigMaps und Secrets effektiv nutzt, häufige Fallen vermeidet und bewährte Sicherheitspraktiken implementiert - alles auf Deutsch und mit praxisnahen Codebeispielen.",
|
||
"content": "Container \u0026 Cloud\n\n🍎 Apple Security\n\n🤖 KI \u0026 Smart Home\n\nSmart Home\n\nÜber mich\n\n🛠️ 2. Erstellen \u0026 Verwalten von ConfigMaps\n\n🔐 3. Secrets – Sichere Geheimnisse\n\n📚 4. Praktische Anwendungsfälle\n\n📚 Weiterführende Ressourcen\n\n🎯 Fazit\n\nKonfigurationsmanagement in Kubernetes: ConfigMaps \u0026 Secrets ¶\n\nIn virtuosen Kubernetes-Umgebungen trennen sich Konfiguration und Code strikt.\nConfigMaps und Secrets sind die offiziellen Mechanismen, um Konfigurationsdaten sicher zu speichern und zur Laufzeit in Pods bereitzustellen.\nDieser Artikel erklärt, wie man ConfigMaps und Secrets effektiv nutzt, häufige Fallen vermeidet und bewährte Sicherheitspraktiken implementiert – alles auf Deutsch und mit praxisnahen Codebeispielen.\n\n📦 1. Grundlagen: Warum ConfigMaps \u0026 Secrets? ¶\n\n1.1. Warum nicht einfach in Umgebungsvariablen oder Config-Dateien? ¶\n\nSicherheit : Secrets enthalten sensible Daten (Passwörter, API‑Keys). Das Speichern im Klartext ist ein schwerwiegender Sicherheitsrisiko.\n\nVersionierung : ConfigMaps/Secrets können versioniert und rollback‑fähig sein.\n\nEntkoppelung : Anwendungen müssen nicht wissen, woher die Konfiguration stammt.\n\nMehrfachnutzung : Derselbe ConfigMap kann von mehreren Pods verwendet werden.\n\n1.2. Definitionen im Überblick ¶\n\nTyp\n\nZweck\n\nDatenart\n\nVerschlüsselung\n\nConfigMap\n\nNicht‑geheime Konfiguration (z. B. URL‑Endpunkte, Feature‑Toggles)\n\nSchlüssel‑Wert‑Paare (String‑Daten)\n\nKeine Verschlüsselung nötig\n\nSecret\n\nVertrauliche Daten (Passwörter, API‑Keys, TLS‑Zertifikate)\n\nSchlüssel‑Wert‑Paare, Base64‑kodiert\n\nIntern verschlüsselt, optional encrypted at rest\n\nHauptunterschied : Secrets werden standardmäßig base64‑verschlüsselt im etcd‑Speicher, ConfigMaps nicht.\n\n🛠️ 2. Erstellen \u0026 Verwalten von ConfigMaps ¶\n\n2.1. Erstellen aus Dateien ¶\n\nkubectl create configmap app-config \\\n--from-file = ./config/app.properties \\\n--from-file = ./config/logging.conf\n\nInhalt von app.properties :\n\ndb.url = jdbc:postgresql://db:5432/appdb\ndb.user = app_user\ndb.password = very_secret_password\n\nErgebnis:\nEin ConfigMap-Objekt mit den Schlüsseln app.properties und loggin.conf (der Pfad ist der Dateiname, nicht der Inhalt).\n\n2.2. Erstellen aus Literal‑Werten ¶\n\napiVersion : v1\nkind : ConfigMap\nmetadata :\nname : feature-flags\ndata :\nenable_feature_x : \"true\"\nlog_level : \"debug\"\nfeature_y_enabled : \"false\"\n\n2.3. Verwendung im Pod ¶\n\napiVersion : v1\nkind : Pod\nmetadata :\nname : my-app\nspec :\ncontainers :\n- name : my-container\nimage : my-app:1.0\nenv :\n- name : APP_CONFIG\nvalueFrom :\nconfigMapKeyRef :\nname : app-config\nkey : app.properties\n# Oder direkt als Umgebungsvariable:\nenv :\n- name : LOG_LEVEL\nvalueFrom :\nconfigMapKeyRef :\nname : app-config\nkey : log_level\n\nconfigMapKeyRef : Greift auf einen spezifischen Schlüssel im ConfigMap zu.\n\nvalueFrom ermöglicht das Injizieren als Umgebungsvariable oder als Volume‑Mount.\n\n2.3. ConfigMap als Volume mounten ¶\n\napiVersion : v1\nkind : Pod\nmetadata :\nname : app-pod\nspec :\ncontainers :\n- name : app\nimage : my-app:1.0\nvolumeMounts :\n- name : config-volume\nmountPath : /etc/app-config\nreadOnly : true\nvolumes :\n- name : config-volume\nconfigMap :\nname : app-config\nitems :\n- key : app.properties\nname : app.properties\nmode : 0644\n\nitems : Definiert, welche Schlüssel als Dateien im Pod gemountet werden und unter welchem Pfad.\n\nmode : Dateirechte (hier 0644).\n\n🔐 3. Secrets – Sichere Geheimnisse ¶\n\n3.1. Secrets erstellen ¶\n\nkubectl create secret generic db-credentials \\\n--from-literal = username = 'admin' \\\n--from-literal = password = 'S3cr3tP@ssw0rd!' \\\n--dry-run = client -o yaml \u003e db-credentials-secret.yaml\n\nOder als Manifest:\n\napiVersion : v1\nkind : Secret\nmetadata :\nname : db-credentials\ntype : Opaque\ndata :\nusername : YWRtaW4= # base64 admin\npassword : czNjc3RwckBzc2Vzcw== # base64 of \"S3cr3tP@ssw0rd!\"\n\n3.1.1. Base64‑Kodierung verstehen ¶\n\necho -n \"admin\" | base64 # gibt \"YWRtaW4=\"\necho -n \"S3cr3tP@ssw0rd!\" | base64 # gibt \"czNjc3RwckBzc2Vzcw==\"\n\n3.2. Secrets im Pod nutzen ¶\n\napiVersion : v1\nkind : Pod\nmetadata :\nname : app-pod\nspec :\ncontainers :\n- name : app\nimage : my-app:1.0\nenv :\n- name : DB_USER\nvalueFrom :\nsecretKeyRef :\nname : db-credentials\nkey : username\n- name : DB_PASS\nvalueFrom :\nsecretKeyRef :\nname : db-credentials\nkey : password\n\n3.2. Secrets als Volume mounten (alternativ) ¶\n\napiVersion : v1\nkind : Pod\nmetadata :\nname : app-pod\nspec :\ncontainers :\n- name : app\nimage : my-app:1.0\nvolumeMounts :\n- name : secret-volume\nmountPath : /etc/secret\nreadOnly : true\nvolumes :\n- name : secret-volume\nsecret :\nsecretName : db-credentials\n\n3.3. Best Practices für Secrets ¶\n\nPraxis\n\nWarum wichtig\n\nNever commit Secrets\n\nGit‑Historien残留 führt zu Datenlecks.\n\nLeast‑Privilege‑Access\n\nNur Pods, die den Secret benötigen, dürfen darauf zugreifen.\n\nEnable Encryption at Rest\n\nSchützt Daten im etcd‑Speicher.\n\nLimit Secret Usage\n\nVermeide das Verbreiten von Secrets über Umgebungsvariablen.\n\nRotate Secrets Regular\n\nReduziert Schaden bei einem Leak.\n\n3.3. Beispiel: Secret‑Rotierung mit kubectl ¶\n\nkubectl create secret generic db-credentials-new \\\n--from-literal = username = 'admin_new' \\\n--from-literal = password = 'Neu3str0ngPassword!' \\\n--dry-run = client -o yaml \u003e db-credentials-new.yaml\nkubectl replace secret db-credentials --from-file = db-credentials = db-credentials-new.yaml\n\nHinweis: Nach der Rotation müssen Pods neu starten, um die neuen Werte zu erhalten.\n\n📚 4. Praktische Anwendungsfälle ¶\n\nSzenario\n\nEmpfohlene Vorgehensweise\n\nDatenbank‑Verbindung\n\nKonfiguration via ConfigMap (URL, Treiber) + Secrets für Passwort\n\nFeature‑Toggles\n\nConfigMap‑Schlüssel wie feature_x_enabled=true – kann über Ingress‑Regeln oder UI aktiviert werden\n\nAPI‑Schlüssel für Drittanbieter\n\nSecret‑Secret, nicht als Code in Repositories\n\nTLS‑Zertifikate\n\nIn Secret einbinden und als Volume in Pods mounten, Anwendung liest Zertifikat zur TLS‑Terminierung\n\nUmgebungsvariablen für CI/CD\n\nConfigMap zur Bereitstellung von Build‑Versionen oder Feature‑Flags\n\n📚 Weiterführende Ressourcen ¶\n\nThema\n\nQuelle\n\nLink\n\nKubernetes ConfigMap Docs\n\nOfficial K8s Docs\n\nhttps://kubernetes.io/docs/concepts/configuration/configmap/\n\nKubernetes Secrets Docs\n\nOfficial K8s Docs\n\nhttps://kubernetes.io/docs/concepts/configuration/secret/\n\nkubectl Cheat Sheet\n\nKelsey Hightower\n\nhttps://kubernetes.io/docs/reference/kubectl/cheatsheet/\n\nOCP – Secrets Management\n\nRed Hat Docs\n\nhttps://docs.openshift.com/container-platform/latest/security/authentication/managing-secrets.html\n\nHashiCorp Vault Integration\n\nVault Docs\n\nhttps://www.vaultproject.io/docs/secrets/kubernetes/k8s\n\n🎯 Fazit ¶\n\nConfigMaps sind ideal für nicht‑geheime Konfigurationen.\n\nSecrets schützen vertrauliche Daten und werden automatisch base64‑kodiert sowie optional verschlüsselt.\n\nVolume‑Mounts und Umgebungsvariablen ermöglichen flexiselektives Injizieren von Daten.\n\nSicherheit erfordert bewusste Praxis: Verschlüsselung, Zugriffskontrolle und Rotation.\n\nMit diesen Mitteln können Sie Ihre Anwendungen sauber entkoppeln , sicher betreiben und gleichzeitig wartungsfreundlich halten – ein entscheidender Schritt für jede moderne, cloud‑native Infrastruktur.\n\nDieser Artikel wurde am 2026‑04‑06 erstellt. Konfigurationsmanagement‑Praxis entwickelt sich kontinuierlich; aktualisieren Sie regelmäßig Ihre Bild‑ und Helm‑Charts, um sicherzustellen, dass geheime Daten sicher behandelt werden.\n\n💡 Community \u0026 Feedback\n\nZurück zum Seitenanfang",
|
||
"content_type": "text/html",
|
||
"query": "Wie identifiziert man Secrets in Kubernetes und Container-Umgebungen systematisch?",
|
||
"language": "de-DE",
|
||
"round": 1,
|
||
"fetched": true,
|
||
"relevant": true,
|
||
"relevance": 0.9542857142857143,
|
||
"source_quality": "reputable_secondary",
|
||
"source_quality_score": 0.8240000000000001,
|
||
"actionable": true,
|
||
"covered_gap_ids": [
|
||
"G1"
|
||
],
|
||
"assessment_reason": "Die Quelle erklärt detailliert, wie Secrets in Kubernetes erstellt und verwaltet werden, einschließlich der Kodierung von Daten und der Verwendung in Pods. Sie beschreibt auch die Unterschiede zwischen ConfigMaps und Secrets und bietet konkrete Beispiele und Schritte zur Erstellung und Verwendung von Secrets. Die Quelle ist fachlich verlässlich und bietet umsetzbare Lösungen."
|
||
}
|
||
}
|