Cette page fournit des instructions de démarrage rapide pour créer un cluster et un pool de nœuds, puis déployer un exemple d'application à l'aide de GKE sur AWS.
Guide de démarrage rapide pour votre cluster avec Terraform
Vous pouvez utiliser Terraform pour créer un cluster et un pool de nœuds. Avant de créer votre cluster, les scripts Terraform prépare également votre VPC AWS.
Pour en savoir plus sur Terraform dans un environnement AWS, consultez la documentation de référence sur les clusters Terraform et la documentation de référence sur les pools de nœuds Terraform.
Après avoir créé un VPC et un cluster avec Terraform, passez à la section Déployer une application sur le cluster pour déployer un exemple d'application.
Guide de démarrage rapide pour votre cluster sans Terraform
Si vous préférez préparer votre VPC AWS et créer un cluster et un pool de nœuds sans Terraform, suivez ces instructions.
Avant de commencer
Avant de créer un cluster, vous devez remplir les conditions préalables. Vous devez notamment fournir les ressources suivantes :
- Un VPC AWS sur lequel le cluster sera exécuté.
- Jusqu'à trois sous-réseaux AWS pour les trois instances dupliquées du plan de contrôle. Chaque zone doit se trouver dans une zone de disponibilité AWS différente.
- Rôle IAM AWS que GKE sur AWS assume lors de la gestion de votre cluster. Cela nécessite un ensemble spécifique d'autorisations IAM.
- Clés CMK symétriques KMS pour le chiffrement au repos des données de cluster (etcd) et de la configuration.
- Profil d'instance AWS IAM pour chaque instance dupliquée du plan de contrôle. Cela nécessite un ensemble spécifique d'autorisations IAM.
- Une paire de clés SSH EC2 (facultatif) si vous avez besoin d'un accès SSH aux instances EC2 qui exécutent chaque instance dupliquée du plan de contrôle.
Vous êtes responsable de la création et de la gestion de ces ressources, qui peuvent être partagées entre tous vos clusters GKE sur AWS. Toutes les autres ressources AWS sous-jacentes à l'échelle d'un cluster sont gérées par GKE sur AWS.
Configurer les paramètres par défaut de gcloud CLI
Utilisez la CLI gcloud pour configurer les paramètres par défaut de votre projet par défaut et de votre région Google Cloud.
Votre projet est associé à un ID de projet en tant qu'identifiant unique. Au moment de la création d'un projet, vous pouvez utiliser l'ID de projet généré automatiquement ou créer le vôtre.
Votre région Google Cloud est un emplacement à partir duquel vos clusters seront gérés. Par exemple, us-west1
. Pour en savoir plus, consultez la section Régions de gestion.
Lorsque vous configurez ces paramètres par défaut, vous n'avez pas besoin de les inclure lorsque vous exécutez Google Cloud CLI. Vous pouvez également spécifier des paramètres ou ignorer les paramètres par défaut en transmettant les options --project
et --location
à Google Cloud CLI.
Lorsque vous créez des ressources GKE sur AWS après avoir configuré votre projet et votre emplacement par défaut, ces ressources sont automatiquement créées dans ce projet et cet emplacement.
Pour définir des valeurs par défaut, procédez comme suit :
Définissez le projet par défaut :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_ID
par l'ID du projet.Définissez l'emplacement de gestion par défaut :
gcloud config set container_aws/location GOOGLE_CLOUD_LOCATION
Remplacez
GOOGLE_CLOUD_LOCATION
par votre emplacement, par exempleus-west1
.
Sélectionner des plages CIDR pour votre cluster
Kubernetes nécessite deux plages CIDR pour le cluster. Ces plages CIDR doivent être choisies de sorte qu'elles ne chevauchent pas les plages CIDR utilisées par vos sous-réseaux VPC. Elles doivent être suffisamment volumineuses pour la taille maximale attendue de votre cluster.
Plage CIDR d'adresses de pod : lorsqu'une ressource
Pod
est créée, une adresse IP de cette plage lui est attribuée. Exemple : plage 192.168.208.0/20Plage CIDR d'adresses de service : lorsqu'une instance
Service
est créée, une adresse IP de cette plage lui est attribuée. Exemple : plage 192.168.224.0/20
Créer un cluster
Exécutez la commande suivante pour créer un cluster sous GKE sur AWS. Pour en savoir plus sur cette commande, y compris sur ses paramètres facultatifs, consultez la page de référence gcloud container aws create.
gcloud container aws clusters create aws-cluster-0 \
--cluster-version 1.29.3-gke.600 \
--aws-region AWS_REGION \
--fleet-project FLEET_PROJECT_ID \
--vpc-id VPC_ID \
--subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
--pod-address-cidr-blocks POD_CIDR_BLOCK \
--service-address-cidr-blocks SERVICE_CIDR_BLOCK \
--role-arn API_ROLE_ARN \
--iam-instance-profile CONTROL_PLANE_PROFILE \
--database-encryption-kms-key-arn DB_KMS_KEY_ARN \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--tags "google:gkemulticloud:cluster=aws-cluster-0"
Remplacez les éléments suivants :
AWS_REGION
par la région AWS dans laquelle créer le cluster.FLEET_PROJECT_ID
par le projet hôte du parc dans lequel le cluster sera enregistré.VPC_ID
: ID du VPC AWS pour ce cluster que vous avez configuré à l'étape Créer votre VPC.CONTROL_PLANE_SUBNET_1
,CONTROL_PLANE_SUBNET_2
,CONTROL_PLANE_SUBNET_3
: ID de sous-réseau des trois instances de plan de contrôle de votre cluster que vous avez créées lors de l'étape préalable Créer des sous-réseaux privésPOD_CIDR_BLOCK
: plage d'adresses CIDR pour les pods de votre cluster.SERVICE_CIDR_BLOCK
: plage d'adresses CIDR pour les services de votre cluster.API_ROLE_ARN
: ARN du rôle IAM pour le service multicloud GKE que vous avez créé à l'étape préalable Créer un rôle d'API multi-cloud GKECONTROL_PLANE_PROFILE
: nom de profil de l'instance IAM associée au cluster que vous avez choisi à l'étape préalable Créer un rôle de plan de contrôle.DB_KMS_KEY_ARN
: nom de ressource Amazon (ARN) de l'une des clés KMS AWS que vous avez créées à l'étape préalable Créer une clé AWS KMS préalableCONFIG_KMS_KEY_ARN
: nom de ressource Amazon (ARN) de l'autre clé KMS AWS que vous avez créée à l'étape préalable Créer une clé KMS AWS
S'il est présent, le paramètre --tags
applique le tag AWS donné à toutes les ressources AWS sous-jacentes gérées par GKE sur AWS. Cet exemple ajoute un tag aux nœuds de votre plan de contrôle avec le nom du cluster auquel ils appartiennent.
Créer un pool de nœuds
Exécutez la commande suivante pour créer un pool de nœuds :
gcloud container aws node-pools create pool-0 \
--cluster aws-cluster-0 \
--node-version 1.29.3-gke.600 \
--min-nodes 1 \
--max-nodes 5 \
--max-pods-per-node 110 \
--root-volume-size 50 \
--subnet-id NODEPOOL_SUBNET_ID \
--iam-instance-profile NODEPOOL_PROFILE \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--ssh-ec2-key-pair EC2_KEY_PAIR \
--tags "google:gkemulticloud:cluster=aws-cluster-0"
Remplacez les éléments suivants :
NODEPOOL_SUBNET_ID
: ID de l'un des sous-réseaux privés que vous avez créés à l'étape préalable Créer des sous-réseaux privés.NODEPOOL_PROFILE
: nom de profil d'instance IAM pour les instances EC2 du pool de nœuds que vous avez choisi à l'étape préalable Créer un rôle IAM de pool de nœudsCONFIG_KMS_KEY_ARN
: nom ARN (Amazon Resource Name) de la clé KMS AWS servant à chiffrer les données utilisateur.EC2_KEY_PAIR
(facultatif) : nom de la paire de clés EC2 créée pour l'accès SSH (facultatif) que vous avez créée à l'étape préalable Créer une paire de clés SSH
Afficher l'état de votre cluster
Après avoir créé un cluster et un pool de nœuds, vous pouvez afficher son état en utilisant Google Cloud CLI ou la console Google Cloud. Pour afficher l'état du cluster, faites votre choix entre Google Cloud CLI et la console Google Cloud, puis procédez comme suit :
gcloud
Utilisez la commande gcloud container aws clusters describe
pour obtenir les détails de votre cluster :
gcloud container aws clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
Remplacez les éléments suivants :
CLUSTER_NAME
: nom de votre cluster.GOOGLE_CLOUD_LOCATION
: nom de l'emplacement Google Cloud qui gère le cluster
Console Google Cloud
Dans la console Google Cloud, accédez à la page Présentation des clusters Google Kubernetes Engine.
Vos clusters sont répertoriés par nom et emplacement.
Cliquez sur le nom du cluster. Un panneau contenant des informations sur le cluster, y compris son état et ses fonctionnalités activées, s'affiche.
Obtenir des identifiants d'authentification pour le cluster
Après avoir créé votre cluster, vous devez obtenir des informations d'authentification pour interagir avec lui :
gcloud container aws clusters get-credentials aws-cluster-0
Cette commande configure kubectl
pour l'accès au cluster que vous avez créé à l'aide de la passerelle Connect. Vous devez disposer d'au moins un pool de nœuds pour utiliser la passerelle Connect, car celle-ci repose sur l'agent Connect, qui s'exécute en tant que déploiement dans le cluster.
Déployer une application sur le cluster
Maintenant que vous avez créé un cluster, vous pouvez déployer une application conteneurisée dans celui-ci. Pour ce guide de démarrage rapide, vous pouvez déployer notre exemple d'application Web hello-app
.
Vous utilisez des objets Kubernetes pour créer et gérer les ressources de votre cluster. Utilisez l'objet Déploiement pour déployer des applications sans état comme les serveurs Web. Les objets Service définissent les règles et les équilibreurs de charge permettant d'accéder à votre application via Internet.
Créer le déploiement
Pour exécuter hello-app
dans votre cluster, vous devez déployer l'application en exécutant la commande suivante :
kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
La commande Kubernetes kubectl create deployment
crée un déploiement nommé hello-server
. Le pod du déploiement exécute l'image de conteneur hello-app
.
Dans cette commande :
--image
désigne une image de conteneur à déployer. Dans cet exemple, la commande extrait l'exemple d'image d'un dépôt Artifact Registry,us-docker.pkg.dev/google-samples/containers/gke/hello-app
.:1.0
indique la version de l'image à extraire. Si vous ne spécifiez pas de version, l'image avec le taglatest
est utilisée.
Exposer le déploiement
Après avoir déployé l'application, vous devez l'exposer sur Internet afin que les utilisateurs puissent y accéder. Vous pouvez exposer cette application en créant un objet Service, c'est-à-dire une ressource Kubernetes permettant d'exposer votre application au trafic externe.
Pour exposer votre application, exécutez la commande kubectl expose
suivante:
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
L'option --type LoadBalancer
permet de créer un équilibreur de charge AWS pour votre conteneur. L'option --port
initialise le port public 80 sur Internet et l'option --target-port
achemine le trafic vers le port 8080 de l'application.
Les équilibreurs de charge sont facturés selon la tarification d'AWS relative aux équilibreurs de charge.
Inspecter et afficher l'application
Inspectez les pods en cours d'exécution à l'aide de la commande
kubectl get pods
:kubectl get pods
Vous devriez voir un pod
hello-server
s'exécuter sur votre cluster.Inspectez le service
hello-server
à l'aide de la commandekubectl get service
:kubectl get service hello-server
À partir du résultat de cette commande, copiez l'adresse IP externe du service depuis la colonne
EXTERNAL-IP
.Consultez l'application dans votre navigateur Web à l'aide de l'adresse IP externe avec le port exposé :
http://EXTERNAL-IP
Vous venez de déployer une application Web conteneurisée sur GKE sur AWS.
Effectuer un nettoyage
Supprimez le service et le déploiement de l'application :
kubectl delete service hello-server kubectl delete deployment hello-server
Supprimez votre pool de nœuds en exécutant la commande
gcloud container aws node-pools delete
:gcloud container aws node-pools delete pool-0 --cluster aws-cluster-0
Supprimez votre cluster en exécutant la commande
gcloud container aws clusters delete
:gcloud container aws clusters delete aws-cluster-0