arrow_back

Se connecter à Cloud SQL depuis une application dans Kubernetes Engine

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Se connecter à Cloud SQL depuis une application dans Kubernetes Engine

Lab 1 heure 15 minutes universal_currency_alt 5 crédits show_chart Intermédiaire
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP449

Google Cloud – Ateliers adaptés au rythme de chacun

Présentation

Dans cet atelier, vous allez apprendre à connecter en toute simplicité une application exécutée dans Kubernetes Engine à une instance Cloud SQL en utilisant un conteneur du proxy Cloud SQL en tant que 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.

Si cet atelier explique comment utiliser un conteneur du proxy Cloud SQL pour se connecter à une instance Cloud SQL, le processus sera le même pour tout service géré par Google Cloud nécessitant un accès à l'API.

Cet atelier a été conçu par les ingénieurs de GKE Helmsman pour vous permettre de comprendre comment utiliser Cloud SQL via un conteneur de proxy. Vous pouvez visualiser cette démonstration sur GitHub à la page gke-networking-demos. Toute contribution à l'enrichissement des ressources de cet atelier est la bienvenue.

Points abordés

Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :

  • 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 avec privilèges à un conteneur exécuté sur Kubernetes Engine
  • Déléguer au proxy Cloud SQL la gestion de la connexion à votre instance Cloud SQL afin de limiter 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 Google Cloud. En raison de la configuration de Cloud SDK, 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

