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.yamlque 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: 80Ara, 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:devAplicació 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
baseamb un fitxerdeployment.yamlque defineixi un Deployment amb 3 rèpliques. - Crea un fitxer
kustomization.yamldins del directoribaseque inclogui el fitxerdeployment.yaml. - Crea un directori
overlays/stagingamb un fitxerkustomization.yamlque utilitzi la base i un fitxerdeployment-patch.yamlque 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
