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
etanthos-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.
Ouvrez un terminal sur l'ordinateur sur lequel vous avez installé et configuré les outils de ligne de commande
aws
,terraform
etanthos-gke
.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
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écutezaws 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écutezaws 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 utiliseranthos-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, utilisez0.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.
Exécutez
anthos-gke aws management init
pour générer un fichieranthos-gke.status.yaml
avec une configuration supplémentaire. La commandeinit
valide également l'objetAWSManagementService
dans votre fichieranthos-gke.yaml
.anthos-gke aws management init
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 :
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
.Pour ouvrir le tunnel, exécutez le script
bastion-tunnel.sh
. Le tunnel passe delocalhost: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.
Ouvrez un nouveau terminal et accédez au répertoire contenant votre configuration GKE sur AWS.
Générez un fichier
kubeconfig
pour l'authentification. Utilisezanthos-gke
pour ajouter des identifiants à votre configuration stockée dans~/.kube/config
.anthos-gke aws management get-credentials
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
- Créez un cluster d'utilisateur.
- Utilisez un proxy avec GKE sur AWS.
- Modifiez votre configuration
kubectl
afin de réduire le nombre d'options de ligne de commande utilisées pour vous connecter à GKE sur AWS.