Intégrer à l'infrastructure existante

Dans cette rubrique, vous configurez un cloud privé virtuel (VPC) AWS avec des sous-réseaux publics et privés, puis exécutez anthos-gke pour terminer l'installation d'un service de gestion.

Avant de commencer

Pour effectuer les tâches suivantes, vous devez disposer de plusieurs éléments :

  • Les autorisations IAM pour AWS, comme décrit dans la section Exigences

  • Un VPC AWS existant avec les propriétés suivantes :

    • Au moins un sous-réseau public
    • Au moins un sous-réseau privé
    • Une passerelle Internet dotée d'une route vers le sous-réseau public
    • Une passerelle NAT dotée d'une route vers le sous-réseau privé
    • Des noms d'hôte DNS activés
    • Aucune valeur personnalisée de domain-name n'est définie dans vos ensembles d'options DHCP. Pour en savoir plus, consultez la section Dépannage. Les clusters Anthos sur AWS n'acceptent pas les valeurs autres que les noms de domaine EC2 par défaut.

    Pour plus d'informations sur la configuration du VPC AWS, consultez la page VPC avec des sous-réseaux publics et privés.

  • Les ID de sous-réseau public et privé de votre VPC existant Par exemple, subnet-1234567890abcdefg.

  • Pour les versions de cluster 1.20 ou antérieures, un groupe de sécurité AWS qui autorise les connexions SSH (port 22) entrantes à partir des groupes de sécurité ou des plages d'adresses IP que vous utiliserez pour gérer vos clusters Anthos lors de l'installation d'AWS.

  • Pour les versions de cluster 1.21 ou ultérieures, un groupe de sécurité AWS qui autorise les connexions Konnectivity (port 8132) sortantes des plages d'adresses IP VPC contenant vos pools de nœuds Anthos clusters on AWS.

Créer l'espace de travail

  1. Créez un fichier nommé anthos-gke.yaml dans un éditeur de texte. Collez le contenu suivant dans le fichier.

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: aws-1.14.1-gke.0
       region: AWS_REGION
       authentication:
         awsIAM:
           adminIdentityARNs:
           - ADMIN_AWS_IAM_ARN
       kmsKeyARN: KMS_KEY_ARN
       databaseEncryption:
         kmsKeyARN: DATABASE_KMS_KEY_ARN
       securityGroupIDs:
       - SECURITY_GROUP_IDS
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       existingVPC:
         subnetID: VPC_SUBNET_ID
         allowedSSHSecurityGroupIDs:
         - SSH_SECURITY_GROUP
       # Optional fields
       rootVolume:
         sizeGiB: ROOT_VOLUME_SIZE
         volumeType: ROOT_VOLUME_TYPE
         iops: ROOT_VOLUME_IOPS
         kmsKeyARN: ROOT_VOLUME_KEY
       bastionHost:
         subnetID: BASTION_HOST_SUBNET_ID
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
         rootVolume: # Optional
           kmsKeyARN: BASTION_VOLUME_KEY
       proxy: PROXY_JSON_FILE
    

    Remplacez les valeurs suivantes :

    • AWS_REGION par la région AWS dans laquelle exécuter votre cluster.
    • ADMIN_AWS_IAM_ARN par le nom de ressource Amazon de la clé IAM AWS d'administrateur.
    • KMS_KEY_ARN par le nom de ressource Amazon de la clé AWS KMS qui sécurise les données de votre service de gestion lors de sa création.
    • DATABASE_KMS_KEY_ARN par le nom de ressource Amazon de la clé AWS KMS qui sécurise vos bases de données etcd.
    • SECURITY_GROUP_IDS par les ID des groupes de sécurité supplémentaires autorisés à accéder à vos VM de service de gestion.
    • GCP_PROJECT_ID avec le projet Google Cloud qui héberge votre environnement Anthos.
    • MANAGEMENT_KEY_PATH par l'emplacement de la clé de votre compte de service de gestion Google Cloud.
    • HUB_KEY_PATH par l'emplacement de la clé de votre compte de service Google Cloud Connect.
    • NODE_KEY_PATH par l'emplacement de la clé de compte de service de votre noeud de clusters Anthos sur AWS.
    • VPC_SUBNET_ID par l'ID de sous-réseau sur lequel le service de gestion s'exécute.
    • SSH_SECURITY_GROUP par la liste des ID de groupe de sécurité autorisant l'accès SSH dans les instances du service de gestion.

    Facultatif : si vous souhaitez chiffrer vos volumes de service de gestion, remplacez les valeurs suivantes :

    • ROOT_VOLUME_SIZE par la taille du volume en gigaoctets dédié au service de gestion. Par exemple, 10.
    • ROOT_VOLUME_TYPE par le type de volume EBS. Exemple : gp3.
    • ROOT_VOLUME_IOPS par le nombre d'opérations d'E/S par seconde (IOPS) provisionné pour le volume. Valable uniquement lorsque la valeur de volumeType est GP3. Pour plus d'informations, consultez la section Volumes SSD à usage général (gp3).
    • ROOT_VOLUME_KEY par le nom de ressource Amazon de la clé KMS AWS qui chiffre les volumes racines des instances de votre service de gestion. Pour plus d'informations, consultez la page Utiliser des clés gérées par le client (CMK) pour chiffrer des volumes.

    Facultatif : Si vous souhaitez créer un hôte bastion pour accéder à votre environnement de clusters Anthos sur AWS par un tunnel SSH, remplacez les valeurs suivantes :

    • BASTION_HOST_SUBNET_ID par l'ID de sous-réseau où l'hôte bastion s'exécute. Assurez-vous que VPC_SUBNET_ID autorise les connexions entrantes en provenance de BASTION_HOST_SUBNET_ID.
    • SSH_CIDR_BLOCK avec le bloc CIDR dont votre hôte bastion autorise la connexion SSH entrante. Exemple : 203.0.113.0/24. Si vous souhaitez autoriser les connexions SSH depuis n'importe quelle adresse IP, utilisez 0.0.0.0/0.
    • BASTION_VOLUME_KEY par le nom de ressource Amazon de la clé KMS AWS qui sécurise votre volume racine bastion.

    Facultatif : si vous souhaitez diriger le trafic direct via un proxy HTTP, remplacez la valeur suivante :

  2. Exécutez anthos-gke aws management init pour créer des fichiers de configuration :

    anthos-gke aws management init
    
  3. Exécutez anthos-gke aws management apply pour créer le cluster.

    anthos-gke aws management apply
    

    L'exécution de la commande anthos-gke aws management apply peut prendre jusqu'à dix minutes. Une fois l'opération anthos-gke terminée, votre service de gestion s'exécute sur AWS.

Ajouter un tag correspondant au nom de votre cluster à vos sous-réseaux

Si vous utilisez des sous-réseaux AWS existants avec des clusters Anthos sur AWS et que vous souhaitez créer des équilibreurs de charge, vous devez ajouter un tag au VPC et aux sous-réseaux portant le nom de votre service de gestion. Si vous avez créé votre VPC avec anthos-gke ou si vous avez déjà ajouté le tag à vos sous-réseaux, ignorez cette étape.

Pour ajouter des tags à vos sous-réseaux, procédez comme suit :

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

    cd anthos-aws

  2. Exportez votre ID de cluster en tant que variable d'environnement $CLUSTER-ID. Choisissez votre version de Terraform, puis exécutez les commandes suivantes :

    Terraform 0.12, 0.13

    export CLUSTER_ID=$(terraform output cluster_id)
    

    Terraform 0.14.3 et ultérieur

    export CLUSTER_ID=$(terraform output -raw cluster_id)
    
  3. Exportez votre ID de VPC AWS en tant que variable d'environnement $VPC_ID. Choisissez votre version de Terraform, puis exécutez les commandes suivantes :

    Terraform 0.12, 0.13

    export VPC_ID=$(terraform output vpc_id)
    

    Terraform 0.14.3 et ultérieur

    export VPC_ID=$(terraform output -raw vpc_id)
    
  4. Obtenez vos ID de sous-réseau privés à l'aide de l'outil d'interface de ligne de commande aws.

      aws ec2 describe-subnets \
          --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
          --query "Subnets[*].SubnetId" \
          --output text
    
  5. Ajoutez un tag correspondant à votre ID de cluster à vos sous-réseaux. Exécutez la commande suivante pour chacun de vos sous-réseaux :

      aws ec2 create-tags \
          --resources SUBNET_IDS \
          --tags Key=gke:multicloud:cluster-id,Value=$CLUSTER_ID
    

    Remplacez SUBNET_IDS par la liste de vos ID de sous-réseau, séparés par des espaces. Par exemple, subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef.

Se connecter au service de gestion

Dans cette section, vous allez établir une connexion à votre service de gestion. Vous pouvez tunneliser vos commandes via un hôte bastion. Si vous êtes connecté directement à votre VPC AWS, passez à l'étape Générer des identifiants et se connecter.

Se connecter avec un hôte bastion

Si vous utilisez un hôte bastion pour configurer le tunnel SSH, commencez par configurer l'hôte dans votre anthos-gke.yaml. Ensuite, créez un script pour ouvrir le tunnel en procédant comme suit :

  1. Utilisez terraform pour générer un script qui ouvre un tunnel SSH vers l'hôte bastion.

    terraform output bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform crée le script bastion-tunnel.sh qui utilise la clé SSH de l'hôte bastion (~/.ssh/anthos-gke).

  2. Pour ouvrir le tunnel, exécutez le script bastion-tunnel.sh. Le tunnel passe de localhost:8118 à l'hôte bastion.

    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. Accédez au répertoire de votre configuration Anthos clusters sur AWS.

    cd anthos-aws

Générer des identifiants et se connecter

La documentation des clusters Anthos sur AWS suppose que vous utilisez un tunnel SSH sur le port localhost 8118 pour accéder à votre cluster. Si vous utilisez un autre type de connexion à votre VPC, tel qu'une interconnexion directe, un VPN ou une autre méthode, vous pouvez supprimer la ligne env HTTP_PROXY=http://localhost:8118 des commandes.

  1. Générez un fichier kubeconfig pour l'authentification. Utilisez anthos-gke pour ajouter des identifiants à votre configuration stockée dans ~/.kube/config.

    anthos-gke aws management get-credentials
    
  2. Vérifiez que vous êtes en mesure de vous connecter au service de gestion à l'aide de kubectl.

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

    kubectl affiche l'état du cluster.

Étapes suivantes