Instructions et exigences de configuration de l'atelier
Protégez votre compte et votre progression. Utilisez toujours une fenêtre de navigation privée et les identifiants de l'atelier pour exécuter cet atelier.

Configurer un réseau Google Kubernetes Engine (GKE)

Atelier 1 heure universal_currency_alt 5 crédits show_chart Débutant
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Ce contenu n'est pas encore optimisé pour les appareils mobiles.
Pour une expérience optimale, veuillez accéder à notre site sur un ordinateur de bureau en utilisant un lien envoyé par e-mail.

Présentation

Dans cet atelier, vous allez créer un cluster standard qui utilise des adresses IP internes RFC 1918, ajouter un réseau autorisé pour que les API puissent y accéder, puis configurer une règle de réseau pour sécuriser les pods.

Remarque : Pour cet atelier, vous allez utiliser le mode GKE Standard. Cet atelier porte sur les règles de réseau de clusters, qui sont activées par défaut dans GKE Autopilot.

Objectifs

Dans cet atelier, vous allez apprendre à :

  • créer et tester un cluster standard qui utilise des adresses IP internes RFC 1918 ;
  • configurer un cluster pour permettre à un réseau d'accéder au plan de contrôle ;
  • configurer la règle de réseau d'un cluster.

Préparation

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :

    • Le bouton Ouvrir la console Google Cloud
    • Le temps restant
    • Les identifiants temporaires que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier
  2. Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).

    L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.

    {{{user_0.username | "Username"}}}

    Vous trouverez également le nom d'utilisateur dans le panneau Détails concernant l'atelier.

  4. Cliquez sur Suivant.

  5. Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.

    {{{user_0.password | "Password"}}}

    Vous trouverez également le mot de passe dans le panneau Détails concernant l'atelier.

  6. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
  7. Accédez aux pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas à des essais sans frais.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Pour afficher un menu contenant la liste des produits et services Google Cloud, cliquez sur le menu de navigation en haut à gauche, ou saisissez le nom du service ou du produit dans le champ Recherche. Icône du menu de navigation

Une fois la connexion initiale effectuée, le tableau de bord du projet s'affiche.

Activer Google Cloud Shell

Google Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.

Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.

  1. Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".

    Icône Cloud Shell encadrée

  2. Cliquez sur Continuer.

Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :

ID de projet mis en évidence dans le terminal Cloud Shell

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  • Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list

Résultat :

Credentialed accounts: - @.com (active)

Exemple de résultat :

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project =

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.

Tâche 1 : Créer un cluster standard

Dans cette tâche, vous allez créer un cluster standard qui utilise des adresses IP internes RFC 1918.

Les nœuds de calcul du cluster ne disposeront que d'adresses IP internes RFC 1918. Ainsi, leurs charges de travail seront isolées de l'Internet public et n'auront pas d'adresse IP publique.

Configurer un cluster standard

  1. Dans le menu de navigation (Icône du menu de navigation), cliquez sur Kubernetes Engine > Clusters.
  2. Cliquez sur Créer, puis sélectionnez Passer au mode standard pour le cluster.
  3. Nommez le cluster standard-cluster.
  4. Sélectionnez comme zone.
  5. Dans le volet de gauche, dans Pools de nœuds, cliquez sur default-pool.
  6. Dans Nombre de nœuds, saisissez 2.

Section "Détails du pool de nœuds"

  1. Dans le volet de gauche, dans Cluster, cliquez sur Mise en réseau.
  2. Vérifiez que Activer les réseaux autorisés n'est pas sélectionné.
  3. Cochez la case Remplacer le sous-réseau du point de terminaison privé par défaut du plan de contrôle.
  4. Pour Sous-réseau du point de terminaison privé, sélectionnez Par défaut.

Section "Mise en réseau"

  1. Cochez la case Activer les nœuds privés.
Remarque : Google Cloud utilise l'appairage VPC pour connecter le VPC du cluster à votre réseau VPC par défaut.

Vous devrez peut-être faire défiler la page vers le bas pour voir cette option.

Ce paramètre vous permet de définir la plage d'adresses qui peuvent accéder au cluster en externe. Quand cette case n'est pas cochée, kubectl est accessible uniquement à partir du réseau Google Cloud. Dans cet atelier, vous accéderez à kubectl à partir du réseau Google Cloud uniquement, mais vous modifierez ce paramètre ultérieurement.

  1. Cliquez sur Créer.
