ConfigMap


Auf dieser Seite werden das ConfigMap-Objekt von Kubernetes und seine Verwendung in Google Kubernetes Engine (GKE) beschrieben.

Überblick

ConfigMaps binden nicht vertrauliche Konfigurationsartefakte wie Konfigurationsdateien, Befehlszeilenargumente und Umgebungsvariablen an Ihre Pod-Container und Systemkomponenten zur Laufzeit.

Eine ConfigMap trennt die Konfigurationen vom Pod und den Komponenten, damit die Arbeitslasten übertragbar bleiben. Dadurch können ihre Konfigurationen einfacher geändert und verwaltet werden und es wird verhindert, dass Konfigurationsdaten gemäß Pod-Spezifikationen hartcodiert werden.

ConfigMap erstellen

Sie können eine ConfigMap mit folgendem Befehl erstellen:

kubectl create configmap NAME DATA

Dabei gilt:

  • NAME: der Name des ConfigMap-Objekts
  • DATA: die Konfigurationsdaten für die ConfigMap, nämlich einer der folgenden Werte:

    • Ein Pfad zu einem Verzeichnis, das eine oder mehrere Konfigurationsdateien enthält und mit dem Flag --from-file angegeben wird.
    • Schlüssel/Wert-Paare, die jeweils mit Flags vom Typ --from-literal angegeben werden

Weitere Informationen zu kubectl create finden Sie in der Referenzdokumentation.

Außerdem können Sie eine ConfigMap erstellen, indem Sie in einer YAML-Manifestdatei ein ConfigMap-Objekt definieren und das Objekt mit kubectl create -f FILE_NAME bereitstellen.

ConfigMap aus Dateien erstellen

Verwenden Sie --from-file, um eine ConfigMap aus einer oder mehreren Dateien zu erstellen. Sie können Dateien in einem beliebigen Klartextformat wie .properties, .txt oder .env angeben, solange die Dateien Schlüssel/Wert-Paare enthalten.

Als Best Practice speichern Sie Ihre ConfigMap-Dateien in Git. Dadurch können Sie die Vorteile einer CI/CD-Pipeline (Continuous Integration and Delivery Pipeline) nutzen.

Führen Sie den folgenden Befehl aus, um eine einzelne Datei oder mehrere Dateien zu übergeben:

kubectl create configmap NAME \
    --from-file FILE_PATH_1 \
    --from-file FILE_PATH_2

Dabei gilt:

  • NAME: der Name des ConfigMap-Objekts
  • FILE_PATH_1: der Pfad zu Ihrer Datei, z. B. path/to/file.properties
  • FILE_PATH_2: der Pfad zu einer zweiten Datei, z. B. path/to/file2.properties

Führen Sie den folgenden Befehl aus, um ein Verzeichnis zu übergeben, das mehrere Dateien enthält:

kubectl create configmap NAME \
    --from-file DIRECTORY

Dabei gilt:

  • NAME: der Name des ConfigMap-Objekts
  • DIRECTORY: der Verzeichnispfad, z. B. path/to/directory.

Wenn Sie eine ConfigMap auf Grundlage von Dateien erstellen, ist der Schlüssel standardmäßig der Basisname des Dateipfads und der Wert standardmäßig der Inhalt der Datei. Sie können auch einen alternativen Schlüssel angeben.

Wenn Sie eine ConfigMap auf der Grundlage von Verzeichnissen erstellen, wird jede Datei im Verzeichnis, deren Basisname ein gültiger Schlüssel ist, in die ConfigMap einbezogen. kubectl ignoriert nicht reguläre Dateien wie Symlinks, Geräte und Verbindungen. kubectl ignoriert auch Unterverzeichnisse, da kubectl create configmap keine Unterverzeichnisse durchsucht.

Mit dem folgenden Befehl wird beispielsweise eine ConfigMap mit dem Namen game-data aus dem Verzeichnis game-configs erstellt, das zwei properties-Dateien enthält: game.properties und ui.properties:

kubectl create configmap game-data \
    --from-file game-configs/

Durch Ausführung von kubectl get configmap game-data -o yaml wird die folgende Ausgabe zurückgegeben:

apiVersion: v1
data:
  game.properties: |
    enemies=aliens
    lives=3
    ...
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    ...
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: game-data
  namespace: default
  resourceVersion: ...
  selfLink: /api/v1/namespaces/default/configmaps/game-data
  uid: ...

ConfigMap aus Literalwerten erstellen

Verwenden Sie --from-literal, um eine ConfigMap aus Literalwerten zu erstellen.

Mit dem folgenden Befehl wird beispielsweise eine ConfigMap mit dem Namen LITERAL_DATA mit zwei Schlüssel/Wert-Paaren erstellt:

kubectl create configmap LITERAL_DATA \
    --from-literal key1=VALUE_1 \
    --from-literal key2=VALUE_2

Für jedes Schlüssel/Wert-Paar geben Sie --from-literal an.

Die Ausführung von kubectl get configmap literal-data -o yaml gibt die folgende Ausgabe zurück.

apiVersion: v1
data:
  key1: VALUE_1
  key2: VALUE_2
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: LITERAL_DATA
  namespace: default
  resourceVersion: ....
  selfLink: /api/v1/namespaces/default/configmaps/literal-data
  uid: ...

ConfigMap verwenden

Zur Verwendung einer ConfigMap mit Ihren Arbeitslasten können Sie eine Umgebungsvariable angeben, die auf die Werte der ConfigMap verweist, oder ein Volume bereitstellen, das die ConfigMap enthält. Weitere Informationen finden Sie unter Pod für die Verwendung einer ConfigMap konfigurieren.

Nächste Schritte