Pour acquérir des identifiants de compte de service, vous n'avez que deux options :

  1. votre instance hôte (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

Vous pouvez déléguer au proxy Cloud SQL les tâches de création et de maintien de la connexion à votre instance Cloud SQL. Ainsi, les informations concernant votre connexion ne sont pas partagées avec votre application, ce qui garantit une meilleure gestion des 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. L'application communique avec l'instance Cloud SQL via le processus de proxy Cloud SQL (qui écoute sur 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 secrets : les informations de connexion de l'instance Cloud SQL et un fichier d'identifiants de clé de compte de service, tous deux utilisés par les conteneurs du proxy Cloud SQL lors des appels à 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 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.

Flux de l'application dans un cluster Kubernetes

Préparation

Avant de cliquer sur le bouton "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 Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique 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. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.

Pour réaliser cet atelier :

  • vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
Remarque : Ouvrez une fenêtre de navigateur en mode incognito/navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le temporaire étudiant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
  • vous disposez d'un temps limité ; une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier afin d'éviter que des frais supplémentaires ne vous soient facturés.

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 Cloud Shell

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. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.

  1. Cliquez sur Activer Cloud Shell Icône Activer Cloud Shell en haut de la console Google Cloud.

Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Le résultat contient une ligne qui déclare YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

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.

  1. (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
  1. Cliquez sur Autoriser.

  2. Vous devez à présent obtenir le résultat suivant :

Résultat :

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project = <ID_Projet>

Exemple de résultat :

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

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.

Pour en savoir plus et accéder à une liste complète des régions et zones disponibles, accédez à l'article Régions et 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 {{{ project_0.default_region | REGION }}} gcloud config set compute/zone {{{ project_0.default_zone | ZONE }}}

Copier la démonstration

  1. Exécutez la commande suivante pour copier les fichiers de cet atelier :
gsutil cp gs://spls/gsp449/gke-cloud-sql-postgres-demo.tar.gz . tar -xzvf gke-cloud-sql-postgres-demo.tar.gz
  1. Accédez au répertoire de cet atelier :
cd gke-cloud-sql-postgres-demo

Tâche 1 : 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
  1. Vous pouvez créer le nom d'utilisateur de votre choix pour l'instance Cloud SQL et utiliser n'importe quelle adresse e-mail dans la console pgAdmin. Dans cet exemple, nous avons choisi "dbadmin" et l'adresse e-mail d'élève temporaire qui vous a été attribuée.

  2. Enregistrez votre compte élève dans une variable :

PG_EMAIL=$(gcloud config get-value account)
  1. Exécutez la commande suivante pour déployer le script et créer deux noms d'utilisateur. Vous serez invité à créer un mot de passe pour dbadmin et $PG_EMAIL (votre compte student@qwiklabs.net) dans le résultat :
./create.sh dbadmin $PG_EMAIL

Les mots de passe devant à nouveau être utilisés dans cet atelier, faites en sorte qu'ils ne soient pas trop 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 Admin.
  • 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.
Remarque : Le déploiement de l'instance Cloud SQL peut prendre jusqu'à 10 minutes. Si vous rencontrez une erreur dans le script de déploiement automatisé, veillez à ce que les variables de région et de zone soient définies, puis exécutez à nouveau le script create.sh.

Exposez ensuite le pod à l'aide de l'équilibreur de charge pour vous connecter à l'instance, puis supprimez les services une fois le processus terminé afin d'éviter tout accès non autorisé.

  1. Exécutez la commande suivante pour obtenir l'ID du pod :
POD_ID=$(kubectl --namespace default get pods -o name | cut -d '/' -f 2)
  1. Exposez le pod via l'équilibreur de charge :
kubectl expose pod $POD_ID --port=80 --type=LoadBalancer
  1. Obtenez l'adresse IP du service :
kubectl get svc

Résultat :

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 443/TCP 96m SVC_NAME LoadBalancer 80:31789/TCP 45m Remarque : Exécutez à nouveau la commande précédente jusqu'à ce qu'une adresse IP externe s'affiche pour le service pgAdmin.
  1. Dans la console Cloud, accédez au menu de navigation > SQL, puis cliquez sur l'ID d'instance.

  2. Dans le menu de gauche, cliquez sur Connexions, puis sur Mise en réseau.

  3. Après avoir coché la case "Adresse IP publique", cliquez sur Ajouter un réseau.

  4. Nommez le réseau, puis activez l'accès public :

0.0.0.0/0
  1. Cliquez sur OK.

  2. Cliquez sur Enregistrer.

  3. Ouvrez un nouvel onglet et connectez-vous à pgAdmin dans votre navigateur à l'aide de l'adresse IP pgAdmin <SVC_IP> :

http://<SVC_IP>
  1. Connectez-vous à l'UI pgAdmin à l'aide des éléments suivants :
  • <PGADMIN_USERNAME> (votre compte student@qwiklabs.net temporaire) dans le champ "Adresse e-mail"
  • <PG_ADMIN_CONSOLE_PASSWORD> (le mot de passe défini précédemment)
Remarque : Si vous n'êtes pas certain de connaître le nom complet de votre compte élève, exécutez la commande gcloud config get-value account dans Cloud Shell et copiez le résultat.
  1. Revenez à la console Cloud et accédez à la page SQL. Cliquez sur l'onglet Présentation.

  2. Copiez l'adresse IP publique.

  3. Dans la console pgAdmin, cliquez sur Servers (Serveurs) dans le panneau de gauche, puis sur Add New Server (Ajouter un nouveau serveur).

  4. Dans l'onglet General (Général), attribuez un nom à votre serveur, puis cliquez sur l'onglet Connexion.

  5. Utilisez le nom d'utilisateur <DATABASE_USER_NAME> (dbadmin) et le mot de passe <USER_PASSWORD> que vous avez créés précédemment pour vous connecter à 127.0.0.1:5432 :

  • Host name (Nom d'hôte) : collez l'adresse IP publique que vous avez copiée
  • Username (Nom d'utilisateur) : <DATABASE_USER_NAME> (dbadmin)
  • Password (Mot de passe) : <USER_PASSWORD> que vous avez créé

Onglet &quot;Connexion&quot; avec les champs &quot;Nom d&#39;hôte/Adresse&quot;, &quot;Nom d&#39;utilisateur&quot; et &quot;Mot de passe&quot; remplis

  1. Cliquez sur Enregistrer.

Tester la tâche terminée

Cliquez sur Vérifier ma progression pour valider la tâche exécutée. Si vous avez réussi à créer les ressources requises avec le déploiement entièrement automatisé, vous recevez une note d'évaluation.

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

Tâche 2 : 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 utilise le paramètre INSTANCE_NAME (nom de l'instance Cloud SQL existante).

En cas de réussite, le résultat doit se présenter comme suit :

Cloud SQL instance exists GKE cluster exists pgAdmin4 Deployment object exists

Tâche 3 : Suppression

La suppression est entièrement automatisée. Le script de suppression efface toutes les ressources créées dans le script de déploiement.

  1. Pour effectuer la suppression, exécutez la commande suivante :
make teardown

Le script utilise le paramètre INSTANCE_NAME (nom de l'instance Cloud SQL existante).

teardown.sh exécute 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

Tâche 4 : 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.

Solution

Après avoir supprimé une instance, vous ne pouvez pas réutiliser son nom pendant un laps de temps pouvant aller jusqu'à une semaine. Pour en savoir plus, consultez Supprimer des instances.

Félicitations !

Vous avez connecté une application dans Kubernetes Engine à une instance Cloud SQL en utilisant un conteneur du proxy Cloud SQL en tant que conteneur side-car. Vous avez ensuite déployé un cluster Kubernetes Engine et une instance Postgres Cloud SQL, et utilisé le conteneur du proxy Cloud SQL pour leur permettre de communiquer entre eux.

Terminer votre quête

Cet atelier d'auto-formation fait partie de la quête Google Kubernetes Engine Best Practices. Une quête est une série d'ateliers associés qui constituent un parcours de formation. Si vous terminez cette quête, vous obtenez un badge 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. Découvrez toutes les quêtes disponibles dans le catalogue Google Cloud Skills Boost.

Étapes suivantes et informations supplémentaires

Consultez les consignes d'installation de Kubernetes pour déployer une application en conteneur pour de multiples plates-formes.

Dernière modification du manuel : 16 octobre 2023

Dernier test de l'atelier : 17 octobre 2023

Copyright 2024 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 sujette à l'accord conclu avec Google.