1. Introduction
Dernière mise à jour:04/05/2020
Réfléchir à la connexion
Il existe de nombreux types d'applications et de frameworks. Dans cet atelier de programmation, nous allons aborder la connexion à Cloud SQL depuis n'importe où. La possibilité de se connecter est activée en autorisant explicitement les adresses IP autorisées à se connecter. C'est sans doute l'option la moins sécurisée pour se connecter à une base de données Cloud SQL, mais c'est aussi l'option la plus simple à configurer et à utiliser.
Cela est parfois nécessaire en production, mais si vous pouvez éviter cela, il est préférable d'opter pour une alternative plus sécurisée (par exemple, en utilisant le proxy Cloud SQL). Cette configuration est particulièrement adaptée au développement et aux tests.
Objectifs de l'atelier
Cet atelier de programmation est très minimaliste. L'idée est de vous présenter les rouages du composant de connexion, sans trop penser à l'application elle-même. Dans un monde parfait, la connexion à Cloud SQL est semblable à la connexion à n'importe quelle autre instance d'une base de données SQL. Vous devriez donc pouvoir utiliser ce que vous avez créé dans cet atelier de programmation et l'appliquer à n'importe quelle application de production.
Les instructions comprendront une présentation de ce que vous pouvez faire dans la console GCP, ainsi que les commandes gcloud équivalentes à utiliser dans la CLI ou l'automatisation.
Les étapes individuelles sont les suivantes:
- Créez une instance Cloud SQL (ce tutoriel utilise Postgres, mais fonctionne de la même manière pour MySQL et SQL Server) et autorisez des adresses IP spécifiques autorisées à s'y connecter.
Prérequis
- Un compte GCP pour lequel vous disposez des autorisations nécessaires pour activer des API et créer des services
- Le client Postgres installé pour vérifier la connectivité (ou le client MySQL si vous souhaitez utiliser MySQL au lieu de Postgres)
2. Créer l'instance Cloud SQL
Cloud SQL est notre offre de bases de données relationnelles gérées. Il est compatible avec MySQL, PostgreSQL et SQL Server. Pour cet atelier de programmation, nous allons créer une base de données Postgres, mais les instructions sont similaires pour les trois.
Dans la console
Accédez à la page Cloud SQL, puis cliquez sur le bouton .
Comme je l'ai indiqué, la majeure partie de cet atelier de programmation est générique pour tous les types de code SQL, mais pour cet atelier, choisissez PostgreSQL.
- Attribuer un ID à votre instance
- Choisissez une région proche de l'endroit où vous vous trouvez
- Saisissez un mot de passe pour l'utilisateur par défaut (le nom d'utilisateur sera défini par défaut pour la base de données sélectionnée, par exemple
root
pour MySQL oupostgres
pour PostgreSQL) - Faites défiler la page vers le bas, puis cliquez sur
show configuration options
. - Développer la section
Connectivity
- Vérifiez que la case
Public IP
est cochée et que la casePrivate IP
n'est pas cochée - Cliquez sur le bouton .
- Obtenez l'adresse IP à partir de laquelle vous vous connectez. Le plus simple est de rechercher "Quelle est mon adresse IP" sur Google ? et que les résultats de la recherche contiennent votre adresse IP publique.
- Saisissez la spécification IP dans le champ "network" (réseau), attribuez-lui un nom si vous le souhaitez, puis cliquez sur "Done" (OK) dans le champ
New Network
. - Faites défiler vers le bas et cliquez sur Créer
Le démarrage de l'instance prend généralement quelques minutes.
Une fois l'instance créée, cliquez dessus dans la liste, puis copiez la valeur public IP address
indiquée sur la page de présentation, sous l'en-tête Connect to this instance
. Elle n'y sera visible qu'une fois l'instance entièrement créée, même si vous pouvez cliquer sur les détails avant qu'elle ne soit complètement instanciée.
Utiliser gcloud
Tout d'abord, vous devez récupérer l'adresse IP que vous souhaitez autoriser à vous connecter à l'instance Cloud SQL. Pour ce faire, le plus simple est d'ouvrir un navigateur et de rechercher "Quelle est mon adresse IP" ? et que les résultats de la recherche aient votre adresse IP publique. Toutefois, si vous n'êtes pas en mesure d'ouvrir un navigateur à partir de là où vous effectuez cette opération, vous pouvez utiliser un utilitaire comme dig
.
dig @resolver1.opendns.com ANY myip.opendns.com +short -4
Vous devrez spécifier la région la plus proche de votre emplacement pour votre instance Cloud SQL. Vous pouvez afficher la liste des régions en exécutant la commande suivante:
gcloud sql tiers list
Chaque niveau n'est disponible que dans certaines régions. Pour la partie du tutoriel consacrée à gcloud, nous allons simplement créer une micro-instance. Vous pouvez donc trouver les régions de ce niveau disponibles en exécutant spécifiquement cette commande (à condition d'avoir installé la commande grep):
gcloud sql tiers list | grep db-f1-micro
La commande permettant de créer l'instance se présente comme suit (n'oubliez pas de remplacer <AUTHORIZED_IP> par l'adresse IP que vous avez obtenue dans le navigateur ou via dig, et <REGION> par une adresse proche de vous, et un mot de passe pour l'utilisateur racine "postgres"):
gcloud sql instances create sql-codelab-00 --database-version=POSTGRES_11 --tier=db-f1-micro --region=<REGION> --authorized-networks=<AUTHORIZED_IP> --root-password=<PASSWORD>
Cette opération prend quelques minutes.
Une fois l'opération terminée, le PRIMARY_ADDRESS
de l'instance s'affiche dans le résultat de la CLI. Copiez-le pour l'étape suivante.
3. Tester la connexion et conclure
Pour vérifier que l'instance a été correctement configurée, exécutez la ligne de commande suivante à partir de la machine dont vous avez saisi l'adresse IP:
psql "host=<adresse IP copiée de l'étape précédente> port=5432 sslmode=disable user=postgres"
Indiquez ensuite le mot de passe utilisateur par défaut que vous avez défini lors de la création de l'instance Cloud SQL.
Félicitations ! Si tout s'est déroulé comme prévu, l'invite Postgres doit être affichée et vous pouvez exécuter des commandes sur votre base de données.
Et ensuite ?
Découvrez quelques-uns des ateliers de programmation...