Effectuer une rotation de l'adresse IP de votre plan de contrôle

Cette page explique comment effectuer une rotation d'adresses IP pour votre plan de contrôle dans les clusters Google Kubernetes Engine (GKE).

Avant de lire cette page, assurez-vous de connaître la rotation des identifiants. Nous vous recommandons d'effectuer une rotation des identifiants, qui inclut la rotation des adresses IP. Toutefois, vous devrez peut-être effectuer une rotation d'adresse IP autonome si vous ne pouvez pas effectuer une rotation complète des identifiants.

Cette page s'adresse aux spécialistes de la sécurité qui gèrent le cycle de vie des clusters sur GKE. Pour en savoir plus sur les rôles courants et les exemples de tâches que nous citons dans le contenu Google Cloud , consultez Rôles utilisateur et tâches courantes de GKE.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

  • Activez l'API Google Kubernetes Engine.
  • Activer l'API Google Kubernetes Engine
  • Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande gcloud components update. Il est possible que les versions antérieures de gcloud CLI ne permettent pas d'exécuter les commandes de ce document.

Effectuer une rotation des adresses IP

La rotation des adresses IP est un processus en plusieurs étapes :

  1. Lorsque vous lancez une rotation des adresses IP, le plan de contrôle du cluster commence à diffuser le trafic sur la nouvelle adresse IP en plus de l'adresse IP d'origine.
  2. GKE recrée vos pools de nœuds pour utiliser la nouvelle adresse IP, en respectant la disponibilité pour maintenance. Vous pouvez également recréer manuellement vos pools de nœuds en mettant à niveau la version du pool de nœuds vers la même version GKE que celle déjà exécutée par les nœuds.
  3. Après avoir lancé une rotation, vous devez mettre à jour les clients API de votre cluster (tels que les machines de développement utilisant l'interface de ligne de commande kubectl) pour commencer à communiquer avec le plan de contrôle via la nouvelle adresse IP.
  4. Lorsque vous terminez la rotation, le plan de contrôle cesse de diffuser le trafic avec l'adresse IP précédente.

Lorsque vous lancez une rotation des adresses IP, GKE recrée vos nœuds pour vous, en respectant la disponibilité pour maintenance. Lors d'événements majeurs tels queGoogle Cloud  Next, GKE peut suspendre les recréations automatiques des nœuds afin d'éviter toute interruption. Pour en savoir plus sur l'impact de la disponibilité de la maintenance sur la rotation des adresses IP et sur le type d'interruption que subit votre cluster lors des étapes d'une rotation, consultez la ligne concernant la rotation des adresses IP dans le tableau des modifications manuelles qui recréent les nœuds à l'aide d'une stratégie de mise à niveau des nœuds et en respectant les règles de maintenance. GKE dépend de la disponibilité des ressources pour mettre à jour les nœuds. Pour en savoir plus sur les mises à jour des nœuds, consultez Planifier les interruptions liées aux mises à jour des nœuds.

Si vous ne terminez pas la rotation des adresses IP dans les sept jours suivant son lancement, GKE tente de la terminer pour vous. Si des nœuds de votre cluster utilisent encore l'ancienne adresse IP, l'opération de finalisation automatique échoue, mais GKE continue de tenter de la finaliser jusqu'à ce que les nœuds soient recréés et que l'opération puisse être finalisée.

Vous devez planifier le suivi et la finalisation manuels de la rotation des adresses IP après l'avoir démarrée. Vous pouvez toujours remplacer la disponibilité de la maintenance et déclencher manuellement des étapes spécifiques pour vous assurer que la rotation des identifiants peut être effectuée. Ne vous fiez pas à la saisie semi-automatique, qui est une mesure optimale.

Lancer la rotation

  1. Pour lancer une rotation des adresses IP, exécutez la commande suivante :

    gcloud container clusters update CLUSTER_NAME \
        --start-ip-rotation
    

    Remplacez CLUSTER_NAME par le nom du cluster.

    Le résultat ressemble à ce qui suit :

    This will start an IP Rotation on cluster CLUSTER_NAME.
    The master will be updated to serve on a new IP address in addition to
    the current IP address. Google Kubernetes Engine will then schedule recreation of all nodes
    to point to the new IP address.  If maintenance window is
    used, nodes are not recreated until a maintenance window occurs. See
    documentation on how to manually update nodes. This operation is
    long-running and will block other operations on the cluster (including
    delete) until it has run to completion.
    Do you want to continue (Y/n)?
    

    Cette commande configure le plan de contrôle afin qu'il diffuse le trafic sur deux adresses IP (l'adresse d'origine et une nouvelle adresse).

  2. Confirmez la rotation et laissez l'interface système ouverte pour que l'opération puisse se terminer.

Recréer des nœuds

Après avoir reconfiguré le serveur d'API pour diffuser sur une nouvelle adresse IP, GKE met automatiquement vos nœuds à jour afin qu'ils utilisent la nouvelle adresse IP. GKE met tous vos nœuds à niveau vers la version de nœud compatible la plus proche, ce qui recrée les nœuds. Pour en savoir plus, consultez la page Mises à niveau des pools de nœuds.

Par défaut, GKE effectue automatiquement les rotations des adresses IP sept jours après le démarrage de l'opération. Si un intervalle de maintenance actif ou une exclusion dans votre cluster empêche GKE de recréer certains nœuds pendant cette période de sept jours, la rotation des adresses IP échoue initialement. Toutefois, GKE continue d'essayer de recréer les nœuds et de terminer la rotation jusqu'à ce que la disponibilité de la maintenance permette à GKE de poursuivre l'opération.

  • Si vous utilisez des exclusions ou des intervalles de maintenance susceptibles d'entraîner une échec de la rotation, mettez à niveau manuellement votre cluster pour forcer la recréation des nœuds :

    gcloud container clusters upgrade CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --cluster-version=VERSION
    

    Remplacez VERSION par la même version de GKE que celle utilisée par le cluster.

    Pour en savoir plus, consultez Maintenance automatique qui respecte les règles de maintenance GKE.

Vérifier la progression de la recréation du pool de nœuds

  1. Pour surveiller l'opération de rotation, exécutez la commande suivante :

    gcloud container operations list \
        --filter="operationType=UPGRADE_NODES AND status=RUNNING" \
        --format="value(name)"
    

    Cette commande renvoie l'ID d'opération de la mise à niveau des nœuds.

  2. Pour interroger l'opération, transmettez l'ID d'opération à la commande suivante :

    gcloud container operations wait OPERATION_ID
    

Les pools de nœuds sont recréés un par un, et chacun possède sa propre opération. Si vous avez plusieurs pools de nœuds, suivez ces instructions pour interroger chaque opération.

Mettre à jour les clients API

Après avoir lancé la rotation des adresses IP, vous devez mettre à jour tous les clients API en dehors du cluster (tels que kubectl sur les ordinateurs de développement), de sorte qu'ils pointent vers la nouvelle adresse IP.

Pour mettre à jour vos clients API, exécutez la commande suivante pour chaque client :

gcloud container clusters get-credentials CLUSTER_NAME

Mettre à jour les adresses IP codées en dur et les règles de pare-feu

Si vous avez codé en dur l'adresse IP du plan de contrôle dans votre environnement, ou si vous avez des règles de pare-feu qui ciblent l'adresse IP du plan de contrôle, mettez à jour les adresses vers la nouvelle adresse IP. Si vous terminez la rotation sans mettre à jour les adresses IP dans les applications et les règles de pare-feu, ces ressources peuvent subir des interruptions lorsque GKE cesse de diffuser sur l'adresse IP précédente du plan de contrôle.

Achever la rotation

Après avoir mis à jour les clients API en dehors du cluster, terminez la rotation pour configurer le plan de contrôle afin qu'il ne diffuse le trafic que sur la nouvelle adresse IP.

Pour terminer la rotation, exécutez la commande suivante :

gcloud container clusters update CLUSTER_NAME \
    --complete-ip-rotation

Le résultat ressemble à ce qui suit :

This will complete the in-progress IP Rotation on cluster CLUSTER_NAME.
The master will be updated to stop serving on the old IP address and only
serve on the new IP address. Make sure all API clients have been updated
to communicate with the new IP address (e.g. by running `gcloud container
clusters get-credentials --project PROJECT_ID --region COMPUTE_REGION
CLUSTER_NAME`). This operation is long-running and will
block other operations on the cluster (including delete) until it has
run to completion.

Si la rotation des adresses IP échoue et renvoie un message d'erreur semblable à celui-ci, consultez Erreur 400 : le pool de nœuds nécessite la recréation :

ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.

Si vous ne terminez pas la rotation des adresses IP dans les sept jours suivant son lancement, GKE tente de la terminer pour vous. Si des nœuds de votre cluster utilisent encore l'ancienne adresse IP (potentiellement en raison de la disponibilité de la maintenance et des contraintes associées qui empêchent la recréation des nœuds), la finalisation automatique échoue. Toutefois, GKE continue de tenter de finaliser l'opération jusqu'à ce que les nœuds soient recréés.

Étapes suivantes