Se connecter à Cloud SQL pour SQL Server à partir de Cloud Run

Découvrez comment déployer un exemple d'application sur Cloud Run connecté à une instance SQL Server à l'aide de la console Google Cloud et d'une application cliente.

En supposant que vous réalisiez toutes les étapes dans un délai raisonnable, les ressources créées dans ce guide de démarrage rapide coûtent généralement moins d'un dollar (USD).

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. Activez les APIs Cloud nécessaires pour exécuter un exemple d'application Cloud SQL sur Cloud Run.

    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 Cloud Run
    • API Container Registry
    • API Cloud Build
    • API Service Networking

    Cliquez sur le bouton suivant pour ouvrir Cloud Shell, qui fournit un accès en ligne de commande à vos Google Cloud ressources 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 suivante à l'aide de Cloud Shell :

    gcloud services enable compute.googleapis.com sqladmin.googleapis.com run.googleapis.com \
    containerregistry.googleapis.com cloudbuild.googleapis.com servicenetworking.googleapis.com

    Cette commande active les API suivantes :

    • API Compute Engine
    • API Cloud SQL Admin
    • API Cloud Run
    • API Container Registry
    • API Cloud Build
    • API Service Networking

Configurer Cloud SQL

Créer une instance Cloud SQL

Adresse IP publique

Cloud Run ne permet pas de se connecter à Cloud SQL pour SQL Server via une adresse IP publique. Utilisez plutôt une adresse IP privée.

Adresse IP privée

Allouer une plage d'adresses IP et créer une connexion privée pour configurer l'accès aux services privés pour Cloud SQL

  1. Dans la console Google Cloud, accédez à la page Réseaux VPC.

    Accéder aux réseaux VPC

  2. Sélectionnez le réseau VPC default.
  3. Sélectionnez l'onglet Connexion au service privé.
  4. Sélectionnez l'onglet Plages d'adresses IP allouées pour les services.
  5. Cliquez sur Allouer une plage d'adresses IP.
  6. Dans le champ Nom de la plage allouée, spécifiez google-managed-services-default.
  7. Sélectionnez l'option Automatique pour la plage d'adresses IP, puis définissez la longueur du préfixe sur 16.
  8. Cliquez sur Allouer pour créer la plage allouée.
  9. Sélectionnez l'onglet Connexions privées aux services pour le réseau VPC default.
  10. Cliquez sur Créer une connexion pour créer une connexion privée entre votre réseau et un producteur de services.
  11. Pour Allocation attribuée, sélectionnez google-managed-services-default.
  12. Cliquez sur Connecter pour créer la connexion.

Créer une instance avec une adresse IP privée et SSL activé

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

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur Create instance (Créer une instance).
  3. Cliquez sur Choisir SQL Server.
  4. Assurez-vous que l'édition Cloud SQL Enterprise Plus est sélectionnée pour votre instance.
  5. Dans le champ ID d'instance, saisissez quickstart-instance.
  6. Dans le champ Mot de passe, entrez le mot de passe de l'utilisateur sqlserver. Enregistrez ce mot de passe pour une utilisation ultérieure.
  7. Dans la section Sélectionner la disponibilité régionale et zonale, sélectionnez Zone unique.
  8. Cliquez sur le menu Afficher les options de configuration.
  9. Développez le nœud Configuration de la machine.
  10. Dans la région Configurations de machines, sélectionnez la configuration 4 vCPU, 32 Go.
  11. Développez le nœud Connexions.
  12. Décochez la case Adresse IP publique pour créer une instance qui dispose uniquement d'une adresse IP privée.
  13. Cochez la case Adresse IP privée.
  14. Dans le menu Réseau, sélectionnez Par défaut.
  15. Cliquez sur Créer une instance, puis attendez que l'instance s'initialise et démarre.
  16. Cliquez sur Connexions.
  17. Dans la section Sécurité, sélectionnez Autoriser uniquement les connexions SSL pour activer les connexions SSL.
  18. Dans la boîte de dialogue Autoriser uniquement les connexions SSL, cliquez sur Enregistrer et redémarrer, puis attendez que l'instance redémarre.

