Ce tutoriel est destiné aux architectes cloud et aux administrateurs d'opérations qui souhaitent déployer une application Web sur un cluster Google Kubernetes Engine (GKE) et l'exposer avec un équilibreur de charge HTTPS.
Objectifs
Dans ce tutoriel, vous allez apprendre à effectuer les opérations suivantes :
- créer un cluster GKE ;
- Créer une adresse IP globale et une zone Cloud DNS avec Terraform
- Configurer l'équilibrage de charge HTTPS
- Déployer un exemple d'application Web
Coûts
Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :
Vous pouvez obtenir une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
Configurer votre projet
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.
Roles required to create a project
To create a project, you need the Project Creator role (
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles. -
Verify that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine, Cloud DNS APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Vous devez détenir un nom de domaine. Celui-ci ne doit pas dépasser 63 caractères. Vous pouvez utiliser Google Domains ou un autre service d'enregistrement.
Définissez les variables d'environnement :
PROJECT_ID=$(gcloud config get-value project) gcloud config set project $PROJECT_ID gcloud config set compute/region us-central1Clonez le dépôt de code :
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.gitAccédez au répertoire de travail :
cd kubernetes-engine-samples/autopilot/networking-tutorial
Configurer votre environnement
Dans ce tutoriel, vous utilisez Cloud Shell pour gérer les ressources hébergées surGoogle Cloud. Cloud Shell est préinstallé avec les logiciels dont vous avez besoin dans ce tutoriel, y compris Terraform, kubectl et gcloud CLI.
Créer un cluster GKE
Le fichier Terraform suivant crée un cluster GKE :
Le fichier Terraform suivant crée une adresse IP globale et une zone Cloud DNS :
Initialisez Terraform :
terraform initAffichez les modifications apportées à l'infrastructure :
terraform planLorsque vous y êtes invité, saisissez votre domaine, par exemple
my-domain.net.Appliquez la configuration Terraform :
terraform apply --auto-approveLorsque vous y êtes invité, saisissez votre domaine, par exemple
my-domain.net.Le résultat ressemble à ce qui suit :
Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Outputs: cluster_name = "networking-cluster" region = "us-central1"
Créer un équilibreur de charge d'application externe
Le fichier manifeste suivant décrit un objet ManagedCertificate, FrontendConfig, Deployment, Service et Ingress:
Remplacez
DOMAIN_NAMEpar votre nom de domaine, par exemplemy-domain.net.Ce fichier manifeste possède les propriétés suivantes :
networking.gke.io/managed-certificates: nom du certificat géré (ManagedCertificate). Cette ressource provisionne un certificat SSL géré par Google (classique).networking.gke.io/v1beta1.FrontendConfig: nom de la ressource FrontendConfig.kubernetes.io/ingress.global-static-ip-name: nom de l'adresse IP.kubernetes.io/ingress.class: indique au contrôleur GKE Ingress de créer un équilibreur de charge d'application externe.
Appliquez le fichier manifeste à votre cluster :
kubectl apply -f kubernetes-manifests.yamlVérifiez que l'objet Ingress a été créé:
kubectl describe ingress frontendLe résultat ressemble à ce qui suit :
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 2m loadbalancer-controller default/frontend Normal CREATE 1m loadbalancer-controller ip: 203.0.113.2 ...Le provisionnement d'Ingress peut prendre plusieurs minutes.
Tester l'application
Vérifiez l'état du certificat SSL :
kubectl get managedcertificates.networking.gke.io networking-managed-certLe provisionnement du certificat SSL peut prendre jusqu'à 30 minutes. Le résultat suivant indique que le certificat SSL est prêt :
NAME AGE STATUS networking-managed-cert 28m ActiveExécutez une commande
curl:curl -Lv https://DOMAIN_NAMELe résultat ressemble à ce qui suit :
* Trying 34.160.115.33:443... * Connected to DOMAIN_NAME (34.160.115.33) port 443 (#0) ... * TLSv1.3 (IN), TLS handshake, Certificate (11): ... * Server certificate: * subject: CN=DOMAIN_NAME ... > Host: DOMAIN_NAME
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Supprimer des ressources individuelles
Supprimez les ressources Kubernetes :
kubectl delete -f kubernetes-manifests.yamlSupprimez les ressources Terraform :
terraform destroy --auto-approveLorsque vous y êtes invité, saisissez votre domaine, par exemple
my-domain.net.
Étapes suivantes
- Découvrez la mise en réseau GKE.