Dans cet atelier, vous allez paramétrer des informations de configuration chiffrées et non chiffrées. Les informations de configuration chiffrées sont stockées sous forme de secrets. Les informations de configuration non chiffrées sont stockées sous forme de ConfigMaps.
Cette approche permet d'ajouter ces informations aux codebases sans les coder en dur. Les identifiants (par exemple, les clés API) stockés dans les secrets ne doivent jamais transiter dans des dépôts de code tels que GitHub (sauf s'ils ont été préalablement chiffrés, auquel cas il est tout de même conseillé de les conserver séparément).
Objectifs
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :
Créer des secrets avec la commande kubectl et des fichiers manifestes
Créer des ConfigMaps avec la commande kubectl et des fichiers manifestes
Utiliser les secrets de conteneurs à l'aide de variables d'environnement ou de volumes installés
Utiliser les ConfigMaps de conteneurs à l'aide de variables d'environnement ou de volumes installés
Mettre en place l'atelier
Accéder à Qwiklabs
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.
Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.
Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.
Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.
Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.
Cliquez sur Ouvrir la console Google.
Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
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.
Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".
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 :
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 :
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 : Utiliser des secrets
Dans cette tâche, vous allez authentifier des conteneurs à l'aide de Google Cloud afin d'accéder aux services Google Cloud. Vous allez configurer un sujet et un abonnement Cloud Pub/Sub, essayer d'accéder au sujet Cloud Pub/Sub depuis un conteneur exécuté dans GKE et constater le refus de la demande d'accès.
Pour accéder au sujet Cloud Pub/Sub, créez des identifiants de compte de service et transmettez-les sous forme de secrets Kubernetes.
Configurer un compte de service sans autorisations
Dans la console Google Cloud, accédez au menu de navigation (), puis cliquez sur IAM et administration > Comptes de service.
Cliquez sur + Créer un compte de service.
Dans la zone de texte Nom du compte de service, saisissez no-permissions.
Cliquez sur Créer et continuer.
Cliquez sur Continuer, puis sur OK.
Trouvez le compte de service no-permissions dans la liste et copiez l'adresse e-mail associée dans un fichier texte. Vous y reviendrez plus tard.
Créer un cluster GKE
Spécifiez le compte de service que vous venez de créer dans ce nouveau cluster. Les comptes de service ont besoin d'autorisations particulières : celui-ci n'étant pas autorisé à accéder aux services Google Cloud, il ne pourra pas se connecter à l'application Cloud Pub/Sub de test que vous déploierez ultérieurement. Vous résoudrez ce problème plus tard dans l'atelier.
Dans Cloud Shell, saisissez la commande suivante afin de créer des variables d'environnement pour la zone Google Cloud et le nom du cluster, qui serviront ensuite à créer le cluster de cet atelier :
export my_zone={{{ project_0.default_zone | ZONE }}}
export my_cluster=standard-cluster-1
Configurez la complétion par tabulation dans l'outil de ligne de commande kubectl :
source <(kubectl completion bash)
Dans Cloud Shell, saisissez la commande suivante pour définir une variable d'environnement pour le nom du compte de service, dans laquelle [MY-SERVICE-ACCOUNT-EMAIL] sera l'adresse e-mail du compte de service que vous avez créé.
Déployer une application pour lire les sujets Cloud Pub/Sub
Vous allez créer un déploiement comportant un conteneur qui puisse lire les sujets Cloud Pub/Sub. Des autorisations spécifiques sont nécessaires pour s'abonner aux sujets Cloud Pub/Sub et les lire. Vous devez donc créer des identifiants pour le conteneur.
Utilisez le fichier manifeste de déploiement pubsub.yaml fourni.
Passez au répertoire qui contient les exemples de fichiers de l'atelier :
cd ~/ak8s/Secrets/
Déployez l'application :
kubectl apply -f pubsub.yaml
Une fois l'application déployée, exécutez la commande suivante pour interroger les pods :
kubectl get pods -l app=pubsub
Cette commande filtre la liste des pods et affiche uniquement ceux dont l'étiquette correspond à app: pubsub.
Résultat :
NAME READY STATUS RESTARTS AGE
pubsub-74d4d96ddb-lqkt8 0/1 CrashLoopBackOff 0 6s
Remarque : Vous devez patienter environ une minute. L'application démarre, mais ne va pas fonctionner.
Établissez à nouveau la liste des pods :
kubectl get pods -l app=pubsub
Résultat :
NAME READY STATUS RESTARTS AGE
pubsub-74d4d96ddb-lqkt8 0/1 Error 4 2m
Regardez l'état du pod. Il rencontre une erreur et a redémarré plusieurs fois.
Exécutez la commande suivante pour inspecter les journaux du pod :
kubectl logs -l app=pubsub
Le message d'erreur qui s'affiche à la fin du journal indique que l'application n'a pas les autorisations nécessaires pour interroger le service Cloud Pub/Sub.
StatusCode.PERMISSION_DENIED, User not authorized to perform this action.
Créer les identifiants du compte de service
Vous allez maintenant créer un autre compte de service et lui donner accès à l'abonnement Pub/Sub que l'application de test tente d'utiliser. Vous n'allez pas modifier le compte de service des nœuds de cluster GKE, mais générer une clé JSON pour le compte de service, puis la transmettre au pod de manière sécurisée via un Secret Kubernetes.
Dans la console Google Cloud, accédez au menu de navigation, puis cliquez sur IAM et administration > Comptes de service.
Cliquez sur + Créer un compte de service.
Dans la zone de texte Nom du compte de service, saisissez pubsub-app, puis cliquez sur Créer et continuer.
Dans la liste déroulante Sélectionnez un rôle, sélectionnez Pub/Sub > Abonné Pub/Sub .
Vérifiez que le rôle figure bien dans la liste, puis cliquez sur Continuer et sur OK.
Sur l'écran de présentation des comptes de service, cliquez sur les trois points à droite du compte de service pubsub-app, puis sélectionnez Gérer les clés.
Dans la liste déroulante, cliquez sur Add Key (Ajouter une clé), puis sélectionnez Create new key (Créer une clé).
Sélectionnez le type de clé JSON et cliquez sur Create (Créer).
Cela va lancer le téléchargement d'un fichier de clé JSON contenant les identifiants du compte de service sur votre ordinateur. Il apparaît dans la barre de téléchargement en bas de l'écran. Ce fichier de clé vous permettra de configurer l'exemple d'application pour l'authentifier auprès de l'API Cloud Pub/Sub.
Cliquez sur Fermer.
Trouvez la clé JSON que vous venez de télécharger sur votre disque dur et renommez-la credentials.json.
Importer des identifiants dans un secret
Cliquez sur les trois points () dans la barre d'outils Cloud Shell pour afficher des options supplémentaires.
Cliquez sur Importer pour transférer le fichier credentials.json enregistré sur votre ordinateur vers la VM Cloud Shell, puis cliquez sur Importer.
Dans Cloud Shell, saisissez la commande suivante pour vérifier que le fichier a bien été importé :
ls ~/
Vous devez voir le fichier d'identifiants importé et le répertoire de fichiers de l'atelier, que vous avez cloné plus tôt.
Pour enregistrer le fichier de clé credentials.json dans un secret Kubernetes nommé pubsub-key, exécutez la commande suivante :
Cette commande crée un secret nommé pubsub-key, qui comporte un fichier key.json renfermant le contenu de la clé privée que vous avez téléchargée depuis la console Google Cloud.
Supprimez le fichier credentials.json de votre ordinateur :
rm -rf ~/credentials.json
Configurer l'application avec le secret
Vous allez maintenant mettre à jour le déploiement pour intégrer les modifications suivantes :
Ajouter un volume à la spécification de pod. Ce volume contient le secret.
Installer le volume du secret dans le conteneur d'applications.
Définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS pour qu'elle renvoie au fichier de clé du volume monté secret.
La variable d'environnement GOOGLE_APPLICATION_CREDENTIALS est automatiquement reconnue par les bibliothèques clientes cloud. Dans cet atelier, il s'agit du client Cloud Pub/Sub pour Python.
Le fichier de déploiement mis à jour, pubsub-secret.yaml, vous est fourni.
Après quelques secondes, l'application doit récupérer ce message et l'afficher dans le flux de sortie.
Pour inspecter les journaux du pod déployé, exécutez la commande suivante :
kubectl logs -l app=pubsub
Le résultat doit ressembler à cet exemple.
Résultat :
Pulling messages from Pub/Sub subscription...
[2018-12-17 22:01:06.860378] Received message: ID=328977244395410 Data=b'Hello, world!'
[2018-12-17 22:01:06.860736] Processing: 328977244395410
[2018-12-17 22:01:09.863973] Processed: 328977244395410
Cliquez sur "Vérifier ma progression" pour valider l'objectif.
Utiliser des secrets
Tâche 2 : Utiliser des ConfigMaps
Les ConfigMaps lient les fichiers de configuration, les arguments de ligne de commande, les variables d'environnement, les numéros de port et d'autres artefacts de configuration aux conteneurs et aux composants système des pods au moment de l'exécution.
Grâce aux ConfigMaps, vous pouvez séparer les configurations des pods et des composants. Cependant, les ConfigMaps n'étant pas chiffrés, il est déconseillé de les utiliser avec des identifiants. C'est l'absence de chiffrement qui différencie les ConfigMaps des secrets. Ces derniers étant chiffrés, ils conviennent mieux à la gestion de données sensibles ou confidentielles telles que les identifiants.
Quant aux ConfigMaps, ils conviennent mieux à la gestion d'informations de configuration générales, comme les numéros de ports.
Utiliser la commande kubectl pour créer des ConfigMaps
Vous allez utiliser kubectl pour créer des ConfigMaps. Pour ce faire, vous allez appliquer le format kubectl create configmap [NAME] [DATA] et ajouter une option "file" (--from-file) ou "literal" (--from-literal).
Commencez par utiliser un littéral simple dans la commande kubectl suivante :
Créer des ConfigMaps à partir de fichiers manifestes
Vous pouvez aussi utiliser un fichier de configuration YAML pour créer un ConfigMap. Le fichier config-map-3.yaml contient une définition de ConfigMap appelée sample3. Plus tard dans l'atelier, ce ConfigMap vous servira à illustrer deux méthodes distinctes pour exposer les données renfermées dans un conteneur.
Désormais, vous disposez d'informations de configuration qui ne sont ni secrètes, ni chiffrées, mais strictement séparées de votre application et disponibles via votre cluster. Pour réaliser cette tâche, vous avez utilisé les ConfigMaps de trois manières différentes. Vous avez découvert plusieurs options, mais en pratique, vous serez surtout amené à utiliser l'approche faisant appel au fichier de configuration YAML. Les fichiers de configuration fournissent un enregistrement des valeurs que vous avez stockées, pour que vous puissiez facilement répéter le processus.
Nous allons ensuite voir comment accéder à ces informations depuis votre application.
Utiliser les ConfigMaps de conteneurs à l'aide de variables d'environnement
Pour accéder à des ConfigMaps depuis des conteneurs à l'aide de variables d'environnement, vous devrez ajouter un ou plusieurs éléments configMapKeyRefs à la définition de votre pod.
Le fichier pubsub-configmap.yaml est une nouvelle version du fichier de déploiement de démonstration de Cloud Pub/Sub. Le paramètre env: supplémentaire intégré à la fin du fichier permet d'importer des variables d'environnement du ConfigMap vers le conteneur.
Exécutez la commande suivante pour appliquer le fichier de configuration mis à jour :
kubectl apply -f pubsub-configmap.yaml
Votre application peut désormais accéder à une variable d'environnement nommée INSIGHTS et dont la valeur est testAllTheThings.
Pour accéder au shell de votre pod et vérifier que la valeur de la variable d'environnement est correcte, vous devez récupérer son nom. Exécutez la commande suivante pour obtenir le nom du pod :
kubectl get pods
Le résultat doit ressembler à cet exemple.
Résultat :
NAME READY STATUS RESTARTS AGE
pubsub-77df8f8c6-krfl2 1/1 Running 0 4m
Pour lancer la session de shell, exécutez la commande suivante en remplaçant [MY-POD-NAME] par le nom de votre pod :
kubectl exec -it [MY-POD-NAME] -- sh
Exemple :
kubectl exec -it pubsub-77df8f8c6-krfl2 -- sh
Pour afficher la liste des variables d'environnement, exécutez la commande suivante :
printenv
INSIGHTS=testAllTheThings doit apparaître dans la liste.
Pour quitter la session de shell, exécutez la commande suivante :
exit
Utiliser les ConfigMaps de conteneurs à l'aide de volumes installés
Vous pouvez conserver vos données ConfigMap dans un volume au lieu (ou en plus) de les stocker dans une variable d'environnement.
Dans ce déploiement, le ConfigMap nommé sample-3 que vous avez créé plus tôt est également ajouté à la spécification du pod en tant que volume config-3. Le volume config-3 est ensuite installé dans le conteneur, dans le chemin /etc/config. La méthode originale, où les ConfigMaps sont importés via des variables d'environnement, est également configurée.
Un nouveau fichier de déploiement nommé pubsub-configmap2.yaml vous est aussi fourni.
Reconnectez-vous à la session de shell du conteneur pour vous assurer que la valeur du ConfigMap est accessible. Les noms des pods ont changé. Exécutez la commande suivante pour obtenir le nom du pod :
kubectl get pods
Le résultat doit ressembler à cet exemple.
Résultat :
NAME READY STATUS RESTARTS AGE
pubsub-747cf8c545-ngsrf 1/1 Running 0 30s
pubsub-df6bc7b87-vb8cz 1/1 Terminating 0 4m
Pour lancer la session de shell, exécutez la commande suivante en remplaçant [MY-POD-NAME] par le nom de votre pod :
kubectl exec -it [MY-POD-NAME] -- sh
Exemple :
kubectl exec -it pubsub-747cf8c545-ngsrf -- sh
Accédez au dossier concerné :
cd /etc/config
Affichez tous les fichiers du dossier :
Répertoriez les noms de fichier servant de clés dans sample3.
ls
Résultat :
airspeed meme
Pour afficher le contenu de l'un des fichiers, exécutez la commande suivante :
cat airspeed
Résultat :
africanOrEuropean#
Remarque : Comme l'élément "airspeed" ne comportait pas de retour chariot, l'invite de commande (le symbole \#) apparaît à la fin de la valeur renvoyée.
Pour quitter le shell du conteneur, exécutez la commande suivante :
exit
Cliquez sur "Vérifier ma progression" pour valider l'objectif.
Utiliser des ConfigMaps
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.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
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.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
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.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
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.
Architecting with Google Kubernetes Engine : Utiliser les Secrets et les ConfigMaps de Google Kubernetes Engine
Durée :
0 min de configuration
·
Accessible pendant 60 min
·
Terminé après 60 min