Allouer une plage d'adresses IP et créer une connexion privée pour configurer l'accès aux services privés pour Cloud SQL

  1. Exécutez la commande gcloud compute addresses create pour allouer une plage d'adresses IP.

    gcloud compute addresses create google-managed-services-default \
    --global --purpose=VPC_PEERING --prefix-length=16 \
    --description="peering range for Google" --network=default
  2. Exécutez la commande gcloud services vpc-peerings connect pour créer une connexion privée à la plage d'adresses IP allouée. Remplacez YOUR_PROJECT_ID par l'ID de votre projet.

    gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-default --network=default \
    --project=YOUR_PROJECT_ID

Créer une instance avec une adresse IP privée et SSL activé

  1. Avant d'exécuter la commande comme suit, remplacez DB_ROOT_PASSWORD par le mot de passe de votre utilisateur de base de données.

  2. Vous pouvez également modifier les valeurs des paramètres suivants :

    • --database-version : type et version du moteur de base de données. Si aucune valeur n'est spécifiée, la valeur par défaut de l'API est utilisée. Consultez la documentation de gcloud database versions pour afficher les versions actuellement disponibles.
    • --cpu : nombre de cœurs dans la machine.
    • --memory : valeur entière indiquant la quantité de mémoire souhaitée sur la machine. Une unité de taille peut être fournie (par exemple, 3072 Mo ou 9 Go). Si aucune unité n'est spécifiée, la valeur par défaut est Go.
    • --region : emplacement régional de l'instance (par exemple, asia-east1, us-east1). Si aucune opération n'est spécifiée, la valeur par défaut (us-central1) est utilisée. Consultez la liste complète des régions.

    Exécutez la commande gcloud sql instances create pour créer une instance Cloud SQL avec une adresse IP privée.

    gcloud sql instances create quickstart-instance \
    --database-version=SQLSERVER_2017_STANDARD \
     --cpu=1 \
     --memory=4GB \
     --region=us-central \
     --root-password=DB_ROOT_PASSWORD \
     --no-assign-ip \
    --network=default
  3. Exécutez la commande gcloud sql instances patch pour activer l'option Autoriser uniquement les connexions SSL pour l'instance.

  4. gcloud sql instances patch quickstart-instance --require-ssl

Créer une base de données

  1. Dans Google Cloud Console, 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.

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

Déployer l'exemple d'application sur Cloud Run

Configurer un compte de service Cloud Run

Configurez le compte de service utilisé par Cloud Run afin de lui attribuer le rôle Client Cloud SQL qui inclut les autorisations nécessaires pour se connecter à Cloud SQL.
  1. Dans la console Google Cloud, accédez à la page IAM.

    Accéder à IAM

  2. Pour le compte de service nommé Compte de service Compute Engine par défaut, cliquez sur l'icône en forme de crayon.
  3. Cliquez sur AJOUTER UN AUTRE RÔLE.
  4. Ajoutez le rôle nommé Client Cloud SQL.
  5. Cliquez sur Enregistrer.
  1. Exécutez la commande gcloud suivante pour obtenir la liste des comptes de service de votre projet :
    gcloud iam service-accounts list
  2. Copiez l'adresse e-mail associée au compte de service Compute Engine.
  3. Exécutez la commande suivante pour attribuer le rôle Client Cloud SQL au compte de service Compute Engine :
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
      --role="roles/cloudsql.client"

Configurer un exemple d'application Cloud SQL

Avec une instance, une base de données et un compte de service Cloud SQL disposant d'autorisations client, vous pouvez maintenant configurer un exemple d'application pour qu'il se connecte à votre instance Cloud SQL.

Adresse IP publique

Cloud Run ne permet pas de se connecter à Cloud SQL pour SQL Server via une adresse IP publique. Utilisez plutôt une adresse IP privée.

