Deploiements

Stratégies de déploiement

Il existe deux types de stratégies de déploiement:

  1. Recreate
    Détruire tous les pods et créer de nouvelles instances avec la nouvelle version.
    Le problème de cette stratégie est qu’entre l’arrêt des anciennes versions et la mise en service d’une nouvelle version, l’application est arrêtée et est inacessible aux utilisateurs

  2. Rolling update
    Tous les pods ne sont pas détruits en même temps: on supprime un pod et on en lance un nouveau, un par un.
    De cette manière, l’application ne s’arrête jamais et la mise à jour est transparente pour l’utilisateur. Techniquement, le déploiement crée un nouveau replica, et ajoute des nouveaux pods au fur et à mesure qu’il réduit le nombre de pods de l’ancien replica.

Fichier de définition

Créer

Lister

Lister les révisions

Mettre à jour

Annoter

Les annotations permettent de modifier le message affiché

$ kubectl set image deploy/webapp api="$DESTINATION:$CI_COMMIT_SHA"
deployment.apps/webapp image updated
$ kubectl rollout history deploy/webapp
deployment.apps/webapp 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
$ kubectl annotate deploy webapp kubernetes.io/change-cause="version change to $CI_PIPELINE/django:$CI_COMMIT_SHA" --overwrite=true
deployment.apps/webapp annotate
$ kubectl rollout history deploy/webapp
deployment.apps/webapp 
REVISION  CHANGE-CAUSE
1         <none>
2         version change to staging/django:6139eb956cf307d941bda846e98c94752028e52c

Annuler une mise à jour

Inspecter

$ kubectl describe deployment myapp-deployment
Name:               myapp-deployment
Namespace:          default
CreationTimestamp:  Sun, 12 jul 2020 16:09:55 -0400
Labels:             tier=frontend
Annotations:        deployment.kubernetes.io/revision: 2
                    kubernetes.io/change-cause: kubectl edit deployment myapp-deployment --record=true
Selector:           app=myapp

Supprimer

Stratégies de déploiement

Blue/green

Canary