arrow_back

Se connecter à Cloud SQL depuis une application dans Kubernetes Engine

Se connecter à Cloud SQL depuis une application dans Kubernetes Engine

1 heure 15 minutes 5 crédits

GSP449

Google Cloud – Ateliers adaptés au rythme de chacun

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 :

  1. votre hôte bastion (ce qui est déconseillé)
  2. 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.

architecture-diagram.png

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

  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
    • 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. 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 inclus dans le panneau Détails concernant l'atelier et collez-le dans la boîte de dialogue Se connecter. Cliquez sur Suivant.

  4. 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.
  5. 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.

Remarque : Vous pouvez afficher le menu qui contient la liste des produits et services Google Cloud en cliquant sur le menu de navigation en haut à gauche. Icône du menu de navigation

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.

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

    Icône Cloud Shell

  2. Cliquez sur Continue (Continuez):

    cloudshell_continue

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:

Terminal Cloud Shell

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 :

  1. enable_apis.sh : active l'API Kubernetes Engine et l'API Cloud SQL.
  2. 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.
  3. service_account.sh : crée le compte de service pour le conteneur du proxy Cloud SQL et crée le fichier d'identifiants.
  4. cluster.sh : crée le cluster Kubernetes Engine.
  5. 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.
  6. 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éé.

PgAdmin_settings.png

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.

     Créez les ressources requises avec le déploiement entièrement automatisé

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 :

  1. delete_resources.sh : supprime toutes les ressources, à l'exception de l'instance Cloud SQL

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

Enterprise-Customers.png

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.