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) exécutant la version 1.16.10-gke.8 ou une version ultérieure.

Présentation

Vous pouvez effectuer une rotation d'adresse IP afin de modifier l'adresse IP utilisée par votre plan de contrôle pour répondre aux requêtes de l'API Kubernetes. L'adresse IP du plan de contrôle est statique et ne change pas, sauf si vous effectuez une rotation d'adresse IP.

La rotation des adresses IP entraîne la modification du certificat SSL et de l'autorité de certification du cluster, ce qui limite la possibilité d'associer l'ancienne adresse à la nouvelle.

La rotation des adresses IP se produit également dans le cadre de la rotation des identifiants.

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é gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.

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.
  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 sur l'adresse IP précédente.

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.

  • 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=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 la section Mise en garde à propos des intervalles de maintenance.

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

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 ne se termine pas et renvoie un message d'erreur semblable à celui-ci, consultez la section Dépannage :

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

Étape suivante