Ce tutoriel montre comment utiliser Google Kubernetes Engine (GKE) pour exposer votre application Web à Internet sur une adresse IP externe statique et configurer un nom de domaine pour pointer vers votre application Ce didacticiel suppose que vous possédez un nom de domaine enregistré, tel que exemple.com Vous pouvez enregistrer un nom de domaine via Google Domaines ou un autre bureau d'enregistrement de domaine de votre choix si vous n'en avez pas ## Objectifs Ce didacticiel illustre les étapes suivantes : ## Frais Ce tutoriel utilise les composants facturables suivants de Google Cloud : Pour générer une estimation des coûts en fonction de votre utilisation prévue, utiliser le calculateur de prix Lorsque vous avez terminé ce didacticiel, vous pouvez éviter la poursuite de la facturation en supprimant les ressources que vous avez créées. Pour plus d'informations, voir Nettoyer ## Avant de commencerSuivez les étapes suivantes pour activer l'API Kubernetes Engine : - Accédez à la page Kubernetes Engine dans la console Google Cloud - Créer ou sélectionner un projet - Attendez que l'API et les services associés soient activés. Cela peut prendre plusieurs minutes - Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet Installez les outils de ligne de commande suivants utilisés dans ce tutoriel : - gcloud est utilisé pour créer et supprimer des clusters Kubernetes Engine gcloud est inclus dans gcloudCLI - kubectlis est utilisé pour gérer Kubernetes, le système d'orchestration de cluster utilisé par Kubernetes Engine. Vous pouvez installer kubectlusing gcloud : composants gcloud installer kubectl Clonez l'exemple de code de GitHub : git clone httpsgithub.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/hello-app/manifests Définir les valeurs par défaut pour le Pour gagner du temps en saisissant l'ID de votre projet et les options de zone Compute Engine dans la outil de ligne de commande gcloud l'outil de ligne de commande gcloud, vous pouvez définir les valeurs par défaut : projet d'ensemble de configuration gcloud projet-idgcloud config set compute/zone compute-zone Créer un cluster Créez un cluster de conteneurs nommé domain-test pour déployer votre application web : les clusters de conteneurs gcloud créent un test de domaine ## Déploiement de votre application Web Le manifeste suivant décrit un déploiement qui exécute un exemple d'image de conteneur d'application Web : # Copyright 2021 Google LLC # # Licence sous la licence Apache, version 2.0 (la "Licence # vous ne pouvez pas utiliser ce fichier sauf en conformité avec la licence. # Vous pouvez obtenir une copie de la licence sur # # httpwww.apache.org /licenses/LICENSE-2.0 # # Sauf si requis par la loi applicable ou convenu par écrit, le logiciel # distribué sous la Licence est distribué sur une BASE "TEL QUEL", # SANS GARANTIE OU CONDITION D'AUCUNE SORTE, expresse ou implicite. # Reportez-vous à la licence pour connaître les autorisations et les # limitations de langue spécifiques sous la licence. libellés : app : hello tier : web spec : conteneurs : - nom : hello-app image : us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 ports : - containerPort : 8080 ressources : requêtes : processeur : 200m Exécutez la commande suivante pour créer le déploiement : kubectl apply -f helloweb-deployment.yaml ## Exposer votre application Vous pouvez exposer votre application sur GKE à l'aide de l'une des méthodes suivantes : Utilisez un service, qui crée un équilibreur de charge réseau TCP qui fonctionne avec des adresses IP régionales. Utiliser une entrée, qui crée un équilibreur de charge HTTP(S) et prend en charge les adresses IP globales Pour en savoir plus sur les avantages et les inconvénients de chaque méthode, reportez-vous à la section Configuration de l'équilibrage de charge HTTP(S) avec Ingress Utiliser un service Pour vous assurer que votre application dispose d'une adresse IP publique statique, vous devez réserver une adresse IP statique Si vous choisissez d'exposer votre application à l'aide d'un service, vous devez créer une adresse IP régionale. Les adresses IP globales ne fonctionnent qu'avec le type de ressource Ingress, comme expliqué dans la section suivante Pour utiliser un service, créez une adresse IP statique nommée helloweb-ip dans le Région us-central1 : gcloud les adresses de calcul gcloud créent helloweb-ip --region us-central1 Pour trouver l'adresse IP statique que vous avez créée, exécutez la commande suivante : Les adresses de calcul gcloud décrivent helloweb-ip --region us-central1Output : adresse : 203.0.113.32 .. Connecteur de configuration **Remarque Cette étape nécessite Connecteur de configuration. Suivre la instructions d'installation pour installer Config Connector sur votre cluster apiVersion : compute.cnrm.cloud.google.com/v1beta1 type : métadonnées ComputeAddress : nom : helloweb-ip spec : emplacement : us-central1 kubectl apply -f compute-address-regional.yamlPour trouver l'adresse IP statique, exécutez la commande suivante : kubectl get computeaddress helloweb-ip -o jsonpathspec.address}'Le manifeste suivant décrit un service de type LoadBalancer, qui crée un équilibreur de charge réseau pour exposer les pods avec une adresse IP publique. Remplacer `YOUR.IP.ADDRESS.HERE` avec l'adresse IP statique : # Copyright 2021 Google LLC # # Licence sous la licence Apache, version 2.0 (la "Licence # vous ne pouvez pas utiliser ce fichier sauf en conformité avec la licence. # Vous pouvez obtenir une copie de la licence sur # # httpwww.apache.org /licenses/LICENSE-2.0 # # Sauf si requis par la loi applicable ou convenu par écrit, le logiciel # distribué sous la licence est distribué sur une BASE "EN L'ÉTAT", # SANS GARANTIE OU CONDITION D'AUCUNE SORTE, expresse ou implicite. # Reportez-vous à la licence pour connaître les autorisations et # limitations de langue spécifiques sous la licence. apiVersion : v1 kind : Service metadata : name : helloweb labels : app : hello spec : selector : app : hello tier : ports Web : - port : 80 targetPort : Type 8080 : LoadBalancer loadBalancerIP : "VOTRE.ADRESSE.IP.ICI"Créez ensuite le service : kubectl appliquer -f helloweb-service-static-ip.yaml Pour voir l'adresse IP réservée associée à l'équilibreur de charge : kubectl get serviceSortie : NOM IP DU CLUSTER PORT(S) IP EXTERNE ÂGE helloweb 10.31.254.176 203.0.113.32 80:30690/TCP 54s Utiliser une entrée Si vous choisissez d'exposer votre application à l'aide d'une entrée, qui crée un équilibreur de charge HTTP(S), vous devez réserver une adresse IP statique globale. Les adresses IP régionales ne fonctionnent pas avec Ingress Pour en savoir plus sur l'utilisation d'Ingress pour exposer vos applications sur Internet, consultez le tutoriel Configuration de l'équilibrage de charge HTTP(S) avec Ingress Pour créer une adresse IP statique globale nommée helloweb-ip : gcloud les adresses de calcul gcloud créent helloweb-ip --global Pour trouver l'adresse IP statique que vous avez créée : Les adresses de calcul gcloud décrivent helloweb-ip --globalOutput : adresse : 203.0.113.32 .. Connecteur de configuration **Remarque Cette étape nécessite Connecteur de configuration. Suivre la instructions d'installation pour installer Config Connector sur votre cluster apiVersion : compute.cnrm.cloud.google.com/v1beta1 type : métadonnées ComputeAddress : nom : helloweb-ip spec : emplacement : global kubectl apply -f compute-address-global.yaml Le manifeste suivant décrit une entrée qui est une application Web sur une adresse IP statique avec deux ressources : - UN Serviceavec type:NodePort - Une Entrée configurée avec le nom du service et l'annotation IP statique # Copyright 2021 Google LLC # # Licence sous la licence Apache, version 2.0 (la "Licence # vous ne pouvez pas utiliser ce fichier sauf en conformité avec la licence. # Vous pouvez obtenir une copie de la licence sur # # httpwww.apache.org /licenses/LICENSE-2.0 # # Sauf si requis par la loi applicable ou convenu par écrit, le logiciel # distribué sous la licence est distribué sur une BASE "EN L'ÉTAT", # SANS GARANTIE OU CONDITION D'AUCUNE SORTE, expresse ou implicite. # Reportez-vous à la licence pour connaître les autorisations spécifiques à la langue et # les limitations sous la licence. -ip labels : app : hello spec : defaultBackend : service : nom : helloweb-backend port : numéro : 8080apiVersion : v1 kind : Service metadata : nom : helloweb-backend labels : app : hello spec : type : NodePort selector : app : hello niveau : ports Web : - port : 8080 targetPort : 8080 Les L'annotation kubernetes.io/ingress.global-static-ip-name spécifie le nom de la ressource d'adresse IP globale à associer à la charge HTTP(S) Balancier Appliquez la ressource au cluster : kubectl apply -f helloweb-ingress-static-ip.yamlOutput : Ingress "helloweb"créé service "helloweb-backend"créé Pour voir l'adresse IP de réserve associée à l'équilibreur de charge : kubectl get ingressSortie : NOM HÔTES ADRESSE PORTS ÂGE helloweb * 203.0.113.32 80 4m ## Visite de votre adresse IP statique réservée Pour vérifier que l'équilibreur de charge est correctement configuré, vous pouvez soit utiliser un navigateur Web pour visiter l'adresse IP ou utiliser boucle: curl http203.0.113.32/Sortie : Bonjour le monde! Nom d'hôte : helloweb-3766687455-8lvqv ## Configurer vos enregistrements de nom de domaine Pour que les navigateurs interrogent votre nom de domaine, comme exemple.com ou sous-domaine nom, comme blog.example.com, pointez sur l'adresse IP statique que vous avez réservée, vous devez mettre à jour les enregistrements DNS (Domain Name Server) de votre nom de domaine Vous devez créer un Enregistrement DNS de type **A** (adresse) pour votre domaine ou sous-domaine nom et avoir sa valeur configurée avec l'adresse IP réservée Les enregistrements DNS de votre domaine sont gérés par votre serveur de noms. Votre serveur de noms peut être le "registrar"auprès duquel vous avez enregistré votre domaine, un service DNS tel que Cloud DNS ou un autre fournisseur tiers. Si votre serveur de noms est Cloud DNS : suivez le guide de démarrage rapide de Cloud DNS pour configurer l'enregistrement DNS A pour votre nom de domaine avec l'adresse IP réservée de votre application. Si votre serveur de noms est un autre fournisseur : reportez-vous à la documentation de votre service DNS sur la configuration des enregistrements DNS A pour configurer votre nom de domaine. Si vous choisissez d'utiliser Cloud DNS à la place, reportez-vous à Migrer vers Cloud DNS ## Visite de votre nom de domaine Pour vérifier que les enregistrements DNS A de votre nom de domaine correspondent à l'adresse IP que vous avez réservée, visitez votre nom de domaine Pour faire une requête DNS sur l'enregistrement A de votre nom de domaine, lancez le héberger commande: exemple d'hôte.comSortie : example.com a l'adresse 203.0.113.32 À ce stade, vous pouvez faire pointer votre navigateur Web vers votre nom de domaine et visiter votre site Web ! ## Nettoyer Pour éviter que des frais ne soient facturés à votre compte Google Cloud pour les ressources utilisées dans ce didacticiel, supprimez le projet qui contient les ressources ou conservez le projet et supprimez les ressources individuelles. Supprimez les ressources d'équilibrage de charge : kubectl supprimer l'entrée, service -l app=hello Libérez l'adresse IP statique réservée. Une fois l'équilibreur de charge supprimé, l'adresse IP inutilisée mais réservée n'est plus gratuite et est facturée selon la tarification de l'adresse IP inutilisée. Exécutez les commandes suivantes pour libérer la ressource IP statique : Si vous avez utilisé un Service : adresses de calcul gcloud supprimer helloweb-ip --region us-central1 Si vous avez utilisé une entrée : adresses de calcul gcloud supprimer helloweb-ip --global - Supprimez l'exemple d'application : kubectl delete -f helloweb-deployment.yaml Attendez que l'équilibreur de charge soit supprimé en regardant la sortie de la commande suivante. La sortie ne doit pas afficher une règle de transfert contenant "helloweb"dans son nom : liste des règles de transfert de calcul gcloud Supprimez le cluster de conteneurs : clusters de conteneurs gcloud supprimer domaine-test ## Et après Enregistrez votre propre nom de domaine via Google Domains Découvrir d'autres tutoriels Kubernetes Engine Découvrez les architectures de référence, les diagrammes, les didacticiels et les bonnes pratiques concernant Google Cloud. Jetez un œil à notre centre d'architecture cloud.