Ce tutoriel explique 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 qu'il pointe vers votre application.
Dans ce tutoriel, nous partons du principe que vous êtes propriétaire d'un nom de domaine enregistré, tel que example.com
.
Objectifs
Ce tutoriel couvre les étapes suivantes :
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez 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, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
Pour activer l'API Kubernetes Engine, procédez comme suit :- Accédez à la page Kubernetes Engine dans la console Google Cloud.
- Créez ou sélectionnez un projet.
- Patientez le temps de l'activation de l'API et des services associés. Cette opération peut prendre plusieurs minutes.
-
Make sure that billing is enabled for your Google Cloud project.
Installez les outils de ligne de commande suivants utilisés dans ce tutoriel :
-
gcloud
permet de créer et de supprimer des clusters Kubernetes Engine.gcloud
est inclus dans la CLIgcloud
. -
kubectl
permet de gérer Kubernetes, le système d'orchestration de clusters utilisé par Kubernetes Engine. Vous pouvez installerkubectl
avecgcloud
:gcloud components install kubectl
Clonez l'exemple de code depuis GitHub :
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples
cd kubernetes-engine-samples/quickstarts/hello-app/manifests
Définir des valeurs par défaut pour l'outil de ligne de commande gcloud
Pour gagner du temps lors de la saisie de vos options d'ID de projet et de zone Compute Engine dans l'outil de ligne de commande gcloud
,vous pouvez définir les valeurs par défaut suivantes :gcloud config set project project-id gcloud config set compute/zone compute-zone
Créer un cluster
Créez un cluster :
gcloud container clusters create-auto domain-test
Déployer votre application Web
Le fichier manifeste suivant décrit un déploiement qui exécute un exemple d'image de conteneur d'application Web :
Créez le déploiement :
kubectl apply -f helloweb-deployment.yaml
Exposer votre application
Vous pouvez exposer votre application sur GKE via l'une des méthodes suivantes :
Utiliser un service, qui crée un équilibreur de charge réseau pass-through externe qui fonctionne avec des adresses IP régionales.
Utiliser un objet Entrée, qui crée un équilibreur de charge d'application et accepte les adresses IP globales.
Pour en savoir plus sur les avantages et les inconvénients de chaque méthode, consultez la page Configurer un équilibreur de charge d'application externe avec Ingress.
Utiliser un service
Pour vous assurer que votre application dispose d'une adresse IP externe statique, vous devez réserver une adresse IP statique.
Si vous choisissez d'exposer votre application à l'aide d'un objet Service, vous devez créer une adresse IP régionale. Les adresses IP globales ne fonctionnent qu'avec le type de ressource Entrée, comme expliqué dans la section suivante.
Pour utiliser un service, créez une adresse IP statique nommée helloweb-ip
dans la région us-central1
:
gcloud
gcloud compute addresses create helloweb-ip --region us-central1
Recherchez l'adresse IP statique que vous avez créée :
gcloud compute addresses describe helloweb-ip --region us-central1
Le résultat ressemble à ce qui suit :
...
address: 203.0.113.32
...
Config Connector
Remarque : Cette étape nécessite Config Connector. Suivez les instructions d'installation pour l'installer sur votre cluster.
Enregistrez le fichier manifeste sous le nom compute-address-regional.yaml
.
Appliquez le fichier manifeste à votre cluster :
kubectl apply -f compute-address-regional.yaml
Recherchez l'adresse IP statique que vous avez créée :
kubectl get computeaddress helloweb-ip -o jsonpath='{.spec.address}'
Le fichier manifeste suivant décrit un service de type LoadBalancer, qui crée un équilibreur de charge réseau passthrough externe pour exposer les pods avec une adresse IP externe.
Remplacez YOUR.IP.ADDRESS.HERE
par l'adresse IP statique :
Créez le service en exécutant la commande suivante :
kubectl apply -f helloweb-service-static-ip.yaml
Affichez l'adresse IP réservée associée à l'équilibreur de charge:
kubectl get service
Le résultat ressemble à ce qui suit :
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
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'un objet Ingress, vous devez réserver une adresse IP statique globale.
Utilisez l'annotation kubernetes.io/ingress.global-static-ip-name
pour spécifier une adresse IP globale.
Pour exposer votre application aux clients et aux services d'une région, utilisez une adresse IP interne statique régionale lors du déploiement d'une ressource d'entrée interne pour GKE, ainsi que les annotations requises.
Pour savoir comment utiliser Ingress pour exposer vos applications sur Internet, consultez la section Configurer un équilibreur de charge d'application externe avec Ingress.
Pour créer une adresse IP statique globale nommée helloweb-ip
, procédez comme suit :
gcloud
gcloud compute addresses create helloweb-ip --global
Recherchez l'adresse IP statique que vous avez créée :
gcloud compute addresses describe helloweb-ip --global
Le résultat ressemble à ce qui suit :
...
address: 203.0.113.32
...
Config Connector
Remarque : Cette étape nécessite Config Connector. Suivez les instructions d'installation pour l'installer sur votre cluster.
Enregistrez le fichier manifeste sous le nom compute-address-global.yaml
.
Appliquez le fichier manifeste à votre cluster :
kubectl apply -f compute-address-global.yaml
Le fichier manifeste suivant décrit une entrée qui expose une application Web sur une adresse IP statique avec deux ressources :
- Une ressource
Service
avectype:NodePort
- Une ressource
Ingress
configurée avec le nom du service et une annotation d'adresse IP statique
L'annotation kubernetes.io/ingress.global-static-ip-name
spécifie le nom de la ressource d'adresse IP globale à associer à l'équilibreur de charge HTTP(S).
Appliquez le fichier manifeste à votre cluster :
kubectl apply -f helloweb-ingress-static-ip.yaml
Affichez l'adresse IP associée à l'équilibreur de charge :
kubectl get ingress
Le résultat ressemble à ce qui suit :
NAME HOSTS ADDRESS PORTS AGE
helloweb * 203.0.113.32 80 4m
Afficher votre adresse IP statique réservée
Pour vérifier que l'équilibreur de charge est correctement configuré, vous pouvez utiliser un navigateur Web pour accéder à l'adresse IP ou exécuter la commande curl
:
curl http://203.0.113.32/
Le résultat ressemble à ce qui suit :
Hello, world!
Hostname: helloweb-3766687455-8lvqv
Configurer vos enregistrements de nom de domaine
Afin que les navigateurs qui envoient des requêtes au nom de votre domaine (comme example.com
) ou de votre sous-domaine (tel que blog.example.com
) pointent vers l'adresse IP statique que vous avez réservée, vous devez mettre à jour les enregistrements DNS (Domain Name System) de votre nom de domaine.
Vous devez créer un enregistrement DNS du type A (adresse) pour votre nom de domaine ou de sous-domaine, et configurer sa valeur d'après 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 "bureau d'enregistrement" où 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 : consultez le guide de démarrage rapide de Cloud DNS pour configurer l'enregistrement DNS A de votre nom de domaine avec l'adresse IP réservée de votre application.
Si votre serveur de noms est un autre fournisseur : recherchez les instructions de configuration des enregistrements DNS A dans la documentation de votre fournisseur DNS afin de configurer votre nom de domaine. Si vous préférez utiliser Google Cloud DNS à la place, consultez la page Migrer vers Cloud DNS.
Accéder à 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, accédez à votre nom de domaine.
Pour effectuer une requête DNS pour l'enregistrement A de votre domaine, exécutez la commande host
:
host example.com
Le résultat ressemble à ce qui suit :
example.com has address 203.0.113.32
Vous pouvez maintenant faire pointer votre navigateur Web vers votre nom de domaine et visiter votre site Web.
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.
Supprimez les objets Service et Ingress :
kubectl delete ingress,service -l app=hello
Libérez l'adresse IP statique réservée. Une fois l'équilibreur de charges supprimé, l'adresse IP réservée et non utilisée est facturée selon la tarification par adresse IP non utilisée.
Si vous avez utilisé un service :
gcloud compute addresses delete helloweb-ip --region us-central1
Si vous utilisiez un objet Ingress :
gcloud compute addresses delete helloweb-ip --global
Supprimez l'exemple d'application :
kubectl delete -f helloweb-deployment.yaml
Supprimez le cluster à l'aide de la commande suivante :
gcloud container clusters delete domain-test
Étapes suivantes
- Découvrez d'autres tutoriels Kubernetes Engine.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Cloud Architecture Center.