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:

kubectl kustomize <path-to-kustomization-directory>

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:

resources:
- deployment.yaml

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:

bases:
- ../../base

patchesStrategicMerge:
- deployment-patch.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:

kubectl apply -k overlays/development

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

  1. Crea un directori base amb un fitxer deployment.yaml que defineixi un Deployment amb 3 rèpliques.
  2. Crea un fitxer kustomization.yaml dins del directori base que inclogui el fitxer deployment.yaml.
  3. Crea un directori overlays/staging amb un fitxer kustomization.yaml que utilitzi la base i un fitxer deployment-patch.yaml que canviï el nombre de rèpliques a 2 i la imatge a my-app:staging.
  4. Aplica la configuració de l'overlay de staging al teu clúster de Kubernetes.

Solució

  1. 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
    
  2. base/kustomization.yaml:

    resources:
    - deployment.yaml
    
  3. overlays/staging/kustomization.yaml:

    bases:
    - ../../base
    
    patchesStrategicMerge:
    - deployment-patch.yaml
    
  4. 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
    
  5. 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

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

Mòdul 8: Seguretat en Kubernetes

Mòdul 9: Escalabilitat i Rendiment

Mòdul 10: Ecosistema i Eines de Kubernetes

Mòdul 11: Estudis de Cas i Aplicacions del Món Real

Mòdul 12: Preparació per a la Certificació de Kubernetes

© Copyright 2024. Tots els drets reservats