Remarque : Le déploiement du cluster prend quelques minutes.

Examiner le cluster

  • Dans Cloud Shell, saisissez la commande suivante pour examiner les détails de votre nouveau cluster :
gcloud container clusters describe standard-cluster --zone {{{project_0.default_zone|ZONE}}}

Les valeurs suivantes ne s'affichent que sous le cluster :

  • privateEndpoint : adresse IP interne. Les nœuds utilisent cette adresse IP interne pour communiquer avec le plan de contrôle du cluster.
  • publicEndpoint : adresse IP externe. Les services externes et les administrateurs peuvent utiliser l'adresse IP externe pour communiquer avec le plan de contrôle du cluster.

Différentes options vous permettent de contrôler le degré de verrouillage du cluster :

  • L'ensemble du cluster peut disposer d'un accès externe.
  • L'ensemble du cluster peut disposer d'un accès interne.
  • Les nœuds peuvent être internes tandis que le plan de contrôle du cluster peut être public. Vous pouvez alors limiter les réseaux externes autorisés à accéder au plan de contrôle du cluster.

Sans adresses IP publiques, le code exécuté sur les nœuds ne peut pas accéder à l'Internet public, à moins de configurer une passerelle NAT telle que Cloud NAT.

Vous pouvez utiliser un cluster avec accès interne pour fournir des services tels que des API internes, dont l'accès est réservé aux ressources internes du réseau. Par exemple, ces ressources peuvent être des outils privés, que seule votre entreprise utilise. Il peut aussi s'agir de services de backend utilisés par vos services de frontend, qui eux-mêmes peuvent être directement utilisés par des clients ou des utilisateurs externes. Dans de tels cas, ces clusters sont un bon moyen de réduire la surface d'exposition de l'application.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer un cluster standard

Tâche 2 : Ajouter un réseau autorisé à accéder au plan de contrôle du cluster

Une fois le cluster créé, vous aurez peut-être besoin de lui envoyer des commandes depuis un environnement extérieur à Google Cloud. Vous pouvez par exemple décider que seul le réseau de votre entreprise peut émettre des commandes vers le plan de contrôle du cluster. Cependant, lors de la création du cluster, vous n'avez pas spécifié de réseau autorisé.

Dans cette tâche, vous allez ajouter un réseau autorisé à accéder au plan de contrôle du cluster.

Remarque : Vous allez donc rendre l'API du plan de contrôle Kubernetes accessible à une plage d'adresses réseau donnée. En situation réelle, cette connexion servirait à l'équipe informatique et aux processus automatisés, mais pas aux utilisateurs finaux.
  1. Dans le menu de navigation (Icône du menu de navigation) de la console Google Cloud, cliquez sur Kubernetes Engine > Clusters.
  2. Cliquez sur standard-cluster pour ouvrir la page d'informations sur le cluster.
  3. Dans l'onglet Détails, sous la section Mise en réseau du plan de contrôle, cliquez sur Modifier(Icône de modification).
  4. Sélectionnez Activer les réseaux autorisés.
  5. Cliquez sur Ajouter un réseau autorisé.
  6. Dans le champ Nom, saisissez le nom du réseau, à savoir Corporate.
  7. Dans le champ Réseau, saisissez la plage d'adresses CIDR que vous voulez ajouter à la liste d'autorisation permettant d'accéder au plan de contrôle du cluster. Vous pouvez par exemple indiquer 192.168.1.0/24.
  8. Cliquez sur OK.
  9. Assurez-vous que les paramètres suivants sont activés :
    • Accès via l'adresse IP externe du plan de contrôle
    • Accès via l'adresse IP interne du plan de contrôle depuis n'importe quelle région
    • Forcer l'application des réseaux autorisés sur les points de terminaison internes du plan de contrôle
    • Ajouter des adresses IP externes Google Cloud aux réseaux autorisés

Vous pouvez ajouter plusieurs réseaux si nécessaire, mais pas plus de 50 plages d'adresses CIDR.

Remarque : En situation réelle, il peut être pertinent de n'ajouter à la liste blanche que l'adresse publique externe du pare-feu de l'entreprise. Par exemple, si l'adresse IP du pare-feu de l'entreprise est 8.8.8.14, vous pouvez ajouter 8.8.8.14/32 à la liste blanche.
  1. Cliquez sur Enregistrer les modifications en bas du menu.

