Démarrage rapide

Ce guide de démarrage rapide vous explique comment déployer une application conteneurisée de serveur Web simple sur un cluster Google Kubernetes Engine (GKE). Vous apprendrez à créer un cluster sur lequel déployer l'application pour qu'elle soit accessible aux utilisateurs.

Ce guide part du principe que vous avez déjà acquis les connaissances de base sur Kubernetes.

Avant de commencer

Pour activer l'API Kubernetes Engine, procédez comme suit :
  1. Accédez à la page Kubernetes Engine dans Google Cloud Console.
  2. Créez ou sélectionnez un projet.
  3. Patientez le temps de l'activation de l'API et des services associés. Cette opération peut prendre plusieurs minutes.
  4. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

Vérifiez que vous disposez du quota disponible pour :

  • un processeur Compute Engine situé dans la région de votre cluster ;
  • une adresse IP en cours d'utilisation.

Vérifiez votre quota disponible à l'aide de Cloud Console.

Lancer Cloud Shell

Dans ce tutoriel, vous allez utiliser Cloud Shell, un environnement shell permettant de gérer les ressources hébergées sur Google Cloud.

Cloud Shell est préinstallé avec l'outil de ligne de commande gcloud et l'outil de ligne de commande kubectl. L'outil gcloud est l'interface de ligne de commande principale utilisée sur Google Cloud, et kubectl fournit l'interface de ligne de commande principale permettant d'exécuter des commandes sur les clusters Kubernetes.

Lancez Cloud Shell :

  1. Accédez à Google Cloud Console.

    Google Cloud Console

  2. Dans l'angle supérieur droit de la console, cliquez sur le bouton Activer Cloud Shell :

Une session Cloud Shell s'ouvre dans un cadre situé en bas de la console. Cette interface système vous permet d'exécuter les commandes gcloud et kubectl.

Configurer les paramètres par défaut de l'outil gcloud

Utilisez l'outil gcloud pour configurer les paramètres par défaut suivants : votre projet, votre zone de calcul et votre région de calcul par défaut.

Votre projet est doté d'un ID de projet, qui constitue son 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 zone de calcul est un emplacement régional dans lequel résident vos clusters et leurs ressources. Par exemple, us-west1-a est une zone de la région us-west. Votre région de calcul est la région où résident vos clusters et leurs ressources (par exemple, us-west).

La configuration de ces paramètres par défaut facilite l'exécution des commandes gcloud, car gcloud vous demanderait sinon de spécifier à chaque fois le projet et la zone de calcul dans lesquels vous souhaitez travailler. Vous pouvez également spécifier ces paramètres ou ignorer les paramètres par défaut à l'aide d'options, telles que --project, --zone, --region et --cluster dans vos commandes gcloud.

Lorsque vous créez des ressources GKE après avoir configuré votre projet, la zone et la région par défaut, elles sont automatiquement créées dans ce projet, cette zone et cette région.

Dans Cloud Shell, procédez comme suit :

  1. Définissez le projet par défaut :

    gcloud config set project PROJECT_ID
    

    Remplacez PROJECT_ID par votre ID du projet

  2. Définissez la zone par défaut :

    gcloud config set compute/zone COMPUTE_ZONE
    

    Remplacez COMPUTE_ZONE par votre zone de calcul, telle que us-west1-a.

  3. Définissez la région par défaut :

    gcloud config set compute/region COMPUTE_REGION
    

    Remplacez COMPUTE_REGION par votre région de calcul, telle que us-west1.

Créer un cluster GKE

Un cluster contient au moins un plan de contrôle de cluster et plusieurs systèmes de calcul appelés nœuds. Les nœuds sont des instances de machines virtuelles (VM) Compute Engine qui exécutent les processus Kubernetes nécessaires pour faire partie du cluster. Vous déployez les applications sur des clusters, et ces applications s'exécutent sur les nœuds.

Pour créer des clusters dans GKE, vous devez choisir un mode de fonctionnement : standard ou Autopilot. Si vous utilisez le mode Standard, votre cluster est zonal (dans ce tutoriel). Si vous utilisez le mode Autopilot, votre cluster est régional.

Standard

Créez un cluster standard à nœud unique nommé hello-cluster :

