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. GKE sur AWS n'accepte 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 votre installation GKE sur 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 GKE sur AWS.
Création de l'espace de travail…
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 par le projet Google Cloud qui héberge votre environnement GKE Enterprise.
- 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 nœud GKE 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. Exemple :
10
- ROOT_VOLUME_TYPE par le type de volume EBS.
Par 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
estGP3
. 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 GKE sur un environnement AWS avec 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, utilisez0.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 :
- PROXY_JSON_FILE avec 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 créer des fichiers de configuration :anthos-gke aws management init
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érationanthos-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 GKE sur AWS et que vous souhaitez créer des équilibreurs de charge, vous devez ajouter un tag à votre VPC et vos sous-réseaux avec 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 :
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
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)
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)
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
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 :
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
).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
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.
Accédez au répertoire contenant votre configuration GKE sur AWS.
cd anthos-aws
Générer des identifiants et se connecter
La documentation de GKE 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.
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
kubectl
affiche l'état du cluster.
Étape suivante
- 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. - Consultez les groupes de sécurité minimaux requis pour votre service de gestion GKE sur AWS et les clusters d'utilisateur.