Skip to content

Latest commit

 

History

History
186 lines (170 loc) · 4.99 KB

File metadata and controls

186 lines (170 loc) · 4.99 KB

Lab 11 : Pipeline avec Kustomize

Objectif:

Kustomize est un outil Kubernetes qui vous permet de personnaliser les fichiers YAML bruts de vos ressources k8s d'origine à des fins multiples (ex: différents environnements, différentes variables/répliques/ressources informatiques, etc ...), en laissant les fichiers YAML d'origines intacts et utilisables tels quels.
L'objectif de ce Lab 11, c'est d'utiliser Kustomize pour générer un fichier de configuration avec des paramètres à partir de plusieurs fichiers manisfestes sans les modifier.
https://kubectl.docs.kubernetes.io/guides/introduction/kustomize/

  1. Création de l'environnement de démonstration
    Déploiement du "resource group":
az group create \
    --location "eastus2" \
    --resource-group "RG-AKS-Lab-11"

Déploiement d'un virtual network:

az network vnet create \
    --resource-group "RG-AKS-Lab-11" \
    --name AKSvnet \
    --location "eastus2" \
    --address-prefixes 10.0.0.0/8

Déploiement du subnet:

SUBNET_ID=$(az network vnet subnet create \
    --resource-group "RG-AKS-Lab-11" \
    --vnet-name AKSvnet \
    --name subnetAKS \
    --address-prefixes 10.240.0.0/16 \
    --query id \
    --output tsv)

Création d'une "Managed Identity":

IDENTITY_ID=$(az identity create \
    --resource-group "RG-AKS-Lab-11" \
    --name idAks \
    --location "eastus2" \
    --query id \
    --output tsv)

Création du "cluster AKS":

az aks create \
    --resource-group "RG-AKS-Lab-11" \
    --name "AKS-Lab-11" \
    --location "eastus2" \
    --network-plugin azure \
    --generate-ssh-keys \
    --node-count 2 \
    --enable-cluster-autoscaler \
    --min-count 1 \
    --max-count 3 \
    --vnet-subnet-id $SUBNET_ID \
    --enable-managed-identity \
    --assign-identity $IDENTITY_ID \
    --yes
  1. Sans Kustomize
    Regarder les manifestes:
  • ./Manifest/base/deployment.yaml
  • ./Manifest/base/service.yaml
  • ./Manifest/base/namespace.yaml

Tout le lab se fera depuis ./Manifest

Création des ressources:
az aks get-credentials --resource-group RG-AKS-Lab-11 --name AKS-Lab-11
kubectl apply -f base/(Vous serez peut être obligé de lancer deux fois la commande)
Vérifications:
kubectl get deploy --namespace test-kustomize

NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
http-test-kustomize   1/1     1            1           13m

kubectl get service --namespace test-kustomize

NAME                  TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
http-test-kustomize   LoadBalancer   10.0.6.249   20.22.64.91   80:32130/TCP   60s

Test:

curl htt://<EXTERNAL-IP>

Ok on supprime:
kubectl delete -f base/

deployment.apps "http-test-kustomize" deleted
namespace "test-kustomize" deleted
service "http-test-kustomize" deleted
  1. Avec Kustomize
    Modifier les fichiers deployment.yaml et service.yaml
    Pour le fichier deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: http-test-kustomize
spec:
  template:
    spec:
      containers:
      - name: http-test-kustomize
        image: nginx
        ports:
        - name: http
          containerPort: 80
          protocol: TCP

Pour le fichier service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: http-test-kustomize
spec:
  type: LoadBalancer
  ports:
    - name: http
      port: 80

Les fichiers ne seront jamais modifiés, on applique simplement une personnalisation au-dessus d'eux grâce à l'outil kustomize pour créer de nouvelles définitions des ressources.
Créez un fichier kustomization.yaml au même niveau que service.yaml et deployment.yaml
kustomization.yaml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: test-kustomize
commonLabels:
  app: http-test-kustomize

resources:
  - service.yaml
  - deployment.yaml
  - namespace.yaml

On doit avoir une arborescence:

|__ base
    |__ deployment.yaml
    |__ namespace.yaml
    |__ service.yaml
    |__ kustomization.yaml

Vérification du YAML qui sera généré:
kubectl kustomize ./base
Les Labels,Selectors et le namespace ont été générés ...
Application de la configuration:
kubectl apply -k base
Test:
kubectl get service --namespace test-kustomize
curl htt://<EXTERNAL-IP>

on supprime :
kubectl delete -k base

  1. Pipeline avec Kustomize
    A partir d'ici on est dans GitHub, on modifie dans le repo
    Modifier les fichiers deployment.yaml et service.yaml (comme précédement)
    Modifiez le fichier kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: mon-namespace
commonLabels:
  app: mon-app

resources:
  - service.yaml
  - deployment.yaml
  - namespace.yaml

Allez dans le workflow ./github/workflows/kustomize.yaml
Observer le workflow
Modifiez le et executez le

  1. Fin du Lab
    az group delete --name RG-AKS-Lab-11