Une nouvelle version d'Anthos clusters on AWS (GKE sur AWS) a été publiée le 3 février. Pour en savoir plus, consultez les notes de version.

Créer un cluster d'utilisateur personnalisé

Cet article explique comment personnaliser la configuration d'un cluster d'utilisateur Anthos clusters on AWS (GKE sur AWS).

Voici les raisons de personnaliser un groupe d'utilisateurs :

  • Créer un autre cluster pour un environnement de préproduction ou de test
  • Ajouter des pools de nœuds avec différents types de machines
  • Créer un cluster dans des zones de disponibilité AWS spécifiques

Avant de commencer

Avant de commencer à utiliser Anthos clusters on AWS, assurez-vous d'avoir effectué les tâches suivantes :

  • Installez un service de gestion.

  • Si vous souhaitez créer un cluster sans utiliser terraform output example_cluster, disposez de sous-réseaux AWS privés pour votre plan de contrôle. Chaque sous-réseau doit appartenir à une zone de disponibilité différente dans la même région AWS. Les tables de routage doivent être configurées de façon à autoriser le trafic entre des sous-réseaux privés, et chaque sous-réseau doit avoir accès à une passerelle NAT.

  • Vous devez disposez de votre ID de cloud privé virtuel (VPC) AWS. Un ID de VPC ressemble à vpc-012345678abcde. Cet ID figure dans la console AWS.

Pour vous connecter à vos ressources Anthos clusters on AWS, procédez comme suit : 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é, Anthos clusters on 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 de votre configuration Anthos clusters on 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 HTTP_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    La sortie inclut l'URL du serveur d'API du service de gestion.

Sélectionner une taille d'instance de plan de contrôle

Anthos clusters on AWS n'accepte pas le redimensionnement des instances de plan de contrôle. Avant de créer votre cluster d'utilisateur, sélectionnez la taille d'instance de vos plans de contrôle. La taille du plan de contrôle dépend du nombre de nœuds du cluster. Le tableau suivant contient les tailles d'instance de plan de contrôle recommandées pour différentes tailles de cluster.

Taille du cluster (nœuds) Type d'instance de plan de contrôle
1 – 10 m5.large
11 – 100 m5.xlarge
101 – 200 m5.2xlarge

Créer un cluster avec une configuration personnalisée

Vous pouvez utiliser terraform output example_cluster afin de créer une configuration pour un cluster d'utilisateur par cluster de gestion. Si vous souhaitez créer des clusters supplémentaires, vous devez appliquer une configuration personnalisée.

