Ricerca nel sito web

Configmap in Kubernetes


Su questa pagina

  1. Prerequisiti
  2. Cosa faremo?
  3. Crea una mappa di configurazione e accedi ai suoi dati.
  4. 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:

  1. Argomenti della riga di comando per un contenitore
  2. Variabili d'ambiente per un contenitore
  3. Aggiungi un file nel volume di sola lettura.
  4. 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

  1. 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?

  1. 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.