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-ObjektsDATA
: 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
- Ein Pfad zu einem Verzeichnis, das eine oder mehrere Konfigurationsdateien enthält und mit dem Flag
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-ObjektsFILE_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-ObjektsDIRECTORY
: 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.