Créer une base de données AlloyDB avec un job Cloud Run

1. Présentation

Dans cet atelier, vous allez créer une base de données AlloyDB avec un job Cloud Run. Vous allez configurer l'accès aux services privés et l'accès au VPC sans serveur pour activer la connectivité entre le job Cloud Run et la base de données AlloyDB à l'aide d'une adresse IP privée.

Objectifs de l'atelier

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

  • Configurer le cluster et l'instance AlloyDB
  • Déployer un job Cloud Run pour créer une base de données AlloyDB

2. Préparation

Configuration du projet Cloud

  1. Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pouvez le modifier à tout moment.
  • L'ID du projet doit être unique sur l'ensemble des projets Google Cloud et doit être immuable (vous ne pouvez pas le modifier une fois que vous l'avez défini). La console Cloud génère automatiquement une chaîne unique. généralement, vous ne vous souciez pas de ce que c’est. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (il est généralement identifié comme PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre au hasard. Vous pouvez également essayer la vôtre pour voir si elle est disponible. Il ne peut pas être modifié après cette étape et restera actif pendant toute la durée du projet.
  • Pour votre information, il existe une troisième valeur, le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
  1. Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter que des frais ne vous soient facturés au-delà de ce tutoriel, vous pouvez supprimer les ressources que vous avez créées ou l'ensemble du projet. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai gratuit pour bénéficier d'un crédit de 300 $.

Configuration de l'environnement

Activez Cloud Shell en cliquant sur l'icône située à droite de la barre de recherche.

eb0157a992f16fa3.png

Pour activer les API de service, copiez et collez la commande ci-dessous dans le terminal, puis appuyez sur Entrée:

gcloud services enable \
    alloydb.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    run.googleapis.com \
    vpcaccess.googleapis.com \
    compute.googleapis.com \
    servicenetworking.googleapis.com \
    --quiet

Définissez les variables d'environnement :

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
export DB_DATABASE=test
export DB_USER=postgres
export DB_PASSWORD=password123
export REGION=us-central1
export CLUSTER=test-cluster
export INSTANCE=test-instance
export VPC_CONNECTOR=vpcconnector

3. Configurer et créer un cluster AlloyDB

Définissez les autorisations requises pour la configuration. Cela permettra à la tâche Cloud Run de se connecter à la base de données AlloyDB.

gcloud projects add-iam-policy-binding $PROJECT_NAME \
  --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
  --role="roles/alloydb.client"

Configurer l'accès aux services privés

L'accès aux services privés est implémenté sous la forme d'une connexion d'appairage de VPC entre votre réseau VPC et le réseau VPC Google Cloud sous-jacent où résident vos ressources AlloyDB (clusters et instances). La connexion privée permet aux ressources de votre réseau VPC de communiquer avec les ressources AlloyDB auxquelles elles accèdent exclusivement à l'aide d'adresses IP internes. Les ressources de votre réseau VPC n'ont pas besoin d'un accès Internet ni d'adresses IP externes pour accéder aux ressources AlloyDB.

Pour créer une configuration d'accès aux services privés dans un réseau VPC résidant dans le même projet Cloud qu'AlloyDB, vous devez effectuer deux opérations:

Créez une plage d'adresses IP allouée dans le réseau VPC.

gcloud compute addresses create google-managed-services-default \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=20 \
    --network=projects/$PROJECT_ID/global/networks/default

Créez une connexion privée entre le réseau VPC et le réseau VPC Google Cloud sous-jacent. Cette étape prend environ deux minutes.

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

Créer un cluster AlloyDB

gcloud beta alloydb clusters create $CLUSTER \
    --password=$DB_PASSWORD \
    --network=default \
    --region=$REGION \
    --project=$PROJECT_NAME

gcloud beta alloydb clusters describe $CLUSTER --region=$REGION

Créer une instance AlloyDB Cette étape prend environ 10 minutes.

gcloud beta alloydb instances create $INSTANCE \
    --cluster=$CLUSTER \
    --region=$REGION \
    --instance-type=PRIMARY \
    --cpu-count=2 \
    --project=$PROJECT_NAME

gcloud beta alloydb instances describe $INSTANCE \
    --cluster=$CLUSTER \
    --region $REGION

Examinez le cluster créé dans la console Cloud.

568d273c0e0d6408.png

Enregistrez l'adresse IP de la base de données dans une variable.""

export DB_HOST=$(gcloud beta alloydb instances describe $INSTANCE \
    --cluster=$CLUSTER \
    --region=$REGION \
    --format=json | jq \
    --raw-output ".ipAddress")

echo "DB_HOST=$DB_HOST"

4. Explorer le code du job Cloud Run

Il existe plusieurs façons de créer une base de données AlloyDB. L'une d'elles consiste à créer une VM Compute Engine, à installer un client psql, puis à se connecter à l'instance pour créer une base de données. Pour en savoir plus sur cette approche, cliquez ici.

Dans cet atelier, vous allez créer une base de données AlloyDB à l'aide d'un job Cloud Run.

Consultez les fichiers ci-dessous:

  • Dockerfile : installe les dépendances requises(postgresql-client)
  • script.sh - utilise les utilitaires de ligne de commande pour créer une base de données

Dans Cloud Shell, créez un dossier:

mkdir ~/alloy-db-cloud-run-job
cd ~/alloy-db-cloud-run-job 

Créez le fichier Dockerfile:

cat > Dockerfile <<EOF
FROM ubuntu:latest
RUN apt-get update && apt-get install -y postgresql-client && apt-get clean
COPY script.sh /
RUN chmod +x /script.sh
CMD ["/script.sh"]
ENTRYPOINT ["/bin/bash"]
EOF

Créez un fichier script.sh avec le contenu ci-dessous:

echo "Connecting to $DB_HOST"
createdb -h $DB_HOST -p 5432 $PGDB
echo "Created $PGDB database"

psql -h $DB_HOST -l

Modifier l'autorisation sur script.sh:

chmod +x script.sh

5. Déployer un job Cloud Run

Configurez l'accès au VPC sans serveur. Cela permet à la tâche Cloud Run de communiquer avec le cluster AlloyDB via une adresse IP interne/privée. Cette étape prend environ deux minutes.

gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
    --region=${REGION} \
    --range=10.8.0.0/28

Créez un dépôt Artifact Registry pour stocker les images de conteneurs.

gcloud artifacts repositories create db-job-repository \
  --repository-format=docker \
  --location=$REGION

Créer une image de conteneur et la publier dans Artifact Registry

gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest

Déployer un job Cloud Run

gcloud beta run jobs create db-job \
    --image=$REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest \
    --set-env-vars DB_HOST=$DB_HOST \
    --set-env-vars PGUSER=$DB_USER \
    --set-env-vars PGPASSWORD=$DB_PASSWORD \
    --set-env-vars PGDB=$DB_DATABASE \
    --vpc-connector $VPC_CONNECTOR \
    --region $REGION

Examinez les options utilisées pour créer la tâche:

--vpc-connector : la tâche Cloud Run utilisera le connecteur VPC pour atteindre l'adresse IP privée AlloyDB.

Examinez la tâche créée dans la console Cloud.

93d8224eca8c687f.png

Exécuter le job Cloud Run pour créer la base de données test.

gcloud beta run jobs execute db-job --region $REGION

Examinez les journaux du job Cloud Run dans la console Cloud.

3f2269736b53f44c.png

6. Félicitations !

Félicitations, vous avez terminé cet atelier de programmation.

Points abordés

  • Créer un cluster et une instance AlloyDB
  • Créer une base de données AlloyDB à l'aide d'un job Cloud Run

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez chaque ressource individuellement.

Supprimer le projet

Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.