Se connecter à Cloud SQL pour PostgreSQL depuis Google Kubernetes Engine

Cette page explique comment déployer un exemple d'application sur Google Kubernetes Engine (GKE) connecté à une instance PostgreSQL à l'aide de la console Google Cloud et d'une application cliente. Les ressources créées dans ce guide de démarrage rapide coûtent généralement moins d'un dollar (USD), en supposant que vous effectuiez les étapes, y compris le nettoyage, en temps opportun.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Activer les API Google Cloud nécessaires à l'exécution d'un exemple d'application Cloud SQL sur GKE

    Console

    Cliquez sur Activer les API pour activer les API requises dans ce guide de démarrage rapide.

    Activer les API

    Cela aura pour effet d'activer les API suivantes :

    • API Compute Engine
    • API Cloud SQL Admin
    • API Google Kubernetes Engine
    • API Artifact Registry
    • API Cloud Build

    gcloud

    Cliquez sur le bouton suivant pour ouvrir Cloud Shell, qui fournit un accès en ligne de commande à vos ressources Google Cloud directement depuis le navigateur. Cloud Shell peut être utilisé pour exécuter les commandes gcloud présentées dans ce guide de démarrage rapide.

    Ouvrir Cloud Shell

    Exécutez la commande gcloud services enable comme suit à l'aide de Cloud Shell pour activer les API requises pour ce guide de démarrage rapide :

    gcloud services enable compute.googleapis.com sqladmin.googleapis.com \
         container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com

    Cette commande active les API suivantes :

    • API Compute Engine
    • API Cloud SQL Admin
    • API GKE
    • API Artifact Registry
    • API Cloud Build

Configurer Cloud SQL

Créer une instance Cloud SQL

Créer une base de données

Console

  1. Dans la console Google Cloud, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Sélectionnez quickstart-instance.
  3. Dans le menu de navigation SQL, sélectionnez Bases de données.
  4. Cliquez sur Créer une base de données.
    1. Dans le champ Nom de la base de données de la boîte de dialogue Nouvelle base de données, saisissez quickstart-db.
    2. Cliquez sur Créer.

gcloud

Exécutez la commande gcloud sql databases create pour créer une base de données.

gcloud sql databases create quickstart-db --instance=quickstart-instance

Créer un compte utilisateur

Console

  1. Dans la console Google Cloud, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Dans le menu de navigation SQL, sélectionnez Utilisateurs.
  4. Cliquez sur Ajouter un compte utilisateur.
  5. Sur la page Ajouter un compte utilisateur à l'instance instance_name, ajoutez les informations suivantes :
    • Nom d'utilisateur : défini sur quickstart-user
    • Mot de passe : spécifiez un mot de passe pour votre utilisateur de base de données. Notez-le pour l'utiliser dans une étape ultérieure de ce guide de démarrage rapide.
  6. Cliquez sur Ajouter.

gcloud

Avant d'exécuter la commande comme suit, remplacez DB_PASS par un mot de passe pour votre utilisateur de base de données. Notez-le pour l'utiliser dans une étape ultérieure de ce guide de démarrage rapide.

Exécutez la commande gcloud sql users create pour créer l'utilisateur.

gcloud sql users create quickstart-user \
--instance=quickstart-instance \
--password=DB_PASS

Les limites de longueur des noms d'utilisateur sont identiques pour Cloud SQL et pour PostgreSQL sur site.

Créer un cluster GKE

Console

  1. Dans Google Cloud Console, accédez à la page Google Kubernetes Engine.

    Accéder à Google Kubernetes Engine

  2. Cliquez sur Créer.
  3. Cliquez sur Configure (Configurer) pour GKE Autopilot.
  4. Dans le champ Name (Nom), spécifiez le nom du cluster comme gke-cloud-sql-quickstart.
  5. Cliquez sur Créer.

gcloud

Exécutez la commande gcloud container clusters create-auto pour créer le cluster.

gcloud container clusters create-auto gke-cloud-sql-quickstart \
    --region us-central1

Cloner une application exemple Cloud SQL dans l'éditeur Cloud Shell

Avec une instance Cloud SQL, une base de données et un cluster GKE, vous pouvez maintenant cloner et configurer un exemple d'application pour se connecter à votre instance Cloud SQL. Les étapes restantes de ce guide de démarrage rapide nécessitent l'utilisation des outils de ligne de commande gcloud et kubectl. Ces deux outils sont préinstallés dans Cloud Shell.