Adresse IP privée

Pour les chemins d'accès des adresses IP privées, votre application se connecte directement à votre instance via l'accès au VPC sans serveur. Cette méthode utilise un socket TCP pour se connecter directement à l'instance Cloud SQL sans utiliser le proxy d'authentification Cloud SQL.

Créer et télécharger le certificat de serveur SSL

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

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur quickstart-instance pour afficher la page Présentation.
  3. Cliquez sur l'onglet Connexions.
  4. Dans la section Sécurité, cliquez sur Télécharger les certificats pour télécharger le certificat de serveur SSL.

Créer une connexion VPC sans serveur pour les connexions à l'instance via une adresse IP privée

  1. Dans la console Google Cloud, accédez à la page Accès au VPC sans serveur - Créer un connecteur.

    Créer un connecteur VPC sans serveur

  2. Saisissez quickstart-connector pour le Nom.
  3. Sélectionnez Valeur par défaut dans le menu déroulant Réseau.
  4. Sélectionnez Plage d'adresses IP personnalisée dans le menu déroulant Sous-réseau.
  5. Saisissez 10.8.0.0 dans la zone de saisie Plage d'adresses IP.
  6. Cliquez sur Créer.

Créer un exemple d'application avec le certificat de serveur SSL

  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 Ouvrir dans 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.
  3. Importez le fichier de certificat du serveur SSL dans le dossier certs.
    1. Faites un clic droit sur le dossier certs dans l'éditeur Cloud Shell, puis sélectionnez Importer des fichiers.
    2. Sélectionnez le fichier suivant sur votre ordinateur local : server-ca.pem.
    3. Une fois le fichier de certificat de serveur SSL sélectionné, cliquez sur Ouvrir pour terminer l'importation du fichier dans l'éditeur Cloud Shell.
  4. Exécutez la commande suivante dans Cloud Shell pour créer un conteneur Docker et le publier dans Container Registry. Remplacez YOUR_PROJECT_ID par l'ID de votre projet.
    gcloud builds submit --tag gcr.io/YOUR_PROJECT_ID/run-sql

Créer et télécharger le certificat de serveur SSL

Pour les utilisateurs de Java, le connecteur fournit déjà une connexion sécurisée. Il n'est donc pas nécessaire de créer et de télécharger le certificat de serveur SSL.

Créer une connexion VPC sans serveur pour les connexions à l'instance via une adresse IP privée

  1. Dans la console Google Cloud, accédez à la page Accès au VPC sans serveur - Créer un connecteur.

    Créer un connecteur VPC sans serveur

  2. Saisissez quickstart-connector pour le Nom.
  3. Sélectionnez Valeur par défaut dans le menu déroulant Réseau.
  4. Sélectionnez Plage d'adresses IP personnalisée dans le menu déroulant Sous-réseau.
  5. Saisissez 10.8.0.0 dans la zone de saisie Plage d'adresses IP.
  6. Cliquez sur Créer.

Créer un exemple d'application

  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 Ouvrir dans 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.
  3. Exécutez la commande suivante dans Cloud Shell pour créer un conteneur Docker et le publier dans Container Registry. Remplacez YOUR_PROJECT_ID par l'ID de votre projet.
    mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \
     -Dimage=gcr.io/YOUR_PROJECT_ID/run-sql -DskipTests

Créer et télécharger le certificat de serveur SSL

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

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur quickstart-instance pour afficher la page Présentation.
  3. Cliquez sur l'onglet Connexions.
  4. Dans la section Sécurité, cliquez sur Télécharger les certificats pour télécharger le certificat de serveur SSL.

