Introducció
Els ConfigMaps són un component essencial en Kubernetes que permeten separar la configuració de l'aplicació del codi de l'aplicació. Això facilita la gestió i la modificació de la configuració sense necessitat de reconstruir la imatge del contenidor.
Conceptes Clau
- ConfigMap: Un objecte de Kubernetes que emmagatzema dades de configuració en parelles clau-valor.
- Volum ConfigMap: Un volum que proporciona dades de configuració a un contenidor.
- Variables d'entorn: Les dades de configuració es poden injectar com a variables d'entorn en els contenidors.
Creació d'un ConfigMap
Mètode 1: Utilitzant un fitxer de configuració YAML
apiVersion: v1 kind: ConfigMap metadata: name: example-config data: database_url: "mongodb://localhost:27017" database_name: "exampledb"
Mètode 2: Utilitzant la línia de comandes kubectl
kubectl create configmap example-config --from-literal=database_url="mongodb://localhost:27017" --from-literal=database_name="exampledb"
Utilització d'un ConfigMap
Injectar com a Variables d'Entorn
apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image: nginx env: - name: DATABASE_URL valueFrom: configMapKeyRef: name: example-config key: database_url - name: DATABASE_NAME valueFrom: configMapKeyRef: name: example-config key: database_name
Montar com a Volum
apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image: nginx volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: example-config
Exemples Pràctics
Exemple 1: Crear i Utilitzar un ConfigMap
-
Crear el ConfigMap:
kubectl create configmap app-config --from-literal=app_name="MyApp" --from-literal=app_version="1.0"
-
Crear un Pod que utilitzi el ConfigMap:
apiVersion: v1 kind: Pod metadata: name: app-pod spec: containers: - name: app-container image: busybox command: ["sh", "-c", "echo $(APP_NAME) $(APP_VERSION) && sleep 3600"] env: - name: APP_NAME valueFrom: configMapKeyRef: name: app-config key: app_name - name: APP_VERSION valueFrom: configMapKeyRef: name: app-config key: app_version
-
Aplicar el Pod:
kubectl apply -f app-pod.yaml
-
Verificar la sortida del Pod:
kubectl logs app-pod
Exemple 2: Montar un ConfigMap com a Volum
-
Crear el ConfigMap:
kubectl create configmap app-config --from-file=config-file=config.txt
-
Crear un Pod que monti el ConfigMap com a volum:
apiVersion: v1 kind: Pod metadata: name: app-pod spec: containers: - name: app-container image: busybox command: ["sh", "-c", "cat /etc/config/config-file && sleep 3600"] volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: app-config
-
Aplicar el Pod:
kubectl apply -f app-pod.yaml
-
Verificar la sortida del Pod:
kubectl logs app-pod
Errors Comuns i Consells
- Error: ConfigMap no trobat: Assegura't que el nom del ConfigMap en el Pod coincideixi exactament amb el nom del ConfigMap creat.
- Error: Clau no trobada: Verifica que la clau especificada en
configMapKeyRef
existeixi en el ConfigMap. - Consell: Utilitza noms descriptius per a les claus del ConfigMap per facilitar la seva gestió i comprensió.
Resum
En aquesta secció, hem après què són els ConfigMaps, com crear-los i com utilitzar-los en els nostres Pods. Els ConfigMaps són una eina poderosa per gestionar la configuració de les aplicacions de manera flexible i eficient. En la següent secció, explorarem els Secrets, que són similars als ConfigMaps però estan dissenyats per emmagatzemar dades sensibles de manera segura.
Curs de Kubernetes
Mòdul 1: Introducció a Kubernetes
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Mòdul 2: Components Bàsics de Kubernetes
Mòdul 3: Gestió de Configuració i Secrets
Mòdul 4: Xarxes en Kubernetes
Mòdul 5: Emmagatzematge en Kubernetes
Mòdul 6: Conceptes Avançats de Kubernetes
Mòdul 7: Monitorització i Registre
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster