Mettre à niveau GKE sur AWS

Pour mettre à niveau votre environnement GKE sur AWS, mettez à niveau votre service de gestion, puis vos clusters d'utilisateur.

Service de gestion

Dans les sections suivantes, vous allez mettre à niveau votre service de gestion.

Avant de commencer

Pour vous connecter à vos ressources GKE sur AWS, suivez les instructions suivantes. Indiquez si vous disposez d'un VPC AWS (ou d'une connexion directe à votre VPC) ou si vous avez créé un VPC dédié lors de la création de votre service de gestion.

VPC existant

Si vous disposez d'une connexion directe ou VPN à un VPC existant, omettez la ligne env HTTP_PROXY=http://localhost:8118 des commandes de cette rubrique.

VPC dédié

Lorsque vous créez un service de gestion dans un VPC dédié, GKE sur AWS inclut un hôte bastion placé dans un sous-réseau public.

Pour vous connecter à votre service de gestion, procédez comme suit :

  1. Accédez au répertoire contenant votre configuration GKE sur AWS. Vous avez créé ce répertoire lors de l'installation du service de gestion.

    cd anthos-aws

  2. Pour ouvrir le tunnel, exécutez le script bastion-tunnel.sh. Le tunnel est transféré vers localhost:8118.

    Pour ouvrir un tunnel vers l'hôte bastion, exécutez la commande suivante :

    ./bastion-tunnel.sh -N
    

    Les messages en provenance du tunnel SSH s'affichent dans cette fenêtre. Lorsque vous êtes prêt à fermer la connexion, arrêtez le processus à l'aide du raccourci Ctrl+C ou en fermant la fenêtre.

  3. Ouvrez un nouveau terminal et accédez au répertoire anthos-aws.

    cd anthos-aws
  4. Vérifiez que vous êtes en mesure de vous connecter au cluster à l'aide de kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    Le résultat inclut l'URL du serveur d'API du service de gestion.

Mettre à niveau votre service de gestion

Pour mettre à niveau votre service de gestion, téléchargez une nouvelle version de anthos-gke, modifiez votre fichier anthos-gke.yaml, puis appliquez ces modifications.

Télécharger une nouvelle version d'anthos-gke

La dernière version de l'outil anthos-gke est aws-1.14.1-gke.0. Pour télécharger une nouvelle version de anthos-gke, procédez comme suit :

L'outil de ligne de commande anthos-gke n'est compatible qu'avec Linux et macOS.

  1. Téléchargez le binaire depuis Cloud Storage.

    Linux

    gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/linux/amd64/anthos-gke .
    

    macOS

    gsutil cp gs://gke-multi-cloud-release/aws/aws-1.14.1-gke.0/bin/darwin/amd64/anthos-gke .
    
  2. Mettez à jour les autorisations du fichier anthos-gke et copiez-le dans /usr/local/bin.

    chmod 755 anthos-gke
    sudo mv anthos-gke /usr/local/bin
    
  3. Confirmez que la version est aws-1.14.1-gke.0.

    anthos-gke version
    

Mettre à niveau votre service de gestion

Pour mettre à niveau votre cluster, procédez comme suit :

  1. Accédez au répertoire contenant votre configuration GKE sur AWS. Vous avez créé ce répertoire lors de l'installation du service de gestion.
    cd anthos-aws
  2. Ouvrez votre fichier anthos-gke.yaml dans un éditeur de texte. Remplacez la valeur de spec.version par aws-1.14.1-gke.0.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
     name: management
    spec:
     version: aws-1.14.1-gke.0
     region: aws-region
     ...
    
  3. Exécutez anthos-gke aws management init pour valider l'objet AWSManagementService et mettre à jour le fichier anthos-gke.status.yaml.

    anthos-gke aws management init
    
  4. Exécutez anthos-gke aws management apply pour mettre à jour le service de gestion sur AWS.

    anthos-gke aws management apply
    

    La commande anthos-gke débute la mise à niveau du service de gestion. La mise à niveau peut prendre jusqu'à dix minutes.

Clusters d'utilisateur

Dans les sections suivantes, vous allez mettre à niveau vos clusters d'utilisateur.

Avant de commencer

Pour réaliser les étapes ci-dessous, vous devez disposer d'un service de gestion et d'au moins un cluster d'utilisateur.

Versions de Kubernetes compatibles

GKE sur AWS aws-1.14.1-gke.0 est compatible avec les versions de Kubernetes suivantes :

  • 1.23.15-gke.2000
  • 1.24.9-gke.2100
  • 1.25.5-gke.2100