Créer une connexion VPC sans serveur pour les connexions à l'instance via une adresse IP privée

  1. Dans la console Google Cloud, accédez à la page Accès au VPC sans serveur - Créer un connecteur.

    Créer un connecteur VPC sans serveur

  2. Saisissez quickstart-connector pour le Nom.
  3. Sélectionnez Valeur par défaut dans le menu déroulant Réseau.
  4. Sélectionnez Plage d'adresses IP personnalisée dans le menu déroulant Sous-réseau.
  5. Saisissez 10.8.0.0 dans la zone de saisie Plage d'adresses IP.
  6. Cliquez sur Créer.

Créer un exemple d'application avec le certificat de serveur SSL

  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 Ouvrir dans 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.
  3. Importez le fichier de certificat du serveur SSL dans le dossier certs.
    1. Faites un clic droit sur le dossier certs dans l'éditeur Cloud Shell, puis sélectionnez Importer des fichiers.
    2. Sélectionnez le fichier suivant sur votre ordinateur local : server-ca.pem.
    3. Une fois le fichier de certificat de serveur SSL sélectionné, cliquez sur Ouvrir pour terminer l'importation du fichier dans l'éditeur Cloud Shell.
  4. Exécutez la commande suivante dans Cloud Shell pour créer un conteneur Docker et le publier dans Container Registry. Remplacez YOUR_PROJECT_ID par l'ID de votre projet.
    gcloud builds submit --tag gcr.io/YOUR_PROJECT_ID/run-sql

Déployer l'application exemple

Les étapes permettant de déployer l'exemple sur Cloud Run dépendent du type d'adresse IP que vous avez attribué à votre instance Cloud SQL.

Adresse IP publique

Cloud Run ne permet pas de se connecter à Cloud SQL pour SQL Server via une adresse IP publique. Utilisez plutôt une adresse IP privée.

