Migration de base de données avec Cloud Seed.

Database migration with Cloud Seed

Pour commencer, nous allons d’abord explorer Cloud Seed.

Cloud Seed is an open-source collaboration between Google Cloud and GitLab to accelerate cloud adoption and app-modernization.

Cloud Seed makes it ridiculously simple to provision and consume Google Cloud services within the GitLab web UI.

Dans cet article, on verra comment utiliser Cloud Seed pour concevoir des pipelines de migrations de base de données sur Cloud SQL. À la base, Cloud Seed nous permet d’effectuer un certain nombre de choses tel que :

  • Déployer des applications Web basées sur des conteneurs sur Cloud Run
  • Créer des instances de Cloud SQL pour PostgreSQL, MySQL, SQL Server, …

L’objectif de cet article, est de tirer parti des avantages de Cloud Seed pour effectuer d’autres actions comme la migration de base de données.

Let’s go …

- Configuration de l’environnement

Dans le dashboard du projet GitLab, sélectionnez Infrastructure > Google Cloud > Configuration. Après cela, vous serez amené à vous connecter avec votre compte Google Cloud.

Une fois que c’est fait, nous allons utiliser Cloud Seed pour créer un service account qui va nous permettre d’accéder à certains services Google Cloud tels que : Cloud Run, Cloud SQL for Postgres, Cloud Storage, …

Personnellement, je pense que le fait d’avoir un service account qui dispose d’une panoplie de rôles n’est pas trop bon pour la sécurité.

Lors de la création du service account nous allons choisir la branche ou le tag qui sera lié à ce dernier.

Maintenant, nous allons configurer la région dans laquelle nous allons exécuter notre charge de travail.

Pour finir, nous allons créer une instance Cloud SQL pour Postgres.

Aller dans Infrastructure > Google Cloud > Databases.

Une fois que c’est bon, nous allons configurer le fichier .gitlab-ci.yml pour l’intégration continue.

Dans le fichier .gitlab-ci.yml , nous allons exécuter le fichier cloud-migration.sh que voici 👇.

Avec cloud-migration.sh nous allons établir la connexion avec Google Cloud et faire appel à Cloud Build afin d’exécuter le fichier cloudbuild.yaml pour effectuer notre migration.

Dans le fichier cloudbuild.yaml , il y a deux variables d’environnement à savoir DATABASE_URL et CONNECTION_NAME que nous allons stocker dans Secret Manager pour des raisons de sécurité.

DATABASE_URL=postgresql://username:password@localhost/databasename?host=/cloudsql/project-id:region:instance-id

CONNECTION_NAME=project-id:region:instance-id

Pour enregistrer une variable dans Secret Manager, sélectionnez Securitysuivi de Secret Manager dans le menu en haut à gauche de Google Cloud. Cliquez ensuite sur CREATE SECRET et mettez le nom de la variable et la valeur du secret. Laissez le reste des paramètres par défaut et créer votre secret.

NB: Utiliser les vraies variables.

- Service account

Nous allons apporter des modifications au service account qui a été créé plus haut parce qu’il dispose de certains rôles dont nous n’avons pas besoin. Pour cela, il faut sélectionner IAM & Admin suivi de IAM dans le menu en haut à gauche. Une fois que vous êtes dans IAM, chercher le service account sous la forme gitlab-xxxxxxxxxxxxxxxxxxxxxx et modifier ces rôles comme suit 👇.

Pour effectuer notre migration, le service account de Cloud Build aura besoin des rôles suivant : Cloud Build Service Account, Cloud SQL Client, Secret Manager Secret Accessor et Service Account User .

- Artifact Registry

Pour finir, nous allons créer un repo Docker pour stocker nos images Docker.

C’est le moment de lancer notre pipeline pour la migration de données🤞.

Mission accomplie, la migration a été effectuer avec succès.

Le code est disponible ici 👇 .

Merci pour la lecture, j’espère que vous avez aimé. À la prochaine.👋

--

--

GDE & Innovators Champion for Google Cloud, Serverless & DevOps enthusiast. I like to learn from others, to share my knowledge with other people.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
EZEKIAS BOKOVE

GDE & Innovators Champion for Google Cloud, Serverless & DevOps enthusiast. I like to learn from others, to share my knowledge with other people.