Cliquez sur Vérifier ma progression pour valider l'objectif. Ajouter un réseau autorisé à accéder au plan de contrôle du cluster

Tâche 3 : Créer une règle de réseau pour le cluster

Dans cette tâche, vous allez créer une règle de réseau pour le cluster, afin de limiter la communication entre les pods. Une zone zéro confiance empêche les attaques latérales dans le cluster lorsqu'un des pods est compromis.

Créer un cluster GKE

  1. Dans Cloud Shell, définissez les variables d'environnement correspondant à la zone et au nom du cluster en saisissant la commande suivante :
export my_zone={{{project_0.default_zone|ZONE}}} export my_cluster=standard-cluster-1
  1. Dans Cloud Shell, configurez la complétion par tabulation pour kubectl :
source <(kubectl completion bash)
  1. Dans Cloud Shell, saisissez la commande suivante pour créer un cluster Kubernetes. Remarque : Cette commande ajoute l'option --enable-network-policy aux paramètres que vous avez utilisés dans les ateliers précédents. Cette option permet à ce cluster d'appliquer les règles de réseau des clusters :
gcloud container clusters create $my_cluster --num-nodes 3 --enable-ip-alias --zone $my_zone --enable-network-policy
  1. Dans Cloud Shell, configurez l'accès de l'outil de ligne de commande kubectl à votre cluster en saisissant la commande suivante :
gcloud container clusters get-credentials $my_cluster --zone $my_zone
  1. Exécutez une application de serveur Web contenant l'étiquette app=hello, puis exposez-la en interne dans le cluster :
kubectl run hello-web --labels app=hello \ --image=gcr.io/google-samples/hello-app:1.0 --port 8080 --expose

Limiter le trafic entrant vers les pods

Créons un exemple de fichier manifeste NetworkPolicy appelé hello-allow-from-foo.yaml. Ce fichier manifeste définit une règle d'entrée autorisant l'accès aux pods présentant le libellé app: hello depuis les pods contenant le libellé app: foo.

  1. Dans nano, créez et ouvrez un fichier nommé hello-allow-from-foo.yaml à l'aide de la commande suivante :
nano hello-allow-from-foo.yaml
  1. Une fois nano ouvert, collez la commande suivante dans le fichier hello-allow-from-foo.yaml :
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: hello-allow-from-foo spec: policyTypes: - Ingress podSelector: matchLabels: app: hello ingress: - from: - podSelector: matchLabels: app: foo
  1. Appuyez sur Ctrl+O, puis sur Entrée pour enregistrer les modifications.

  2. Appuyez sur Ctrl+X pour quitter l'éditeur de texte nano.

  3. Créez une règle d'entrée :

kubectl apply -f hello-allow-from-foo.yaml
  1. Vérifiez que la règle a bien été créée :
kubectl get networkpolicy

Résultat :

NAME POD-SELECTOR AGE hello-allow-from-foo app=hello 7s

Valider la règle d'entrée

  1. Exécutez un pod temporaire nommé test-1 contenant l'étiquette app=foo et ouvrez un shell dans le pod :
kubectl run test-1 --labels app=foo --image=alpine --restart=Never --rm --stdin --tty Remarque : Il est important de noter les paramètres kubectl associés à la commande "run".

--stdin ( ou -i ) crée une session interactive associée à STDIN dans le conteneur.

--tty ( ou -t ) alloue un TTY à chaque conteneur du pod.

--rm indique à Kubernetes de traiter le pod comme temporaire et de le supprimer dès la tâche de démarrage terminée. Étant donné qu'il s'agit d'une session interactive, le pod sera supprimé lorsque l'utilisateur fermera la session.

--label ( ou -l ) ajoute un ensemble de libellés au pod.

--restart définit la règle de redémarrage du pod.
  1. Envoyez une requête au point de terminaison hello-web:8080 pour vérifier que le trafic entrant est autorisé :
wget -qO- --timeout=2 http://hello-web:8080

Résultat :

If you don't see a command prompt, try pressing enter. / # wget -qO- --timeout=2 http://hello-web:8080 Hello, world! Version: 1.0.0 Hostname: hello-web-8b44b849-k96lh / #
  1. Saisissez exit et appuyez sur Entrée pour quitter le shell.

  2. Vous allez maintenant exécuter un autre pod. Celui-ci portera le même nom, mais utilisera le libellé app=other, qui ne correspond pas au podSelector défini dans la règle de réseau active. Ce pod ne doit pas pouvoir accéder à l'application hello-web.

