0Pricing
DevOps Bootcamp · Lektion

ConfigMaps und Secrets

Verwalten Sie Konfigurationsdaten und vertrauliche Informationen in Ihren Kubernetes-Deployments mithilfe von ConfigMaps und Secrets sicher.

ConfigMaps und Secrets ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Einführung in ConfigMaps und Secrets

Willkommen! In dieser Lektion lernen Sie, wie Sie Konfigurationsdaten und vertrauliche Informationen in Kubernetes verwalten. Wir sehen uns ConfigMaps und Secrets an, zwei wichtige Werkzeuge für flexible und sichere Anwendungsbereitstellungen.

ConfigMaps und Secrets — Illustration 1

Warum Konfigurationen auslagern?

Stellen Sie sich vor, Sie hinterlegen Datenbankzugangsdaten oder API-Schlüssel direkt im Docker-Image Ihrer Anwendung. Dadurch werden Aktualisierungen erschwert und vertrauliche Daten offengelegt.

  • Unflexibilität: Änderungen erfordern eine Neuerstellung des Images.
  • Sicherheitsrisiko: Vertrauliche Daten sind fest im Image enthalten.
  • Umgebungsspezifisch: Verschiedene Umgebungen (Entwicklung, Produktion) benötigen unterschiedliche Einstellungen.

ConfigMaps: Nicht vertrauliche Daten

Eine ConfigMap ist ein Kubernetes-Objekt zum Speichern nicht vertraulicher Konfigurationsdaten als Schlüssel-Wert-Paare. Sie können sie sich als zentralen Ort für die Einstellungen Ihrer Anwendung vorstellen, etwa für Protokollierungsstufen oder API-Endpunkte.

Sie entkoppelt die Konfiguration vom Anwendungscode und macht Ihre Deployments portabler und einfacher zu verwalten.

Eine ConfigMap definieren

Sie können eine ConfigMap aus Literalwerten, Dateien oder Verzeichnissen erstellen. Hier sehen Sie ein einfaches Beispiel in einer YAML-Datei:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-app-config
data:
  log_level: "INFO"
  api_endpoint: "http://myapi.example.com"

ConfigMap als Umgebungsvariablen

Nach der Erstellung kann ein Pod die Daten einer ConfigMap als Umgebungsvariablen verwenden. Dies ist eine gängige Methode, um Ihrer Anwendung Einstellungen zu übergeben.

So verwendet ein Pod unsere my-app-config:

apiVersion: v1
kind: Pod
metadata:
  name: configmap-env-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ["sh", "-c", "echo Log Level: $LOG_LEVEL; echo API: $API_ENDPOINT"]
    env:
    - name: LOG_LEVEL
      valueFrom:
        configMapKeyRef:
          name: my-app-config
          key: log_level
    - name: API_ENDPOINT
      valueFrom:
        configMapKeyRef:
          name: my-app-config
          key: api_endpoint
  restartPolicy: Never

ConfigMap als eingebundene Dateien

Alternativ können die Daten einer ConfigMap als Dateien in Ihren Container eingebunden werden. Jedes Schlüssel-Wert-Paar wird zu einer Datei, wobei der Schlüssel als Dateiname und der Wert als Inhalt verwendet wird.

Das ist nützlich für Konfigurationsdateien, die Ihre Anwendung an einem bestimmten Pfad erwartet.

apiVersion: v1
kind: Pod
metadata:
  name: configmap-file-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ["sh", "-c", "cat /etc/config/log_level; cat /etc/config/api_endpoint"]
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: my-app-config
  restartPolicy: Never

Secrets: Vertrauliche Daten

Secrets ähneln ConfigMaps, sind jedoch für vertrauliche Daten wie Passwörter, API-Schlüssel oder TLS-Zertifikate vorgesehen. Kubernetes unterstützt Sie dabei, diese sicher zu verwalten und zu verteilen.

Während ConfigMaps Daten im Klartext speichern, sind Secrets base64-codiert. Das ist KEINE Verschlüsselung, verhindert jedoch eine versehentliche Offenlegung.

Ein Secret definieren

Beim Erstellen eines Secrets müssen die Werte base64-codiert sein. Zum Codieren können Sie echo -n 'my-password' | base64 verwenden.

Hier sehen Sie ein Beispiel für ein Datenbankpasswort:

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials
type: Opaque
data:
  username: YWRtaW4= # base64 of 'admin'
  password: c3VwZXJzZWNyZXRwYXNz # base64 of 'supersecretpass'

Secrets in Pods verwenden

Pods verwenden Secrets weitgehend auf dieselbe Weise wie ConfigMaps: als Umgebungsvariablen oder eingebundene Dateien. Kubernetes decodiert sie automatisch, bevor sie dem Container zur Verfügung gestellt werden.

Aus Sicherheitsgründen ist die Verwendung als eingebundene Dateien im Allgemeinen vorzuziehen, da Umgebungsvariablen leichter protokolliert oder untersucht werden können.

apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo DB User: $DB_USERNAME; echo DB Pass: $DB_PASSWORD"]
    env:
    - name: DB_USERNAME
      valueFrom:
        secretKeyRef:
          name: db-credentials
          key: username
    - name: DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: db-credentials
          key: password
  restartPolicy: Never

Bewährte Sicherheitspraktiken

Denken Sie daran: Base64-Codierung ist keine Verschlüsselung. Für eine echte Verschlüsselung im Ruhezustand benötigen Sie möglicherweise ein Kubernetes-Backend für Secrets (wie Vault) oder nutzen KMS-Dienste eines Cloud-Anbieters.

  • RBAC: Kontrollieren Sie, wer auf Secrets zugreifen kann.
  • Geringstmögliche Berechtigungen: Gewähren Sie Pods nur Zugriff auf die Secrets, die sie benötigen.
  • Eingebundene Dateien: Ziehen Sie das Einbinden von Secrets als Dateien gegenüber Umgebungsvariablen vor.

Kurze Überprüfung der Konfiguration

Sie müssen einen API-Schlüssel (vertraulich) und eine Einstellung für die Protokollierungsstufe (nicht vertraulich) Ihrer Anwendung in Kubernetes speichern.

Welche Kubernetes-Objekte sollten Sie jeweils verwenden?

Rückblick: ConfigMaps und Secrets

Sehr gut! Sie haben gelernt, wie Sie Anwendungskonfigurationen und vertrauliche Daten in Kubernetes verwalten.

  • ConfigMaps: Speichern nicht vertrauliche Schlüssel-Wert-Paare.
  • Secrets: Speichern vertrauliche Daten (base64-codiert).
  • Beide können von Pods als Umgebungsvariablen oder eingebundene Dateien verwendet werden.
  • Befolgen Sie beim Umgang mit vertraulichen Informationen stets bewährte Sicherheitspraktiken.

Als Nächstes können Sie sich mit fortgeschrittenen Sicherheitsthemen wie RBAC und Lösungen zur externen Secret-Verwaltung beschäftigen.

Häufig gestellte Fragen

Ist die Lektion „ConfigMaps und Secrets“ kostenlos?

Ja — der vollständige Text von „ConfigMaps und Secrets“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „ConfigMaps und Secrets“?

Verwalten Sie Konfigurationsdaten und vertrauliche Informationen in Ihren Kubernetes-Deployments mithilfe von ConfigMaps und Secrets sicher. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um DevOps Bootcamp zu starten?

Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „ConfigMaps und Secrets“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?

Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Deployments für zustandslose Apps
  2. Services für den Netzwerkzugriff
  3. ConfigMaps und Secrets
  4. Ingress und externes Routing
← Zurück zu DevOps Bootcamp