Go

  1. Dans l'éditeur Cloud Shell, ouvrez le code source de l'exemple d'application.
    Ouvrir l'éditeur Cloud Shell
  2. Dans la boîte de dialogue Open in Cloud Shell, cliquez sur Confirmer pour télécharger le code de l'exemple d'application et ouvrir le répertoire de l'exemple d'application dans l'éditeur Cloud Shell.

Java

  1. Dans l'éditeur Cloud Shell, ouvrez le code source de l'exemple d'application.
    Ouvrir l'éditeur Cloud Shell
  2. Dans la boîte de dialogue Open in Cloud Shell, cliquez sur Confirmer pour télécharger le code de l'exemple d'application et ouvrir le répertoire de l'exemple d'application dans l'éditeur Cloud Shell.

Node.js

  1. Dans l'éditeur Cloud Shell, ouvrez le code source de l'exemple d'application.
    Ouvrir l'éditeur Cloud Shell
  2. Dans la boîte de dialogue Open in Cloud Shell, cliquez sur Confirmer pour télécharger le code de l'exemple d'application et ouvrir le répertoire de l'exemple d'application dans l'éditeur Cloud Shell.

Python

  1. Dans l'éditeur Cloud Shell, ouvrez le code source de l'exemple d'application.
    Ouvrir l'éditeur Cloud Shell
  2. Dans la boîte de dialogue Open in Cloud Shell, cliquez sur Confirmer pour télécharger le code de l'exemple d'application et ouvrir le répertoire de l'exemple d'application dans l'éditeur Cloud Shell.

Activer le cluster GKE

Activez le cluster GKE que vous venez de créer comme cluster par défaut à utiliser pour les commandes restantes dans ce guide de démarrage rapide.

Exécutez la commande gcloud container clusters get-credentials comme suit pour activer le cluster GKE :
gcloud container clusters get-credentials gke-cloud-sql-quickstart \
  --region us-central1

Configurer un compte de service

Créez et configurez un compte de service Google Cloud pour GKE afin qu'il dispose du rôle Client Cloud SQL avec les autorisations nécessaires pour se connecter à Cloud SQL.
  1. Exécutez la commande gcloud iam service-accounts create comme suit pour créer un compte de service :
    gcloud iam service-accounts create gke-quickstart-service-account \
      --display-name="GKE Quickstart Service Account"
  2. Exécutez la commande gcloud projects add-iam-policy-binding comme suit pour ajouter le rôle Client Cloud SQL au compte de service Google Cloud que vous venez de créer. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/cloudsql.client"
  3. L'exemple d'application utilise la journalisation. Exécutez donc la commande gcloud projects add-iam-policy-binding comme décrit ci-dessous pour ajouter le rôle Rédacteur de journal au compte de service Google Cloud que vous venez de créer. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  4. Le compte de service doit être en mesure d'extraire des images du dépôt d'artefacts. Par conséquent, exécutez la commande
    gcloud projects add-iam-policy-binding comme suit pour ajouter le rôle Lecteur Artifact Registry au compte de service. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/artifactregistry.reader"
Créez un compte de service Kubernetes configuré pour accéder à Cloud SQL en le liant au compte de service Google Cloud à l'aide de la Workload Identity Federation for GKE.
  1. Créez un compte de service Kubernetes.
    1. Mettez à jour le fichier service-account.yaml dans l'éditeur Cloud Shell. Remplacez <YOUR-KSA-NAME> par ksa-cloud-sql.
    2. Exécutez la commande kubectl apply comme suit dans Cloud Shell :
      kubectl apply -f service-account.yaml
  2. Exécutez la commande gcloud iam service-accounts add-iam-policy-binding comme suit pour activer la liaison IAM du compte de service Google Cloud et du compte de service Kubernetes. Effectuez les remplacements suivants :
    • YOUR_PROJECT_ID par l'ID du projet.
    • YOUR_K8S_NAMESPACE par default, qui est l'espace de noms par défaut pour les clusters créés dans GKE.
    • YOUR_KSA_NAME correspond à ksa-cloud-sql.
    gcloud iam service-accounts add-iam-policy-binding \
      --role="roles/iam.workloadIdentityUser" \
      --member="serviceAccount:YOUR_PROJECT_ID.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \
      gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
  3. Exécutez la commande kubectl annotate comme suit pour annoter le compte de service Kubernetes avec une liaison IAM. Effectuez les remplacements suivants :
    • YOUR_KSA_NAME correspond à ksa-cloud-sql.
    • YOUR_PROJECT_ID par l'ID du projet.
    kubectl annotate serviceaccount \
      YOUR_KSA_NAME  \
      iam.gke.io/gcp-service-account=gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com