kubectl run test-1 --labels app=other --image=alpine --restart=Never --rm --stdin --tty
  1. Envoyez une requête au point de terminaison hello-web:8080 pour vérifier que le trafic entrant n'est pas autorisé :
wget -qO- --timeout=2 http://hello-web:8080

La requête expire.

Résultat :

If you don't see a command prompt, try pressing enter. / # wget -qO- --timeout=2 http://hello-web:8080 wget: download timed out / #
  1. Saisissez exit et appuyez sur Entrée pour quitter le shell.

Limiter le trafic sortant des pods

Vous pouvez limiter le trafic sortant ("egress", ou de sortie) comme vous l'avez fait pour le trafic entrant. Toutefois, pour interroger des noms d'hôte internes (comme hello-web) ou des noms d'hôte externes (comme www.example.com), vous devez autoriser la résolution DNS dans vos règles de réseau de sortie. Le trafic DNS transite par le port 53, et utilise les protocoles TCP et UDP.

Créons un fichier manifeste NetworkPolicy foo-allow-to-hello.yaml. Ce fichier définit une règle qui permet aux pods contenant l'étiquette app: foo de communiquer avec les pods contenant l'étiquette app: hello, quel que soit le numéro de port. Il permet aussi aux pods contenant l'étiquette app: foo de communiquer avec tous les ordinateurs connectés au port 53 à l'aide du protocole UDP, qui est utilisé pour la résolution DNS. Si le port DNS n'est pas ouvert, vous ne pourrez pas résoudre les noms d'hôte.

  1. Dans nano, créez et ouvrez un fichier nommé foo-allow-to-hello.yaml à l'aide de la commande suivante :
nano foo-allow-to-hello.yaml
  1. Une fois nano ouvert, collez la commande suivante dans le fichier foo-allow-to-hello.yaml :
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: foo-allow-to-hello spec: policyTypes: - Egress podSelector: matchLabels: app: foo egress: - to: - podSelector: matchLabels: app: hello - to: ports: - protocol: UDP port: 53
  1. Appuyez sur Ctrl+O, puis sur Entrée pour enregistrer les modifications.

  2. Appuyez sur Ctrl+X pour quitter l'éditeur de texte nano.

  3. Créez une règle de sortie :

kubectl apply -f foo-allow-to-hello.yaml
  1. Vérifiez que la règle a bien été créée :
kubectl get networkpolicy

Résultat :

NAME POD-SELECTOR AGE foo-allow-to-hello app=foo 7s hello-allow-from-foo app=hello 5m

Valider la règle de sortie

  1. Déployez une nouvelle application Web appelée hello-web-2, puis exposez-la en interne dans le cluster :
kubectl run hello-web-2 --labels app=hello-2 \ --image=gcr.io/google-samples/hello-app:1.0 --port 8080 --expose
  1. Exécutez un pod temporaire contenant l'étiquette app=foo et affichez une invite de shell à l'intérieur du conteneur :
kubectl run test-3 --labels app=foo --image=alpine --restart=Never --rm --stdin --tty
  1. Vérifiez que le pod peut établir des connexions avec hello-web:8080 :
wget -qO- --timeout=2 http://hello-web:8080

Résultat :

If you don't see a command prompt, try pressing enter. / # wget -qO- --timeout=2 http://hello-web:8080 Hello, world! Version: 1.0.0 Hostname: hello-web / #
  1. Vérifiez que le pod ne peut pas établir de connexion avec hello-web-2:8080 :
wget -qO- --timeout=2 http://hello-web-2:8080

Cela ne fonctionne pas, car aucune des règles que vous avez définies n'autorise le trafic vers les pods contenant l'étiquette app: hello-2.

  1. Vérifiez que le pod ne peut pas établir de connexion vers des sites Web externes tels que www.example.com :
wget -qO- --timeout=2 http://www.example.com

Cela ne fonctionne pas, car les règles de réseau n'autorisent pas le trafic HTTP externe (port TCP 80).

  1. Saisissez exit et appuyez sur Entrée pour quitter le shell.

Cliquez sur Vérifier ma progression pour valider l'objectif. Exécuter des applications de serveur Web

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

Copyright 2020 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.