Sobes.tech
Junior

Was ist ein ConfigMap in Kubernetes?

sobes.tech KI

Antwort von AI

ConfigMap ist ein API-Objekt, das verwendet wird, um nicht vertrauliche Daten in Schlüssel-Wert-Paaren in Kubernetes zu speichern. Es ermöglicht die Trennung der Anwendungs-Konfiguration von ihrem Container-Image, was die Anwendungen portabler macht und die Konfigurationsverwaltung vereinfacht.

Daten in einem ConfigMap können auf folgende Weisen verwendet werden:

  • Als Umgebungsvariablen im Container.
  • Als Befehlszeilenargumente für den Container.
  • Als Dateien in einem Volume, das in den Pod eingebunden ist.

Beispiel für die Erstellung eines ConfigMap aus einer Datei:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  my-config-file.properties: |
    database.url=jdbc:mysql://localhost:3306/mydatabase
    database.username=mydbuser
    database.password=secret

Verwendung des ConfigMap im Pod über Umgebungsvariablen:

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
spec:
  containers:
  - name: my-app
    image: my-app-image
    env:
    - name: DATABASE_URL
      valueFrom:
        configMapKeyRef:
          name: my-config
          key: database.url
    - name: DATABASE_USERNAME
      valueFrom:
        configMapKeyRef:
          name: my-config
          key: database.username

Verwendung des ConfigMap im Pod durch Mounten als Datei:

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod
spec:
  containers:
  - name: my-app
    image: my-app-image
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: my-config

Wichtige Merkmale:

  • Wird für nicht vertrauliche Daten verwendet. Für vertrauliche Daten sollten Secrets genutzt werden.
  • Ermöglicht die dynamische Aktualisierung der Konfiguration ohne das Neubauen des Images.
  • Die Daten in einem ConfigMap sind in der Größe beschränkt (standardmäßig 1 MB).
  • Einige Änderungen an einem ConfigMap können einen Neustart des Pods erfordern, um wirksam zu werden, abhängig von der Verwendungsmethode (Umgebungsvariablen erfordern einen Neustart, Mounten als Datei kann dynamisch sein).