Points de contrôle
Create required resources with the fully automated deployment
/ 100
Se connecter à Cloud SQL depuis une application dans Kubernetes Engine
GSP449
Présentation
Cet atelier vous montre comment facilement connecter une application dans Kubernetes Engine à une instance de Cloud SQL en utilisant le conteneur du proxy Cloud SQL comme conteneur side-car. Vous allez déployer un cluster Kubernetes Engine et une instance Postgres Cloud SQL et utiliser le conteneur du proxy Cloud SQL, afin qu'ils puissent communiquer entre eux.
Cet atelier vous explique comment utiliser un conteneur du proxy Cloud SQL pour vous connecter à une instance Cloud SQL. Le processus sera le même pour tout service géré par GCP nécessitant un accès à l'API.
Cet atelier a été conçu par les ingénieurs de GKE Helmsman pour vous aider à mieux comprendre l'utilisation de Cloud SQL à travers un conteneur de proxy. Cliquez ici pour visualiser cette démonstration sur Github. Nous vous invitons tous à enrichir nos ressources !
Les points essentiels sont :
-
Protéger votre base de données contre les accès non autorisés en utilisant un compte de service non privilégié sur les nœuds Kubernetes Engine.
-
Intégrer les identifiants d’un compte de service non privilégié à un conteneur exécuté sur Kubernetes Engine.
-
Faire en sorte que le proxy Cloud SQL prenne en charge la connexion à votre instance Cloud SQL et limite le partage d’informations relatives à vos infrastructures avec vos applications.
Comptes de service non privilégiés
Tous les nœuds Kubernetes Engine se voient attribuer le compte de service Compute Engine par défaut. Ce compte de service comporte des privilèges relativement élevés et peut accéder à de nombreux services GCP. Du fait de la configuration du cloud SDK Google Cloud, les logiciels que vous concevez devront utiliser les identifiants attribués à l’instance Compute Engine sur laquelle ils sont exécutés. Pour éviter d’accorder les privilèges du compte de service Compute Engine par défaut à tous vos conteneurs, vous allez devoir créer un compte de service possédant moins de privilèges, que vous utiliserez sur vos nœuds Kubernetes Engine. Vous créerez ensuite des comptes de service plus spécifiques, dont les privilèges seront aussi réduits, pour vos conteneurs.
Comptes de service avec privilèges dans les conteneurs
Voici les deux seuls moyens à travers lesquels vous pouvez acquérir des identifiants de compte de service :
- votre hôte bastion (ce qui est déconseillé)
- un fichier d’identifiants
Cet atelier va vous apprendre à intégrer un fichier d’identifiants à votre conteneur exécuté sur Kubernetes Engine afin d’accorder les privilèges nécessaires à votre application.
Proxy Cloud SQL
Le proxy Cloud SQL vous permet de décharger les tâches de création et de maintien de la connexion à votre instance Cloud SQL sur le processus du proxy Cloud SQL. Ainsi, les informations concernant votre connexion ne sont pas partagées avec votre application, ce qui garantit une meilleure gestion des codes secrets. Le proxy Cloud SQL intègre nativement Google en tant que conteneur Docker, qui peut être exécuté parallèlement au conteneur de votre application, dans le même pod Kubernetes Engine.
Architecture
L'application et son conteneur side-car sont déployés dans un pod Kubernetes (k8s) unique, s'exécutant sur le seul nœud du cluster Kubernetes Engine. Pour communiquer avec l'instance Cloud SQL le processus de proxy Cloud SQL écoute le port localhost.
Le fichier manifeste k8 crée un objet de déploiement unique comportant deux conteneurs, pgAdmin et le proxy Cloud SQL. Le cluster Kubernetes Engine comporte deux codes secrets : les informations de connexion de l'instance Cloud SQL et un fichier d'identifiants de clé du compte de service, tous deux utilisés lorsque les conteneurs du proxy Cloud SQL appellent l'API Cloud SQL.
L'application n'a pas besoin d'avoir plus d'informations sur le processus de connexion à Cloud SQL, ni d'être exposée à son API, car le processus du proxy de Cloud SQL prend en charge toute la démarche. Il est important de noter que le conteneur du proxy Cloud SQL est exécuté en tant que conteneur side-car dans le pod.
Prérequis
Avant de cliquer sur le bouton Start Lab (Démarrer l'atelier)
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Start Lab (Démarrer l'atelier), indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique Qwiklabs vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.
Conditions requises
Pour réaliser cet atelier, vous devez :
- avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
- disposer de suffisamment de temps pour réaliser l'atelier en une fois.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier.
Remarque : Si vous utilisez un appareil Chrome OS, exécutez cet atelier dans une fenêtre de navigation privée.
Démarrer l'atelier et se connecter à la console Google Cloud
-
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
- Le temps restant
- Les identifiants temporaires que vous devez utiliser pour cet atelier
- Des informations complémentaires vous permettant d'effectuer l'atelier
-
Cliquez sur Ouvrir la console Google. 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. -
Si nécessaire, copiez le nom d'utilisateur inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue Se connecter. Cliquez sur Suivant.
-
Copiez le mot de passe inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue de bienvenue. Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis dans le panneau de gauche. Ne saisissez pas vos identifiants Google Cloud Skills Boost. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés. -
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 aux essais offerts.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Activer Google Cloud Shell
Google Cloud Shell est une machine virtuelle qui contient des 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 offre un accès en ligne de commande à vos ressources GCP.
-
Dans la console GCP, dans la barre d'outils située en haut à droite, cliquez sur le bouton Ouvrir Cloud Shell.
-
Cliquez sur Continue (Continuez):
Il faut quelques instants pour mettre en service et se connecter à l'environnement. Lorsque vous êtes connecté, vous êtes déjà authentifié et le projet est défini sur votre PROJECT_ID. Par exemple:
gcloud est l'outil de ligne de commande associé à Google Cloud Platform. Pré-installé sur Cloud Shell, il est également compatible avec la saisie semi-automatique via la touche de tabulation.
Vous pouvez répertorier les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
Résultat :
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Pour répertorier les ID de projet, exécutez la commande suivante :
gcloud config list project
Résultat :
[core]
project = <ID_Projet>
Exemple de résultat :
[core]
project = qwiklabs-gcp-44776a13dea667a6
Définir votre région et votre zone
Certaines ressources Compute Engine sont hébergées dans des régions et des zones. Une région est un emplacement géographique spécifique où vous pouvez exécuter vos ressources. Chaque région se compose d'une ou plusieurs zones.
Exécutez la commande suivante pour définir la région et la zone associées à votre atelier (vous pouvez utiliser la région/zone qui vous convient le mieux) :
gcloud config set compute/region us-central1
gcloud config set compute/zone us-central1-a
Copiez la démo
gsutil cp gs://spls/gsp449/gke-cloud-sql-postgres-demo.tar.gz .
tar -xzvf gke-cloud-sql-postgres-demo.tar.gz
Accédez au répertoire suivant pour obtenir cette démonstration :
cd gke-cloud-sql-postgres-demo
Déploiement
Le déploiement est entièrement automatisé. Le script que vous allez déployer accepte les paramètres suivants, dans l'ordre :
- Un nom d'utilisateur pour votre instance Cloud SQL
- Un nom d'utilisateur pour la console pgAdmin
- USER_PASSWORD : mot de passe utilisé pour se connecter à l'instance Postgres
- PG_ADMIN_CONSOLE_PASSWORD : mot de passe utilisé pour se connecter à l'interface utilisateur pgAdmin
Vous pouvez créer n'importe quel nom d'utilisateur pour l'instance Cloud SQL et utiliser n'importe quelle adresse e-mail pour la console pgAdmin; l'exemple ici utilise "dbadmin" et votre email d'étudiant temporaire.
Enregistrez votre compte étudiant dans une variable:
PG_EMAIL=$(gcloud config get-value account)
Exécutez ce qui suit pour déployer le script et créer les 2 noms d'utilisateur; il vous sera demandé de créer un mot de passe pour dbadmin
et $PG_EMAIL
(votre compte student@qwiklabs.net) dans la sortie:
./create.sh dbadmin $PG_EMAIL
Les mots de passe devant à nouveau être utilisés dans cet atelier, il est inutile qu'ils soient complexes.
Pendant le déploiement, create.sh
exécutera les scripts suivants :
-
enable_apis.sh
: active l'API Kubernetes Engine et l'API Cloud SQL. -
postgres_instance.sh
: crée l'instance Cloud SQL et l'utilisateur Postgres supplémentaire. Étant donné que votre session gcloud arrivera à expiration pendant le délai nécessaire à la création d'une instance Cloud SQL, le script devra vérifier manuellement son achèvement. -
service_account.sh
: crée le compte de service pour le conteneur du proxy Cloud SQL et crée le fichier d'identifiants. -
cluster.sh
: crée le cluster Kubernetes Engine. -
configs_and_secrets.sh
: crée les codes secrets Kubernetes Engine et un fichier configMap contenant les identifiants et la chaîne de connexion pour l'instance Cloud SQL. -
pgadmin_deployment.sh
: crée le pod pgAdmin4.
Le déploiement de l'instance Cloud SQL peut prendre jusqu'à 10 minutes.
Utilisez ensuite l'équilibreur de charge pour exposer le pod afin de vous connecter à l'instance, puis supprimez les services une fois l'opération terminée pour éviter tout accès non autorisé.
Exécutez ce qui suit pour obtenir l'ID du pod:
POD_ID=$(kubectl --namespace default get pods -o name | cut -d '/' -f 2)
Exposez le pod via l'équilibreur de charge:
kubectl expose pod $POD_ID --port=80 --type=LoadBalancer
Obtenir l'adresse IP du service:
kubectl get svc
Sortie:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP <CLUSTER_IP> <none> 443/TCP 96m
<SVC_NAME LoadBalancer <CLUSTER_IP> <SVC_IP> 80:31789/TCP 45m
Exécutez la dernière commande à nouveau jusqu'à ce que vous voyiez une adresse IP externe pour le service pgAdmin.
Ouvrez un nouvel onglet et connectez-vous à pgAdmin dans votre navigateur à l'aide du pgAdmin <SVC_IP>
http://<SVC_IP >
Connectez-vous à l'interface utilisateur de pgAdmin à l'aide des éléments suivants:
* <PGADMIN_USERNAME> (votre compte temporaire student@qwiklabs.net) dans le champ "Email Address"
* <PG_ADMIN_CONSOLE_PASSWORD> que vous avez défini précédemment
Dans la console pgAdmin, cliquez sur Add New Server.
Sous l'onglet General, donnez un nom à votre serveur, puis cliquez sur l'onglet Connections.
Utilisez les <DATABASE_USER_NAME>(dbadmin) et <USER_PASSWORD>que vous avez créés précédemment pour vous connecter à 127.0.0.1:5432:
* Host name: 127.0.0.1
* Username: <DATABASE_USER_NAME>(dbadmin)
* Password: <USER_PASSWORD >
vous avez créé.
Cliquez Save.
Test Terminé Tâche
Cliquez sur Vérifier mes progrès pour vérifier la tâche que vous avez effectuée. Si vous avez créé avec succès les ressources requises avec le déploiement entièrement automatisé, vous obtiendrez un score d'évaluation.
Validation
La validation est entièrement automatisée. Le script de validation vérifie l'existence de l'instance Cloud SQL, du cluster Kubernetes Engine et du pod en cours d'exécution. Toutes ces ressources devraient avoir été créées une fois le script de déploiement terminé.
Dans Cloud Shell, validez ces trois déploiements en exécutant la requête suivante :
make validate
Le script accepte les paramètres suivants, dans l'ordre :
- INSTANCE_NAME : nom de l'instance Cloud SQL existante
Un résultat concluant ressemblera à ceci :
Cloud SQL instance exists
GKE cluster exists
pgAdmin4 Deployment object exists
Suppression
La suppression est entièrement automatisée. Le script de suppression efface toutes les ressources créées dans le script de déploiement.
Pour effectuer la suppression, exécutez la commande suivante :
make teardown
Le script accepte les paramètres suivants, dans l'ordre :
- INSTANCE_NAME : nom de l'instance Cloud SQL existante
teardown.sh
va exécuter les scripts suivants :
-
delete_resources.sh
: supprime toutes les ressources, à l'exception de l'instance Cloud SQL -
delete_instance.sh
: supprime l'instance Cloud SQL
Dépannage dans votre environnement
Lorsque vous créez une instance Cloud SQL, vous obtenez l'erreur suivante :
is the subject of a conflict: The instance or operation is not
in an appropriate state to handle the request.
Résolution
Il est impossible de réutiliser le nom d'une instance moins d'une semaine après l'avoir supprimée https://cloud.google.com/sql/docs/mysql/delete-instance.
Félicitations
Terminer votre quête
Cet atelier d'auto-formation fait partie de la quête Qwiklabs Google Kubernetes Engine Best Practices. Une quête est une série d'ateliers associés qui constituent une formation. Si vous terminez cette quête, vous obtenez le badge ci-dessus attestant de votre réussite. Vous pouvez rendre publics les badges que vous recevez et ajouter leur lien dans votre CV en ligne ou sur vos comptes de réseaux sociaux. Inscrivez-vous à cette quête pour obtenir immédiatement les crédits associés à cet atelier si vous l'avez suivi. Découvrez les autres quêtes Qwiklabs disponibles.
Étapes suivantes et informations supplémentaires
Consultez les consignes d'installation de Kubernetes pour déployer une application en conteneur pour des plates-formes multiples.
Terminer l'atelier
Une fois l'atelier terminé, cliquez sur End Lab (Terminer l'atelier). Qwiklabs supprime les ressources que vous avez utilisées, puis efface le compte.
Vous avez alors la possibilité de noter votre expérience au cours de l'atelier. Sélectionnez le nombre d'étoiles correspondant à votre note, saisissez un commentaire, puis cliquez sur Submit (Envoyer).
Voici à quoi correspond le nombre d'étoiles que vous pouvez attribuer à un atelier :
- 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 utiliser l'onglet Support.
Dernière mise à jour du manuel : 24 novembre 2020
Dernier test de l'atelier : 24 novembre 2020
Copyright 2020 Google LLC. Ce logiciel est distribué tel quel, sans garantie ni représentation pour quelque utilisation ou fin que ce soit. Votre utilisation de ce logiciel est régie par l'accord conclu avec Google.