Introducció a Kustomize
Kustomize és una eina de configuració de Kubernetes que permet gestionar les configuracions de manera declarativa. A diferència d'altres eines com Helm, Kustomize no utilitza plantilles, sinó que es basa en la modificació de fitxers YAML existents mitjançant "patches" i altres tècniques. Això permet una gestió més senzilla i menys propensa a errors de les configuracions de Kubernetes.
Conceptes Clau
- Base: Un conjunt de fitxers YAML que defineixen els recursos bàsics de Kubernetes.
- Overlay: Un conjunt de modificacions que s'apliquen a una base per adaptar-la a diferents entorns (per exemple, desenvolupament, staging, producció).
- Kustomization File: Un fitxer
kustomization.yaml
que defineix com s'han d'aplicar les modificacions a la base.
Instal·lació de Kustomize
Kustomize es pot instal·lar com una eina independent o com una part de kubectl
. Per instal·lar Kustomize com una eina independent, segueix aquests passos:
# Descarrega l'última versió de Kustomize curl -s "https://api.github.com/repos/kubernetes-sigs/kustomize/releases/latest" | grep browser_download_url | grep linux | cut -d '"' -f 4 | wget -qi - # Descomprimeix l'arxiu descarregat tar -xzf kustomize_v*.tar.gz # Mou l'executable a un directori que estigui en el PATH sudo mv kustomize /usr/local/bin/
Alternativament, si ja tens kubectl
instal·lat, pots utilitzar Kustomize directament amb kubectl
:
Creació d'una Base amb Kustomize
Comencem creant una base simple. Suposem que tenim un fitxer deployment.yaml
que defineix un Deployment de Kubernetes:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: my-app:1.0.0 ports: - containerPort: 80
Ara, creem un fitxer kustomization.yaml
per definir aquesta base:
Creació d'Overlays amb Kustomize
Suposem que volem crear un overlay per l'entorn de desenvolupament que utilitzi una imatge diferent i un nombre diferent de rèpliques. Creem un directori overlays/development
i afegim un fitxer kustomization.yaml
:
El fitxer deployment-patch.yaml
contindrà les modificacions:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 1 template: spec: containers: - name: my-app image: my-app:dev
Aplicació de Configuracions amb Kustomize
Per aplicar la configuració de l'overlay de desenvolupament, utilitza el següent comandament:
Aquest comandament generarà la configuració final combinant la base i l'overlay, i la desplegarà al clúster de Kubernetes.
Exercicis Pràctics
Exercici 1: Crear una Base i un Overlay
- Crea un directori
base
amb un fitxerdeployment.yaml
que defineixi un Deployment amb 3 rèpliques. - Crea un fitxer
kustomization.yaml
dins del directoribase
que inclogui el fitxerdeployment.yaml
. - Crea un directori
overlays/staging
amb un fitxerkustomization.yaml
que utilitzi la base i un fitxerdeployment-patch.yaml
que canviï el nombre de rèpliques a 2 i la imatge amy-app:staging
. - Aplica la configuració de l'overlay de staging al teu clúster de Kubernetes.
Solució
-
base/deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: my-app:1.0.0 ports: - containerPort: 80
-
base/kustomization.yaml
:resources: - deployment.yaml
-
overlays/staging/kustomization.yaml
:bases: - ../../base patchesStrategicMerge: - deployment-patch.yaml
-
overlays/staging/deployment-patch.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 2 template: spec: containers: - name: my-app image: my-app:staging
-
Aplica la configuració:
kubectl apply -k overlays/staging
Conclusió
Kustomize és una eina poderosa per gestionar configuracions de Kubernetes de manera declarativa i sense l'ús de plantilles. Permet crear configuracions reutilitzables i fàcilment modificables per a diferents entorns, facilitant la gestió i el desplegament d'aplicacions en Kubernetes. Amb la pràctica, Kustomize esdevé una eina indispensable per a qualsevol administrador de Kubernetes.
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