Configmap in Kubernetes
Su questa pagina
- Prerequisiti
- Cosa faremo?
- Crea una mappa di configurazione e accedi ai suoi dati.
- Conclusione
Un ConfigMap viene utilizzato per archiviare dati non riservati. I dati sono in coppie chiave-valore. I pod possono utilizzare ConfigMap come argomenti della riga di comando, variabili di ambiente o come file di configurazione in un volume.
Utilizzando un ConfigMap possiamo separare la configurazione specifica dell'ambiente dalle immagini del contenitore. Questo può aiutarci a creare le nostre applicazioni portatili. ConfigMap non fornisce la crittografia, quindi si consiglia sempre di non archiviare informazioni riservate nella Configmap. Invece di utilizzare config, i segreti possono essere utilizzati per archiviare informazioni riservate o chiavi di sicurezza o password.
Esistono diversi modi di utilizzare quali dati ConfigMap possono essere utilizzati all'interno di un pod:
- Argomenti della riga di comando per un contenitore
- Variabili d'ambiente per un contenitore
- Aggiungi un file nel volume di sola lettura.
- Scrivi il codice da eseguire all'interno del pod che utilizza l'API Kubernetes per leggere una ConfigMap.
Per saperne di più su Configmap, visita la pagina ufficiale di Kubernetes qui.
In questo articolo vedremo due esempi per accedere ai dati dalle mappe di configurazione. In un esempio utilizzeremo le mappe di configurazione come variabili di ambiente nel comando pod e nell'altro popoleremo un volume con i dati memorizzati in una ConfigMap.
Prerequisiti
- Cluster Kubernetes con almeno 1 nodo di lavoro.
Se vuoi imparare a creare un cluster Kubernetes, fai clic qui. Questa guida ti aiuterà a creare un cluster Kubernetes con 1 master e 2 nodi su istanze AWS Ubuntu 18.04 EC2.
Che cosa faremo?
- Crea una mappa di configurazione e accedi ai suoi dati
Crea una mappa di configurazione e accedi ai suoi dati.
Crea un file con la seguente definizione di mappa di configurazione.
vim my-configmap-demo1.yaml
apiVersion: v1 kind: ConfigMap metadata: name: my-configmap-demo1 data: variable_one: one variable_two: two
Configmap può essere creato utilizzando il seguente comando.
kubectl create -f my-configmap-demo1.yaml
Ottieni i dettagli della mappa di configurazione che abbiamo creato.
kubectl get configmaps
kubectl describe configmaps my-configmap-demo1
Nello screenshot qui sopra, puoi vedere che abbiamo i nostri dati \variable_one\ e \variable_two\ disponibili nella mappa di configurazione che abbiamo creato.
Ora è possibile accedere a questa mappa di configurazione nel pod.
Per accedere ai dati della mappa di configurazione come variabili di ambiente nei comandi pod, creiamo un file di definizione del pod con il seguente contenuto.
vim my-pod-with-configmaps-as-environment-variables.yml
apiVersion: v1 kind: Pod metadata: name: my-pod-configmap-demo spec: containers: - name: my-container-configmap-demo image: k8s.gcr.io/busybox command: [ "/bin/sh", "-c", "echo $(variable_one_env) $(variable_two_env)" ] env: - name: variable_one_env valueFrom: configMapKeyRef: name: my-configmap-demo1 key: variable_one - name: variable_two_env valueFrom: configMapKeyRef: name: my-configmap-demo1 key: variable_two restartPolicy: Never
Ora siamo pronti per creare un pod in grado di accedere ai dati dalla mappa di configurazione come variabili di ambiente.
kubectl get podss
kubectl create -f my-pod-with-configmaps-as-environment-variables.yml
kubectl get pod
Poiché il pod ha completato con successo la sua esecuzione ed esisteva poiché non esiste alcun processo in grado di mantenere in vita i pod, possiamo controllare i suoi log per vedere se la mappa di configurazione era disponibile nel pod o meno. Per verificarlo, abbiamo utilizzato il comando echo nel pod che stamperà i valori delle variabili.
kubectl get pods
kubectl logs my-pod-configmap-demo
Nella schermata sopra, si può vedere che i dati della mappa di configurazione erano accessibili nel pod e ha valori stampati usando il comando echo come \uno\ e \due\.
I dati della mappa di configurazione sono disponibili anche come file nei volumi.
Per accedere ai dati della mappa di configurazione tramite il volume, crea una definizione del pod utilizzando il seguente contenuto.
vim my-pod-with-configmaps-added-to-volume.yml
apiVersion: v1 kind: Pod metadata: name: my-pod-configmap-demo2 spec: containers: - name: my-container-configmap-demo2 image: k8s.gcr.io/busybox command: [ "/bin/sh", "-c", "ls /etc/myconfig/" ] volumeMounts: - name: my-config-volume mountPath: /etc/myconfig volumes: - name: my-config-volume configMap: name: my-configmap-demo1 restartPolicy: Never
Ora, creiamo un pod che può avere i dati della mappa di configurazione disponibili come file dal volume \my-config-volume\. Questi dati della mappa di configurazione saranno disponibili nella directory \/etc/myconfig\ nel pod.
kubectl get pods
kubectl create -f my-pod-with-configmaps-added-to-volume.yml
kubectl get pods
Anche questa volta, il pod è uscito correttamente poiché non esiste alcun processo per mantenerlo in vita.
Tuttavia, abbiamo utilizzato il comando \ls /etc/myconfig\ che elencherà il contenuto della directory \/etc/myconfig\.
kubectl get pods
Nei log possiamo vedere che i dati della mappa di configurazione erano disponibili come file in \/etc/myconfig\
kubectl logs my-pod-configmap-demo2
Nello screenshot qui sopra, puoi vedere che i dati della mappa di configurazione erano disponibili nel pod come file \variable_one\ e \variable_two\.
Conclusione
In questo articolo, abbiamo imparato a creare una mappa di configurazione e ad accedervi in 2 modi. Abbiamo visto i passaggi per accedere ai dati della mappa di configurazione come variabili di ambiente al comando pod e ai file nel volume nel pod.