Skip to content

Cum să gestionezi configurarea cu ConfigMap în Kubernetes

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să gestionezi configurarea cu ConfigMap în Kubernetes. We cover key concepts, practical examples, and best practices.

Problema

Ai aplicații care au nevoie de configurații diferite între medii (dev, staging, producție) și nu vrei să reconstruiești imaginea Docker pentru fiecare setare.

Soluția Pas cu Pas

1. Creează un ConfigMap din fișier

kubectl create configmap app-config --from-literal=APP_ENV=production --from-literal=LOG_LEVEL=info

Output:

configmap/app-config created

2. Creează un ConfigMap din YAML

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  APP_ENV: production
  LOG_LEVEL: info
  config.json: |
    {
      "database": {
        "host": "db.example.com",
        "port": 5432
      }
    }
kubectl apply -f configmap.yaml

3. Montează ConfigMap ca variabile de mediu

apiVersion: v1
kind: Pod
metadata:
  name: app-pod
spec:
  containers:
  - name: app
    image: my-app:latest
    envFrom:
    - configMapRef:
        name: app-config

4. Montează ConfigMap ca volum

spec:
  containers:
  - name: app
    image: my-app:latest
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: app-config

5. Verifică ConfigMap-ul

kubectl get configmap app-config -o yaml

6. Actualizează un ConfigMap

kubectl create configmap app-config --from-literal=LOG_LEVEL=debug --dry-run=client -o yaml | kubectl apply -f -

Prevenție

  • Nu stoca date sensibile în ConfigMap. Folosește Secret pentru parole și chei.
  • Actualizarea ConfigMap-ului nu re-pornește automat Pod-urile. Folosește un restart manual sau tool-uri ca Reloader.
  • Folosește immutable: true pentru ConfigMap-uri care nu se schimbă.

Greșeli Comune

  1. Date sensibile în ConfigMap — ConfigMap-urile nu sunt criptate. Folosește Secret.
  2. Modificare fără restart Pod — Pod-urile nu văd actualizările ConfigMap-ului decât după restart.
  3. Chei invalide — Variabilele de mediu trebuie să respecte regulile de denumire UNIX.
  4. ConfigMap lipsă — Pod-ul nu pornește dacă ConfigMap-ul referit nu există.
  5. Volum nemontat — ConfigMap-ul montat ca fișier suprascrie întregul director de montare.

Exercițiu

Creează un ConfigMap cu trei variabile de configurare, un Deployment care le citește ca variabile de mediu și verifică valorile cu kubectl exec.

FAQ

### Care este diferența dintre ConfigMap și Secret?

ConfigMap stochează date necriptate în plain text. Secret stochează date codificate base64 și poate fi criptat etc.

Cum actualizez ConfigMap-ul fără a reporni manual Pod-urile?

Folosește un controller precum Reloader (stakater/Reloader) care detectează schimbări în ConfigMap-uri și declanșează restart-ul Pod-urilor.

ConfigMap-urile au limită de dimensiune?

Da, dimensiunea maximă a unui ConfigMap este 1 MB. Pentru date mai mari, folosește volume montate sau un sistem de stocare extern.

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează seamless cu Kubernetes pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro