Installer le service de gestion

Un service de gestion permet de créer, mettre à jour et supprimer des clusters GKE sur AWS. Cet article explique comment créer un service de gestion dans un cloud privé virtuel (VPC) AWS dédié. Si vous disposez déjà d'un VPC, consultez plutôt la section Intégrer à l'infrastructure existante.

Avant de commencer

Avant de commencer à utiliser GKE sur AWS, veillez à effectuer les tâches suivantes :

  • Remplissez les conditions préalables.
  • Authentifiez-vous avec Google Cloud CLI.
    gcloud auth login && \
        gcloud auth application-default login

Valeurs dont vous avez besoin

Pour suivre cet article, vous devez disposer des éléments suivants parmi les prérequis :

  • ARN (Amazon Resource Name) ou alias de clé du service de gestion des clés
  • Clés de compte de service Google Cloud
  • Projet Google Cloud
  • Outils de ligne de commande aws, terraform et anthos-gke installés et configurés.
  • Région AWS et zones de disponibilité dans lesquelles GKE sur AWS crée votre cluster de gestion.

Configurer votre service de gestion

Configurez votre service de gestion GKE sur AWS avec un fichier YAML. Le fichier ressemble à une configuration de ressource personnalisée Kubernetes, mais il ne représente pas une ressource.

  1. Ouvrez un terminal sur l'ordinateur sur lequel vous avez installé et configuré les outils de ligne de commande aws, terraform et anthos-gke.

  2. Créez un répertoire vide pour votre configuration GKE sur AWS et accédez à ce répertoire. La documentation de GKE sur AWS utilise anthos-aws comme répertoire de configuration.

    mkdir anthos-aws
    cd anthos-aws
    
  3. 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
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       dedicatedVPC:
         vpcCIDRBlock: VPC_CIDR_BLOCK
         availabilityZones:
         - ZONE_1
         - ZONE_2
         - ZONE_3
         privateSubnetCIDRBlocks:
         - PRIVATE_CIDR_BLOCK_1
         - PRIVATE_CIDR_BLOCK_2
         - PRIVATE_CIDR_BLOCK_3
         publicSubnetCIDRBlocks:
         - PUBLIC_CIDR_BLOCK_1
         - PUBLIC_CIDR_BLOCK_2
         - PUBLIC_CIDR_BLOCK_3
       # Optional
       bastionHost:
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
       proxy: PROXY_JSON_FILE # optional
    

    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 (ARN) de l'utilisateur disposant des autorisations AWS IAM pour créer un service de gestion. Pour obtenir l'ARN de l'utilisateur authentifié auprès de l'outil aws, exécutez aws sts get-caller-identity.

    • KMS_KEY_ARN par le nom de ressource Amazon de la clé KMS AWS ou de l'alias de la clé KMS qui sécurise les données de votre service de gestion lors de la création. Par exemple, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab. Si vous ne disposez pas de l'ARN, exécutez aws kms list-keys pour récupérer une liste d'ARN.

    • DATABASE_KMS_KEY_ARN par le nom de ressource Amazon de la clé KMS AWS ou de l'alias de la clé qui sécurise les bases de données etcd de votre service de gestion, par exemple, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    • GCP_PROJECT_ID par l'ID du projet Google Cloud qui héberge votre environnement GKE Enterprise.

    • MANAGEMENT_KEY_PATH par l'emplacement de votre clé de 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 nœud GKE sur AWS.

    • VPC_CIDR_BLOCK par la plage totale d'adresses IP CIDR pour le VPC AWS créé par anthos-gke. Par exemple, 10.0.0.0/16. Pour en savoir plus, consultez la page Principes de base des réseaux VPC dans la documentatisur AWS.

    • ZONE_1, ZONE_2 et ZONE_3 par les zones de disponibilité AWS EC2 dans lesquelles vous souhaitez créer des nœuds et des plans de contrôle. GKE sur AWS crée des sous-réseaux dans ces zones. Lorsque vous utilisez anthos-gke pour générer une configuration pour un cluster d'utilisateur, GKE sur AWS crée des plans de contrôle et des pools de nœuds dans ces zones de disponibilité, par exemple, us-east-1a.
      Si vous souhaitez utiliser anthos-gke pour créer des clusters d'utilisateur dans une seule zone, vous pouvez supprimer ZONE_2 et ZONE_3.

    • PRIVATE_CIDR_BLOCK_1, PRIVATE_CIDR_BLOCK_2 et PRIVATE_CIDR_BLOCK_3, par le bloc CIDR de votre sous-réseau privé. Les composants GKE sur AWS tels que le service de gestion s'exécutent dans le sous-réseau privé. Ce sous-réseau doit se trouver dans la plage CIDR du VPC spécifiée dans vpcCIDRBlock. Vous avez besoin d'un sous-réseau pour chaque zone de disponibilité. Par exemple : 10.0.1.0/24.

    • PUBLIC_CIDR_BLOCK_1, PUBLIC_CIDR_BLOCK_2 et PUBLIC_CIDR_BLOCK_3 par les blocs CIDR de votre sous-réseau public. Vous avez besoin d'un sous-réseau pour chaque zone de disponibilité. Le sous-réseau public expose des services de cluster, tels que des équilibreurs de charge, aux groupes de sécurité et aux plages d'adresses spécifiés dans les LCA de réseau et les groupes de sécurité, par exemple, 10.0.100.0/24.

    • SSH_CIDR_BLOCK par le bloc CIDR qui autorise l'accès SSH entrant à votre hôte bastion, par 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.

    • (Facultatif) PROXY_JSON_FILE par le chemin relatif du fichier de configuration du proxy. Si vous n'utilisez pas de proxy, supprimez cette ligne.

  4. Exécutez anthos-gke aws management init pour générer un fichier anthos-gke.status.yaml avec une configuration supplémentaire. La commande init valide également l'objet AWSManagementService dans votre fichier anthos-gke.yaml.

    anthos-gke aws management init
    
  5. Exécutez anthos-gke aws management apply pour créer le service de gestion sur AWS.

    anthos-gke aws management apply
    

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

Champs facultatifs

Le fichier anthos-gke.yaml ci-dessus montre un ensemble classique de champs dont la plupart des clients auront besoin. La configuration dans anthos-gke.yaml accepte également un certain nombre de champs facultatifs. Exemples :

  • spec.bootstrapS3Bucket afin de spécifier un bucket AWS S3 pour GKE sur AWS.
  • spec.tags pour ajouter des tags aux ressources AWS liées au cluster
  • spec.securityGroupIDs pour attribuer des ID de groupe de sécurité supplémentaires au cluster de gestion
  • spec.*Volume et ses sous-champs volumeType, iops et kmsKeyARN pour ajuster les paramètres de volume EBS
  • spec.terraform.stateGCSBucket pour spécifier un bucket de service Google Cloud pour les données de configuration Terraform

Pour en savoir plus sur tous les champs compatibles avec anthos-gke.yaml, consultez la documentation de référence sur le service de gestion AWS.

Se connecter au service de gestion

Ensuite, utilisez anthos-gke pour vous connecter et vous authentifier auprès de votre service de gestion GKE sur AWS.

Lorsque vous créez un service de gestion à l'aide des paramètres par défaut, le plan de contrôle possède une adresse IP privée qui n'est pas accessible depuis l'extérieur du VPC AWS. Vous pouvez accéder à votre service de gestion de l'une des trois manières suivantes :

  • via le service AWS Direct Connect d'Amazon ;
  • via un hôte bastion qui transfère les connexions entre Internet et vos sous-réseaux AWS GKE ;
  • via un VPN.

Lorsque vous créez un service de gestion dans un VPC dédié, GKE sur AWS crée automatiquement un hôte bastion placé dans un sous-réseau public. Si vous vous connectez à votre service de gestion via un VPN ou AWS Direct Connect, cet hôte bastion n'est pas nécessaire. Sinon, pour vous connecter à votre service de gestion via l'hôte bastion, procédez comme suit :

  1. Utilisez l'outil terraform pour générer le script qui ouvre un tunnel SSH vers l'hôte bastion. Choisissez votre version de Terraform, puis exécutez les commandes suivantes :

    Terraform 0.12, 0.13

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

    Terraform 0.14.3 et ultérieur

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

    Terraform crée le script bastion-tunnel.sh qui référence 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 -4
    

    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 contenant votre configuration GKE sur AWS.

  4. 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
    
  5. 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
    

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

Étapes suivantes