Mettre à jour les charges de travail sans état

Ce document explique comment mettre à jour les charges de travail sans état existantes exécutées dans un cluster Kubernetes Google Distributed Cloud (GDC) sous air gap. À mesure que votre application évolue en fonction de l'utilisation des ressources et des optimisations de configuration, vous devez mettre à jour la spécification de pod sous-jacente dans le cluster Kubernetes pour refléter ces modifications de charge de travail.

Ce document s'adresse aux développeurs du groupe d'opérateurs d'applications, qui sont chargés de mettre à jour les charges de travail des applications pour leur organisation. Pour en savoir plus, consultez Audiences pour la documentation GDC sous air gap.

Avant de commencer

Pour effectuer les tâches décrites dans ce document, vous devez demander les autorisations nécessaires et préparer votre environnement.

Demander des rôles IAM

Vous devez disposer de rôles spécifiques pour obtenir les autorisations nécessaires à la mise à jour des charges de travail sans état. Les rôles dont vous avez besoin dépendent du fait que vous travailliez dans un cluster partagé à l'échelle de l'organisation ou dans un cluster standard à l'échelle du projet. Pour en savoir plus, consultez Configurations de cluster Kubernetes.

Rôles de cluster partagé

Pour créer, supprimer, modifier ou afficher des charges de travail dans un cluster partagé, demandez à votre administrateur IAM de projet de vous accorder le rôle Administrateur d'espace de noms (namespace-admin). Ce rôle est lié à l'espace de noms de votre projet.

Rôles de cluster standard

Pour créer, supprimer, modifier ou afficher des charges de travail dans un cluster standard, demandez à votre administrateur IAM de projet de vous accorder le rôle Développeur de cluster (cluster-developer). Ce rôle est lié à l'espace de noms de votre projet.

Préparer votre environnement

Pour exécuter des commandes sur un cluster Kubernetes à l'aide de l'API, assurez-vous de disposer des ressources suivantes :

  • Recherchez le nom du cluster Kubernetes ou demandez-le à un membre du groupe d'administrateurs de plate-forme.

  • Connectez-vous et générez le fichier kubeconfig pour le cluster Kubernetes.

  • Utilisez le chemin d'accès kubeconfig du cluster Kubernetes pour remplacer KUBERNETES_CLUSTER_KUBECONFIG dans ces instructions.

Mettre à jour le déploiement

Pour mettre à jour un objet Deployment, exécutez la commande suivante :

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    apply -f DEPLOYMENT_FILE

Remplacez les éléments suivants :

  • KUBERNETES_CLUSTER_KUBECONFIG: fichier kubeconfig du cluster exécutant le déploiement.

  • NAMESPACE : espace de noms. Pour les clusters partagés, il doit s'agir d'un espace de noms de projet. Pour les clusters standards, il peut s'agir de n'importe quel espace de noms.

  • DEPLOYMENT_FILE: nom du fichier manifeste Deployment à mettre à jour.

La commande kubectl apply applique un fichier manifeste à une ressource. Si la ressource spécifiée n'existe pas, elle est créée par la commande.

Il existe également plusieurs autres façons de mettre à jour les ressources de votre déploiement.

Mettre à jour une image de conteneur

Pour modifier l'image d'un objet Deployment, exécutez la commande suivante :

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    set image deployment DEPLOYMENT_NAME \
    IMAGE=IMAGE:TAG

Remplacez les éléments suivants :

  • KUBERNETES_CLUSTER_KUBECONFIG: fichier kubeconfig du cluster exécutant le déploiement.

  • NAMESPACE : espace de noms. Pour les clusters partagés, il doit s'agir d'un espace de noms de projet. Pour les clusters standards, il peut s'agir de n'importe quel espace de noms.

  • DEPLOYMENT_NAME: nom de l'objet Deployment contenant l'image.

  • IMAGE : nom de l'image de conteneur.

  • TAG : tag à mettre à jour pour l'image de conteneur.

La mise à jour de l'image d'un déploiement est utile pour modifier les champs de sélecteur ou les ressources, telles que les requêtes ou les limites.

Par exemple, pour mettre à jour un objet Deployment nommé nginx afin d'utiliser la version 1.9.1, exécutez la commande suivante :

kubectl --kubeconfig /tmp/kubeconfig.yaml -n my-namespace \
    set image deployment nginx nginx=nginx:1.9.1

Effectuer un rollback d'une mise à jour

Si vous souhaitez effectuer un rollback d'une mise à jour, par exemple lorsque votre déploiement devient instable, utilisez la CLI kubectl. L'historique de déploiement d'un objet Deployment est conservé dans le système. Vous pouvez donc effectuer un rollback à tout moment.

Pour effectuer un rollback d'une mise à jour en cours ou terminée vers sa révision précédente, exécutez la commande suivante :

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME

Remplacez les éléments suivants :

  • KUBERNETES_CLUSTER_KUBECONFIG: fichier kubeconfig du cluster exécutant le déploiement.

  • NAMESPACE : espace de noms. Pour les clusters partagés, il doit s'agir d'un espace de noms de projet. Pour les clusters standards, il peut s'agir de n'importe quel espace de noms.

  • DEPLOYMENT_NAME: nom de l'objet Deployment à restaurer.

Pour effectuer un rollback vers une révision spécifique, exécutez la commande suivante :

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    rollout undo deployment DEPLOYMENT_NAME \
    --to-revision=REVISION_NUMBER

Remplacez les éléments suivants :

  • KUBERNETES_CLUSTER_KUBECONFIG: fichier kubeconfig du cluster exécutant le déploiement.

  • NAMESPACE : espace de noms. Pour les clusters partagés, il doit s'agir d'un espace de noms de projet. Pour les clusters standards, il peut s'agir de n'importe quel espace de noms.

  • DEPLOYMENT_NAME: nom de l'objet Deployment à restaurer.

  • REVISION_NUMBER: entier qui définit la révision à restaurer, par exemple 3.

Étape suivante