Pour en savoir plus sur les versions antérieures compatibles, consultez la page Notes de version.

Mises à niveau des composants

Cette section explique comment mettre à niveau les composants AWSClusters et AWSPools.

AWSCluster

Vous pouvez mettre à jour un AWSCluster vers une nouvelle version de GKE sur AWS sans mettre à jour vos AWSNodePools.

AWSNodePools

Vous ne pouvez pas mettre à jour un AWSNodePool vers une version plus récente que l'AWSCluster. Pour mettre à jour les AWSNodePools, vous devez d'abord mettre à jour l'AWSCluster.

La version des AWSNodePools ne doit pas être antérieure de plus de deux versions mineures à la version du AWSCluster.

Mettre à niveau un AWSCluster et un AWSNodePool existants

Pour mettre à niveau votre cluster, mettez à jour le champ version des objets AWSCluster et AWSNodePool dans votre service de gestion.

AWSCluster

Pour mettre à niveau un AWSCluster, procédez comme suit :

  1. À partir de votre répertoire anthos-aws, utilisez anthos-gke pour basculer vers le contexte de votre service de gestion.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. Dans un éditeur de texte, ouvrez le fichier YAML dans lequel vous avez créé votre AWSCluster. Si vous ne disposez pas de votre fichier YAML initial, vous pouvez utiliser kubectl edit.

    Modifier le fichier YAML

    Si vous avez suivi les instructions de la section Créer un cluster d'utilisateur, votre fichier YAML s'appelle cluster-0.yaml. Ouvrez ce fichier dans un éditeur de texte.

    Utiliser kubectl edit

    Pour modifier votre AWSCluster à l'aide de kubectl edit, exécutez la commande suivante :

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-name
    

    Remplacez cluster-name par votre AWSCluster. Par exemple, pour modifier le cluster par défaut, cluster-0, exécutez la commande suivante :

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-0
    
  3. Mettez à jour le champ spec.controlPlane.version vers une nouvelle version de GKE sur AWS. La version la plus récente est 1.25.5-gke.2100.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    metadata:
      name: cluster-0
    spec:
      region: us-east-1
      controlPlane:
        version: gke_version
        instanceType: t3.medium
      ...
    

    Remplacez gke-version par la version de Kubernetes de votre choix. La version compatible de Kubernetes la plus récente est la version 1.25.5-gke.2100.

  4. Enregistrez le fichier. Si vous utilisez kubectl edit, kubectl applique automatiquement les modifications. Si vous modifiez le fichier YAML, appliquez-le à votre service de gestion à l'aide de la commande suivante :

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl apply -f cluster-0.yaml
    

    Le service de gestion met ensuite à jour l'AWSCluster.

AWSNodePool

Pour mettre à niveau un AWSNodePool, procédez comme suit :

  1. À partir de votre répertoire anthos-aws, utilisez anthos-gke pour basculer vers le contexte de votre service de gestion.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. Dans un éditeur de texte, ouvrez le fichier YAML dans lequel vous avez créé votre AWSNodePool. Si vous avez suivi les instructions de la section Créer un cluster d'utilisateur, ce fichier est nommé cluster-0.yaml.

  3. Mettez à jour la valeur de spec.version dans vos ressources AWSNodePool.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    metadata:
      name: cluster-0-pool-0
    spec:
      clusterName: cluster-0
      region: us-east-1
      version: gke-version
      ...
    

    Remplacez gke-version par la version de Kubernetes de votre choix. La version compatible de Kubernetes la plus récente est la version 1.25.5-gke.2100.

  4. Appliquez la nouvelle configuration à votre service de gestion à l'aide de kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    

    Le service de gestion met ensuite à jour votre AWSNodePool un nœud à la fois. Avant l'arrêt d'un nœud, les pods s'exécutant sur ce nœud reçoivent un signal SIGTERM. Si un pod ne s'arrête pas après un délai de grâce, il reçoit un signal SIGKILL.

Afficher l'état

Pour obtenir l'état d'une mise à niveau, exécutez kubectl get AWSClusters sur votre service de gestion.

env HTTPS_PROXY=http://localhost:8118 \
    kubectl get AWSClusters

Le résultat inclut le nom, l'état, l'âge, la version et le point de terminaison de chaque cluster. Par exemple, le résultat suivant inclut un AWSCluster nommé cluster-0.

NAME        STATE          AGE     VERSION         ENDPOINT
cluster-0   Upgrading   2m41s      1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com

La mise à niveau de votre cluster d'utilisateur est terminée lorsque l'état STATE de vos clusters est Provisioned (provisionné).