Adresse IP privée

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

    Accédez à Cloud Run

  2. Cliquez sur Create container (Créer un conteneur) et sélectionnez Service (Service) pour afficher le formulaire Create service (Créer un service).

  3. Conservez l'option de déploiement à partir d'une image de conteneur existante, puis cliquez sur Sélectionner pour spécifier l'image de conteneur gcr.io/YOUR_PROJECT_ID/run-sql que vous avez créée à l'étape précédente.
  4. Saisissez quickstart-service dans le champ Nom du service.
  5. Dans la section Authentification, sélectionnez l'option Allow unauthenticated invocations. Si vous ne disposez pas des autorisations nécessaires (rôle "Administrateur Cloud Run") pour sélectionner cette option, le service sera déployé et nécessitera une authentification.
  6. Développez la section Conteneur, variables et secrets, connexions, sécurité.
  7. Créez les variables d'environnement suivantes en cliquant sur Ajouter une variable sous Variables d'environnement. Définissez les valeurs des variables d'environnement comme suit :
    • Définissez DB_NAME sur quickstart-db.
    • Définissez DB_USER sur sqlserver.
    • Définissez DB_PASS sur le mot de passe de l'utilisateur sqlserver que vous avez créée dans la section Créer une instance Cloud SQL.
    • INSTANCE_CONNECTION_NAME : défini sur le nom de connexion de votre instance, qui apparaît sur la page Instances Cloud SQL de la console Google Cloud.
    • Définissez DB_PORT sur 1433.
    • Définissez INSTANCE_HOST sur l'adresse IP privée de votre instance, comme indiqué sur la page Présentation de l'instance Cloud SQL.
    • Définissez DB_ROOT_CERT sur certs/server-ca.pem.
    • Définissez PRIVATE_IP sur TRUE.
  8. Activez la connexion à Cloud SQL :

    1. Cliquez sur Connexions.
    2. Cliquez sur Ajouter une connexion dans la section Connexions Cloud SQL.
    3. Sélectionnez l'instance Cloud SQL quickstart-instance que vous avez créée précédemment.
    4. Sélectionnez default: Serverless VPC Access Connector "quickstart-connector" dans le menu déroulant Réseau VPC.
    5. Sélectionnez l'option Acheminer tout le trafic via le connecteur VPC.
  9. Cliquez sur Créer pour terminer la création du service Cloud Run.

  10. Une fois le service Cloud Run déployé, la page Informations sur le service affiche l'URL du service en cours d'exécution en haut de page. Cliquez sur le lien URL pour afficher l'exemple d'application déployé sur Cloud Run et connecté à Cloud SQL.

    Afficher l'exemple d'application déployé

  1. Avant d'exécuter la commande suivante, effectuez les remplacements suivants :

    • YOUR_PROJECT_ID par votre ID de projet.
    • INSTANCE_CONNECTION_NAME par le nom de connexion de votre instance, qui apparaît sur la page Instances Cloud SQL de la console Google Cloud.

    • DB_PASS par le mot de passe de l'utilisateur sqlserver que vous avez créé dans la section Créer une instance Cloud SQL.
    • INSTANCE_HOST par l'adresse IP privée de l'instance. Accédez à la page Présentation de l'instance Cloud SQL pour afficher l'adresse IP privée de l'instance.

    Exécutez la commande gcloud run deploy comme suit pour créer le service Cloud Run :

    gcloud run deploy run-sql --image gcr.io/YOUR_PROJECT_ID/run-sql \
      --add-cloudsql-instances INSTANCE_CONNECTION_NAME \
      --vpc-connector="quickstart-connector" --vpc-egress=all-traffic \
      --set-env-vars DB_NAME="quickstart-db" \
      --set-env-vars DB_USER="sqlserver" \
      --set-env-vars DB_PASS="DB_PASS" \
      --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \
      --set-env-vars DB_PORT="1433" \
      --set-env-vars INSTANCE_HOST="INSTANCE_HOST" \
      --set-env-vars DB_ROOT_CERT="certs/server-ca.pem" \
      --set-env-vars PRIVATE_IP="TRUE"

    Les utilisateurs Java doivent exécuter la commande gcloud run deploy sans les options INSTANCE_HOST, DB_ROOT_CERT et PRIVATE_IP --set-env-vars, comme suit, pour créer le service Cloud Run, car le connecteur Java fournit déjà une connexion sécurisée :

    gcloud run deploy run-sql --image gcr.io/YOUR_PROJECT_ID/run-sql \
      --add-cloudsql-instances INSTANCE_CONNECTION_NAME \
      --vpc-connector="quickstart-connector" --vpc-egress=all-traffic \
      --set-env-vars DB_NAME="quickstart-db" \
      --set-env-vars DB_USER="sqlserver" \
      --set-env-vars DB_PASS="DB_PASS" \
      --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \
      --set-env-vars DB_PORT="1433"

    Saisissez la valeur numérique fournie pour us-central1 lorsque vous êtes invité à spécifier une région.

  2. Lorsque vous voyez un message de confirmation indiquant que le service Cloud Run a été déployé, cliquez sur le lien URL du service dans le message pour afficher l'exemple d'application Cloud Run connecté à Cloud SQL.

    Afficher l'exemple d'application déployé

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 Cloud Run.

    Accédez à Cloud Run

  6. Cochez la case à côté du nom du service quickstart-service.
  7. Cliquez sur Supprimer en haut de la page Cloud Run.

Étapes de nettoyage facultatives

Si vous n'utilisez pas le rôle Client Cloud SQL que vous avez attribué au compte de service Compute Engine, vous pouvez le supprimer.

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

    Accéder à IAM

  2. Cliquez sur l'icône de modification (en forme de crayon) pour le compte IAM nommé Compte de service Compute Engine par défaut.
  3. Supprimez le rôle Client Cloud SQL.
  4. Cliquez sur Enregistrer.

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 Cloud Run
    • API Container 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 SQL Server pour votre instance Cloud SQL.

Pour en savoir plus sur la tarification, consultez la page Tarifs de Cloud SQL pour SQL Server.

En savoir plus :

  • Configurez votre instance Cloud SQL avec une adresse IP publique.
  • Configurez votre instance Cloud SQL avec une adresse IP privée.

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