Dans cet exemple, vous créez un cluster manuellement à partir des objets CRD AWSCluster et AWSNodePool.

  1. Accédez au répertoire de votre configuration Anthos clusters on AWS. Vous avez créé ce répertoire lors de l'installation du service de gestion.

    cd anthos-aws

  2. À 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

  3. Ouvrez un éditeur de texte et copiez la définition AWSCluster suivante dans un fichier nommé staging-cluster.yaml.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      region: AWS_REGION
      networking:
        vpcID: VPC_ID
        podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS
        serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS
        ServiceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS
      controlPlane:
        version: GKE_VERSION # Latest version is 1.18.10-gke.900
        instanceType: AWS_INSTANCE_TYPE
        keyName: SSH_KEY_NAME
        subnetIDs:
        - CONTROL_PLANE_SUBNET_IDS
        securityGroupIDs:
        - CONTROL_PLANE_SECURITY_GROUPS
        iamInstanceProfile: CONTROL_PLANE_IAM_ROLE
        rootVolume:
          sizeGiB: ROOT_VOLUME_SIZE
        etcd:
          mainVolume.sizeGIB: ETCD_VOLUME_SIZE
        databaseEncryption:
          kmsKeyARN: ARN_OF_KMS_KEY
        hub: # Optional
          membershipName: ANTHOS_CONNECT_NAME
        workloadIdentity: # Optional
          oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
    

    Remplacez l'élément suivant :

    • CLUSTER_NAME : nom du cluster
    • AWS_REGION : région AWS dans laquelle le cluster s'exécute.

    • VPC_ID : ID du VPC dans lequel votre cluster s'exécute.

    • POD_ADDRESS_CIDR_BLOCKS : plage CIDR d'adresses IPv4 utilisées par les pods du cluster. . La plage doit être comprise dans la plage d'adresses CIDR de votre VPC, et non dans un sous-réseau. Exemple : 10.2.0.0/16.

    • SERVICE_ADDRESS_CIDR_BLOCKS : plage d'adresses IPv4 utilisée par les services du cluster. . La plage doit être comprise dans la plage d'adresses CIDR de votre VPC, et non dans un sous-réseau. Exemple : 10.1.0.0/16.

    • SERVICE_LOAD_BALANCER_SUBNETS : ID des sous-réseaux sur lesquels Anthos clusters on AWS peut créer des équilibreurs de charge publics ou privés.

    • GKE_VERSION : version de Kubernetes compatible avec Anthos clusters on AWS. La version la plus récente est 1.18.10-gke.900.

    • AWS_INSTANCE_TYPE : type d'instance EC2 compatible.

    • SSH_KEY_NAME : paire de clé AWS EC2.

    • CONTROL_PLANE_SUBNET_IDS : ID de sous-réseau dans les zones de disponibilité où vos instances de plan de contrôle sont exécutées.

    • CONTROL_PLANE_SECURITY_GROUPS : ID de groupe de sécurité créé lors de l'installation du service de gestion. Vous pouvez personnaliser ce paramètre en ajoutant tous les identifiants de groupe de sécurité requis pour la connexion au plan de contrôle.

    • CONTROL_PLANE_IAM_PROFILE : nom du profil d'instance AWS EC2 attribué aux instances dupliquées du plan de contrôle.

    • ROOT_VOLUME_SIZE : taille, en gibioctet (Gio) des volumes racines de votre plan de contrôle.

    • ETCD_VOLUME_SIZE : taille de vos volumes utilisés par etcd.

    • ARN_OF_KMS_KEY : clé AWS KMS utilisée pour chiffrer les secrets du cluster.

    • ANTHOS_CONNECT_NAME : nom d'appartenance Connect utilisé pour enregistrer votre cluster. Le nom de l'appartenance doit être unique. Par exemple, projects/YOUR_PROJECT/locations/global/memberships/CLUSTER-_AME, où YOUR_PROJECT est votre projet Google Cloud et CLUSTER-NAME est un nom unique dans votre projet. Ce champ est facultatif.

    • WORKLOAD_IDENTITY_BUCKET : nom du bucket Cloud Storage contenant vos informations de découverte Workload Identity. Ce champ est facultatif.

  4. Créez un ou plusieurs pools AWSNodePools pour votre cluster. Ouvrez un éditeur de texte et copiez la définition AWSCluster suivante dans un fichier nommé staging-nodepools.yaml.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    metadata:
      name: NODE_POOL_NAME
    spec:
      clusterName: AWSCLUSTER_NAME
      version: GKE_VERSION # latest version is 1.18.10-gke.900
      region: AWS_REGION
      subnetID: AWS_SUBNET_ID
      minNodeCount: MINIMUM_NODE_COUNT
      maxNodeCount: MAXIMUM_NODE_COUNT
      maxPodsPerNode: MAXIMUM_PODS_PER_NODE_COUNT
      instanceType: AWS_NODE_TYPE
      keyName: KMS_KEY_PAIR_NAME
      iamInstanceProfile: NODE_IAM_PROFILE
      rootVolume:
        sizeGiB: ROOT_VOLUME_SIZE
    

    Remplacez l'élément suivant :

    • NODE_POOL_NAME : un nom unique pour votre pool AWSNodePool ;
    • AWSCLUSTER_NAME : nom du cluster AWSCluster. Exemple : staging-cluster.
    • GKE_VERSION : version de GKE compatible avec Anthos clusters on AWS.
    • AWS_REGION : même région AWS que votre AWSCluster.
    • AWS_SUBNET_ID : sous-réseau AWS situé dans la même région que votre cluster AWS. MINIMUM_NODE_COUNT et MAXIMUM_NODE_COUNT avec le nombre minimal et maximal de nœuds dans le pool de nœuds.
    • MINIMUM_NODE_COUNT : nombre minimal de nœuds dans le pool de nœuds. Pour en savoir plus, consultez la page Procéder au scaling des clusters d'utilisateur.
    • MAXIMUM_NODE_COUNT : nombre maximal de nœuds dans le pool de nœuds.
    • MAXIMUM_PODS_PER_NODE_COUNT : nombre maximal de pods qu'Anthos clusters on AWS peut allouer à un nœud.
    • AWS_NODE_TYPE : un type d'instance AWS EC2.
    • KMS_KEY_PAIR_NAME : Paire de clés KMS AWS attribuée à chaque nœud de calcul de pool de nœuds.
    • NODE_IAM_PROFILE : Nom du profil d'instance AWS EC2 attribué aux nœuds du pool.
    • ROOT_VOLUME_SIZE : taille, en gibioctet (Gio) des volumes racines de votre plan de contrôle.

Créer un fichier kubeconfig

Pendant le démarrage de votre cluster d'utilisateur, vous pouvez créer un contexte kubeconfig pour votre nouveau cluster d'utilisateur. Vous utilisez ce contexte pour vous authentifier auprès d'un utilisateur ou d'un cluster de gestion.

  1. Utilisez anthos-gke aws clusters get-credentials pour générer un objet kubeconfig pour votre cluster d'utilisateur dans ~/.kube/config.

    env HTTP_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    

    Remplacez CLUSTER_NAME par le nom de votre cluster. Exemple : cluster-0.

  2. Utilisez kubectl pour vous authentifier auprès de votre nouveau cluster d'utilisateur.

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

    Si votre cluster est prêt, le résultat inclut les URL des composants Kubernetes qu'il contient.

Afficher l'état de votre cluster

Le service de gestion provisionne les ressources AWS lorsque vous appliquez un élément AWSCluster ou AWSNodePool.

  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. Pour répertorier vos clusters, utilisez kubectl get AWSClusters.

    env HTTP_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 n'inclut qu'un seul AWSCluster nommé cluster-0 :

NAME        STATE          AGE     VERSION         ENDPOINT
cluster-0   Provisioning   2m41s   1.18.10-gke.900   gke-xyz.elb.us-east-1.amazonaws.com

Afficher les événements de votre cluster

Pour afficher les événements Kubernetes récents de votre cluster d'utilisateur, utilisez kubectl get events.

  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. Exécutez kubectl get events.

    env HTTP_PROXY=http://localhost:8118 \
      kubectl get events
    

Le résultat inclut des informations, des avertissements et des erreurs liés à votre service de gestion.

Nettoyer

Pour supprimer un cluster d'utilisateur, 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. Utilisez kubectl delete pour supprimer vos AWSNodePools et AWSClusters de votre service de gestion.

    env HTTP_PROXY=http://localhost:8118 \
      kubectl delete AWSNodePool --all
    env HTTP_PROXY=http://localhost:8118 \
      kubectl delete AWSCluster --all
    

Pour en savoir plus, consultez la page Désinstaller Anthos clusters on AWS.

Étape suivante