Sobes.tech
Junior

Cos'è un ConfigMap in Kubernetes?

sobes.tech AI

Risposta dell'AI

ConfigMap è un oggetto API utilizzato per memorizzare dati non sensibili sotto forma di coppie chiave-valore in Kubernetes. Permette di separare la configurazione dell'applicazione dalla sua immagine del contenitore, rendendo le applicazioni più portatili e semplificando la gestione della configurazione.

I dati in un ConfigMap possono essere utilizzati in diversi modi:

  • Come variabili di ambiente nel contenitore.
  • Come argomenti della riga di comando per il contenitore.
  • Come file in un volume montato nel Pod.

Esempio di creazione di un ConfigMap da un file:

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

Utilizzo del ConfigMap nel Pod tramite variabili di ambiente:

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

Utilizzo del ConfigMap nel Pod montandolo come file:

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

Caratteristiche principali:

  • Viene usato per dati non sensibili. Per dati sensibili, usare Secrets.
  • Permette di aggiornare la configurazione dinamicamente senza ricostruire l'immagine.
  • I dati in un ConfigMap sono limitati in dimensione (di default 1 MB).
  • Alcune modifiche al ConfigMap possono richiedere il riavvio del Pod per avere effetto, a seconda del metodo di utilizzo (le variabili di ambiente richiedono il riavvio, il montaggio come file può essere dinamico).