Batch est un service entièrement géré qui vous permet de planifier, de mettre en file d'attente et d'exécuter des charges de travail de traitement par lot sur des instances de machines virtuelles (VM) Compute Engine. Batch provisionne les ressources et gère la capacité en votre nom, ce qui permet à vos charges de travail par lot de s'exécuter à grande échelle.
Workflows vous permet d'exécuter les services dont vous avez besoin dans l'ordre que vous définissez à l'aide de la syntaxe Workflows.
Dans ce tutoriel, vous allez utiliser le connecteur Workflows pour Batch afin de planifier et d'exécuter un job Batch qui exécute six tâches en parallèle sur deux VM Compute Engine. L'utilisation conjointe de Batch et de Workflows vous permet de combiner leurs avantages et de provisionner et orchestrer efficacement l'ensemble du processus.
Créer un dépôt Artifact Registry
Créez un dépôt pour stocker votre image de conteneur Docker.
Console
Dans la console Google Cloud , accédez à la page Dépôts.
Cliquez sur
Créer un dépôt.Saisissez containers comme nom de dépôt.
Dans le champ Format, choisissez Docker.
Dans le champ Type d'emplacement, sélectionnez Région.
Dans la liste Région, sélectionnez us-central1.
Cliquez sur Créer.
gcloud
Exécutez la commande suivante :
gcloud artifacts repositories create containers \
--repository-format=docker \
--location=us-central1
Vous avez créé un dépôt Artifact Registry nommé containers
dans la région us-central1
. Pour en savoir plus sur les régions disponibles, consultez la page Emplacements Artifact Registry.
Obtenir les exemples de code
Google Cloud stocke le code source de l'application pour ce tutoriel dans GitHub. Vous pouvez cloner ce dépôt ou télécharger les exemples.
Clonez le dépôt de l'exemple d'application sur votre ordinateur local :
git clone https://github.com/GoogleCloudPlatform/batch-samples.git
Vous pouvez également télécharger les exemples dans le fichier
main.zip
et les extraire.Accédez au répertoire qui contient l'exemple de code :
cd batch-samples/primegen
Vous disposez désormais du code source de l'application dans votre environnement de développement.
Créez l'image Docker à l'aide de Cloud Build.
Le fichier Dockerfile
contient les informations nécessaires à la compilation d'une image Docker à l'aide de Cloud Build. Exécutez la commande suivante pour le créer :
gcloud builds submit \
-t us-central1-docker.pkg.dev/PROJECT_ID/containers/primegen-service:v1 PrimeGenService/
Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud.
Une fois la compilation terminée, un résultat semblable aux lignes suivantes doit s'afficher :
DONE
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID: a54818cc-5d14-467b-bfda-5fc9590af68c
CREATE_TIME: 2022-07-29T01:48:50+00:00
DURATION: 48S
SOURCE: gs://project-name_cloudbuild/source/1659059329.705219-17aee3a424a94679937a7200fab15bcf.tgz
IMAGES: us-central1-docker.pkg.dev/project-name/containers/primegen-service:v1
STATUS: SUCCESS
À l'aide d'un fichier Dockerfile, vous avez créé une image Docker nommée primegen-service
et l'avez transférée vers un dépôt Artifact Registry nommé containers
.
Déployer un workflow qui planifie et exécute un job Batch
Le workflow suivant planifie et exécute un job Batch qui exécute un conteneur Docker en tant que six tâches en parallèle sur deux VM Compute Engine. Le résultat est la génération de six lots de nombres premiers, stockés dans un bucket Cloud Storage.
Console
Dans la console Google Cloud , accédez à la page Workflows.
Cliquez sur
Créer.Saisissez un nom pour le nouveau workflow, par exemple
batch-workflow
.Dans la liste Région, sélectionnez us-central1.
Sélectionnez le compte de service que vous avez créé précédemment.
Cliquez sur Suivant.
Dans l'éditeur de workflow, saisissez la définition suivante pour votre workflow :
YAML
JSON
Cliquez sur Déployer.
gcloud
Créez un fichier de code source pour votre workflow :
touch batch-workflow.JSON_OR_YAML
Remplacez
JSON_OR_YAML
paryaml
oujson
en fonction du format de votre workflow.Dans un éditeur de texte, copiez le workflow suivant dans votre fichier de code source :
YAML
JSON
Déployez le workflow en saisissant la commande suivante :
gcloud workflows deploy batch-workflow \ --source=batch-workflow.yaml \ --location=us-central1 \ --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Remplacez
SERVICE_ACCOUNT_NAME
par le nom du compte de service que vous avez créé précédemment.
Exécuter le workflow
L'exécution d'un workflow exécute la définition actuelle du workflow associé au workflow.
Console
Dans la console Google Cloud , accédez à la page Workflows.
Sur la page Workflows, cliquez sur le workflow batch-workflow pour accéder à sa page d'informations.
Sur la page Détails du workflow, cliquez sur play_arrow Exécuter.
Cliquez à nouveau sur Exécuter.
L'exécution du workflow devrait prendre quelques minutes.
Affichez les résultats du workflow dans le volet Output (Résultat).
Le résultat doit ressembler à ce qui suit :
{ "bucket": "project-name-job-primegen-TIMESTAMP", "jobId": "job-primegen-TIMESTAMP" }
gcloud
Exécutez le workflow :
gcloud workflows run batch-workflow \ --location=us-central1
L'exécution du workflow devrait prendre quelques minutes.
Vous pouvez vérifier l'état d'une exécution de longue durée.
Pour obtenir l'état de la dernière exécution terminée, exécutez la commande suivante :
gcloud workflows executions describe-last
Les résultats doivent ressembler à ce qui suit :
name: projects/PROJECT_NUMBER/locations/us-central1/workflows/batch-workflow/executions/EXECUTION_ID result: '{"bucket":"project-name-job-primegen-TIMESTAMP","jobId":"job-primegen-TIMESTAMP"}' startTime: '2022-07-29T16:08:39.725306421Z' state: SUCCEEDED status: currentSteps: - routine: main step: returnResult workflowRevisionId: 000001-9ba
Lister les objets du bucket de sortie
Vous pouvez vérifier que les résultats sont conformes à vos attentes en listant les objets dans votre bucket de sortie Cloud Storage.
Console
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
Dans la liste des buckets, cliquez sur le nom du bucket dont vous souhaitez afficher le contenu.
Les résultats doivent ressembler à ce qui suit, avec six fichiers au total, chacun listant un lot de 10 000 nombres premiers :
primes-1-10000.txt primes-10001-20000.txt primes-20001-30000.txt primes-30001-40000.txt primes-40001-50000.txt primes-50001-60000.txt
gcloud
Récupérez le nom de votre bucket de sortie :
gcloud storage ls
Le résultat ressemble à ce qui suit :
gs://PROJECT_ID-job-primegen-TIMESTAMP/
Listez les objets d'un bucket :
gcloud storage ls gs://PROJECT_ID-job-primegen-TIMESTAMP/** --recursive
Remplacez
TIMESTAMP
par l'horodatage renvoyé par la commande précédente.Le résultat doit ressembler à ce qui suit, avec six fichiers au total, chacun listant un lot de 10 000 nombres premiers :
gs://project-name-job-primegen-TIMESTAMP/primes-1-10000.txt gs://project-name-job-primegen-TIMESTAMP/primes-10001-20000.txt gs://project-name-job-primegen-TIMESTAMP/primes-20001-30000.txt gs://project-name-job-primegen-TIMESTAMP/primes-30001-40000.txt gs://project-name-job-primegen-TIMESTAMP/primes-40001-50000.txt gs://project-name-job-primegen-TIMESTAMP/primes-50001-60000.txt