gcloud container clusters create hello-cluster --num-nodes=1

Autopilot

Créez un cluster Autopilot nommé hello-cluster :

 gcloud container clusters create-auto hello-cluster

La création du cluster peut prendre plusieurs minutes.

Obtenir des informations d'authentification pour le cluster

Après avoir créé votre cluster, vous devez obtenir des informations d'authentification pour interagir avec lui :

gcloud container clusters get-credentials hello-cluster

Cette commande configure kubectl pour l'utilisation du cluster que vous avez créé.

Déployer une application sur le cluster

Maintenant que vous avez créé un cluster, vous pouvez y déployer une application conteneurisée. Pour ce guide de démarrage rapide, vous pouvez déployer notre exemple d'application Web hello-app.

GKE utilise des objets Kubernetes pour créer et gérer les ressources de votre cluster. Kubernetes fournit l'objet Déploiement pour le déploiement d'applications sans état comme les serveurs Web. Les objets Service définissent des règles et gèrent l'équilibrage de charge pour accéder à votre application depuis 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=gcr.io/google-samples/hello-app:1.0

Cette commande Kubernetes, kubectl create deployment, crée un déploiement nommé hello-server. Le pod de ce 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 bucket Container Registry, gcr.io/google-samples/hello-app. :1.0 indique la version de l'image à extraire. Si vous ne spécifiez pas de version, la dernière version 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 Compute Engine 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 des équilibreurs de charge de Compute Engine.

Inspecter et afficher l'application

  1. 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.

  2. Inspectez le service hello-server à l'aide de la commande kubectl 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.

  3. 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 !

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans ce guide de démarrage rapide soient facturées sur votre compte Google Cloud, procédez comme suit :

  1. Supprimez l'objet Service de l'application en exécutant la commande kubectl delete :

    kubectl delete service hello-server
    

    Cette commande supprime l'équilibreur de charge Compute Engine que vous avez créé lorsque vous avez exposé le déploiement.

  2. Supprimez votre cluster en exécutant la commande gcloud container clusters delete :

    gcloud container clusters delete hello-cluster
    

Facultatif : examen du code de l'application hello-app

hello-app est une application de serveur Web simple composée de deux fichiers : main.go et Dockerfile.

hello-app est packagée comme une image de conteneur Docker. Les images de conteneur peuvent être stockées dans n'importe quel registre d'images Docker, tel que Container Registry. Nous hébergeons hello-app dans un bucket Container Registry nommé gcr.io/google-samples/hello-app.

main.go

main.go correspond à une mise en œuvre de serveur Web écrite dans le langage de programmation Go. Le serveur répond à toutes les requêtes HTTP avec le message "Hello, world!"

package main

import (
	"fmt"
	"log"
	"net/http"
	"os"
)

func main() {
	// register hello function to handle all requests
	mux := http.NewServeMux()
	mux.HandleFunc("/", hello)

	// use PORT environment variable, or default to 8080
	port := os.Getenv("PORT")
	if port == "" {
		port = "8080"
	}

	// start the web server on port and accept requests
	log.Printf("Server listening on port %s", port)
	log.Fatal(http.ListenAndServe(":"+port, mux))
}

// hello responds to the request with a plain-text "Hello, world" message.
func hello(w http.ResponseWriter, r *http.Request) {
	log.Printf("Serving request: %s", r.URL.Path)
	host, _ := os.Hostname()
	fmt.Fprintf(w, "Hello, world!\n")
	fmt.Fprintf(w, "Version: 1.0.0\n")
	fmt.Fprintf(w, "Hostname: %s\n", host)
}

Dockerfile

Dockerfile décrit l'image que Docker doit générer, y compris toutes ses ressources et dépendances, et spécifie le port réseau que l'application doit exposer. Pour plus d'informations sur le fonctionnement de ce fichier, consultez le document de référence Dockerfile dans la documentation de Docker.

FROM golang:1.8-alpine
ADD . /go/src/hello-app
RUN go install hello-app

FROM alpine:latest
COPY --from=0 /go/bin/hello-app .
ENV PORT 8080
CMD ["./hello-app"]

Étapes suivantes

Faites l'essai

Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de GKE en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.

Profiter d'un essai gratuit de GKE