Configurer les secrets

Exécutez la commande kubectl create secret generic suivante afin de créer des secrets Kubernetes pour la base de données, l'utilisateur et le mot de passe de l'utilisateur que l'exemple d'application doit utiliser. Les valeurs de chaque secret sont basées sur les valeurs spécifiées dans les étapes précédentes de ce guide de démarrage rapide. Remplacez DB_PASS par le mot de passe du quickstart-user que vous avez créé à l'étape précédente Créer un utilisateur de ce guide de démarrage rapide.

kubectl create secret generic gke-cloud-sql-secrets \
  --from-literal=database=quickstart-db \
  --from-literal=username=quickstart-user \
  --from-literal=password=DB_PASS

Créer l'application exemple

Go

  1. Exécutez la commande gcloud artifacts repositories create suivante dans Cloud Shell pour créer un dépôt dans Artifact Registry nommé gke-cloud-sql-repo dans la même région que votre cluster. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Exécutez la commande gcloud builds submit comme suit dans Cloud Shell pour créer un conteneur Docker et le publier dans Artifact Registry. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Java

  1. Exécutez la commande gcloud artifacts repositories create suivante dans Cloud Shell pour créer un dépôt dans Artifact Registry nommé gke-cloud-sql-repo dans la même région que votre cluster. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Exécutez la commande mvn comme suit dans Cloud Shell pour créer un conteneur Docker et le publier dans Artifact Registry. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \
      -Dimage=us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql \
      -DskipTests -Djib.to.credHelper=gcloud

Node.js

  1. Exécutez la commande gcloud artifacts repositories create suivante dans Cloud Shell pour créer un dépôt dans Artifact Registry nommé gke-cloud-sql-repo dans la même région que votre cluster. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Exécutez la commande gcloud builds submit comme suit dans Cloud Shell pour créer un conteneur Docker et le publier dans Artifact Registry. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Python

  1. Exécutez la commande gcloud artifacts repositories create suivante dans Cloud Shell pour créer un dépôt dans Artifact Registry nommé gke-cloud-sql-repo dans la même région que votre cluster. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Exécutez la commande gcloud builds submit comme suit dans Cloud Shell pour créer un conteneur Docker et le publier dans Artifact Registry. Remplacez YOUR_PROJECT_ID par l'ID du projet.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Déployer l'exemple d'application

Effectuer un nettoyage

Pour éviter que les ressources utilisées sur cette page soient facturées sur votre compte Google Cloud, procédez comme suit :

  1. Dans Google Cloud Console, accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Sélectionnez l'instance quickstart-instance pour ouvrir la page Détails de l'instance.
  3. Dans la barre d'icônes en haut de la page, cliquez sur Supprimer.
  4. Dans la boîte de dialogue Supprimer l'instance, saisissez quickstart-instance puis cliquez sur Supprimer pour supprimer l'instance.
  5. Dans Google Cloud Console, accédez à la page Google Kubernetes Engine.

    Accéder à Google Kubernetes Engine

  6. Cochez la case à côté du nom du service gke-cloud-sql-quickstart.
  7. Cliquez sur le bouton Supprimer en haut de la page Google Kubernetes Engine.

Étapes de nettoyage facultatives

Si vous n'utilisez pas le compte de service Google Cloud que vous avez créé pour ce démarrage rapide, vous pouvez le supprimer.

  1. Dans la console Google Cloud, accédez à la page IAM.

    Accéder à IAM

  2. Cochez la case correspondant au compte IAM nommé gke-quickstart-service-account.
  3. Cliquez sur Supprimer, puis confirmez la suppression.

Si vous n'utilisez pas les API activées dans le cadre de ce démarrage rapide, vous pouvez les désactiver.

  • API activées dans ce guide de démarrage rapide :
    • API Compute Engine
    • API Cloud SQL Admin
    • API Google Kubernetes Engine
    • API Artifact Registry
    • API Cloud Build
  1. Dans Google Cloud Console, accédez à la page API.

    Accéder aux API

  2. Sélectionnez l'API que vous souhaitez désactiver, puis cliquez sur le bouton Désactiver l'API.

Étape suivante

En fonction de vos besoins, vous pouvez en apprendre plus sur la création d'instances Cloud SQL.

Vous pouvez également découvrir comment créer des utilisateurs et des bases de données PostgreSQL pour votre instance Cloud SQL.

Consultez également les informations tarifaires de Cloud SQL.

En savoir plus :

Vous pouvez également en savoir plus sur la connexion à une instance Cloud SQL à partir d'autres applications Google Cloud :