Concevoir et créer un job Java dans Cloud Run
Avant de commencer
- Connectez-vous à votre compte Google Cloud . Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $de crédits sans frais pour exécuter, tester et déployer des charges de travail.
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Si vous utilisez un projet existant pour ce guide, vérifiez que vous disposez des autorisations nécessaires pour suivre les instructions. Si vous avez créé un projet, vous disposez déjà des autorisations requises.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
-
Installez la Google Cloud CLI.
-
Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.
-
Pour initialiser la gcloud CLI, exécutez la commande suivante :
gcloud init -
Créez ou sélectionnez un projet Google Cloud .
Rôles requis pour sélectionner ou créer un projet
- Sélectionnez un projet : la sélection d'un projet ne nécessite pas de rôle IAM spécifique. Vous pouvez sélectionner n'importe quel projet pour lequel un rôle vous a été attribué.
-
Créer un projet : pour créer un projet, vous devez disposer du rôle Créateur de projet (
roles/resourcemanager.projectCreator), qui contient l'autorisationresourcemanager.projects.create. Découvrez comment attribuer des rôles.
-
Créez un projet Google Cloud :
gcloud projects create PROJECT_ID
Remplacez
PROJECT_IDpar le nom du projet Google Cloud que vous créez. -
Sélectionnez le projet Google Cloud que vous avez créé :
gcloud config set project PROJECT_ID
Remplacez
PROJECT_IDpar le nom de votre projet Google Cloud .
-
Si vous utilisez un projet existant pour ce guide, vérifiez que vous disposez des autorisations nécessaires pour suivre les instructions. Si vous avez créé un projet, vous disposez déjà des autorisations requises.
-
Vérifiez que la facturation est activée pour votre projet Google Cloud .
-
Activez les API Cloud Run Admin et Cloud Build :
Rôles requis pour activer les API
Pour activer les API, vous avez besoin du rôle IAM Administrateur Service Usage (
roles/serviceusage.serviceUsageAdmin), qui contient l'autorisationserviceusage.services.enable. Découvrez comment attribuer des rôles.gcloud services enable run.googleapis.com
cloudbuild.googleapis.com Une fois l'API Cloud Run Admin activée, le compte de service Compute Engine par défaut est créé automatiquement.
- Consultez les tarifs de Cloud Run ou estimez les coûts à l'aide du simulateur de coût.
Rôles requis
Pour obtenir les autorisations nécessaires pour suivre ce guide de démarrage rapide, demandez à votre administrateur de vous accorder les rôles IAM suivants :
-
Administrateur Cloud Run (
roles/run.admin) sur le projet -
Développeur de source Cloud Run (
roles/run.sourceDeveloper) sur le projet -
Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur l'identité du service -
Lecteur de journaux (
roles/logging.viewer) sur le projet
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Accorder au compte de service Cloud Build l'accès à votre projet
Cloud Build utilise automatiquement le compte de service Compute Engine par défaut comme compte de service Cloud Build par défaut pour compiler votre code source et votre ressource Cloud Run, sauf si vous modifiez ce comportement.
Pour que Cloud Build puisse créer vos sources, accordez au compte de service Cloud Build le rôle Créateur Cloud Run (roles/run.builder) dans votre projet :
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS \ --role=roles/run.builder
Remplacez PROJECT_ID par l'ID de votre Google Cloud
projet et SERVICE_ACCOUNT_EMAIL_ADDRESS par l'adresse e-mail du compte de service Cloud Build. Si vous utilisez le compte de service Compute Engine par défaut comme compte de service Cloud Build, utilisez le format suivant pour l'adresse e-mail du compte de service :
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Remplacez PROJECT_NUMBER par votre numéro de projet Google Cloud.
Pour obtenir des instructions détaillées sur la recherche de votre ID et de votre numéro de projet, consultez Créer et gérer des projets.
L'application du rôle de compilateur Cloud Run prend quelques minutes.
Écrire l'exemple de tâche
Pour écrire un job en Java :
Créez un répertoire nommé
jobset modifiez les sous-répertoires comme suit :mkdir jobs cd jobsDans un répertoire de sous-répertoire nommé
src/main/java/com/example, créez un fichierJobsExample.javapour le code de job réel. Copiez les exemples de lignes suivants :Les jobs Cloud Run permettent aux utilisateurs de spécifier le nombre de tâches que le job doit exécuter. Cet exemple de code montre comment utiliser la variable d'environnement
CLOUD_RUN_TASK_INDEXintégrée. Chaque tâche correspond à une copie en cours d'exécution du conteneur. Notez que les tâches sont généralement exécutées en parallèle. L'utilisation de plusieurs tâches est pertinente si chacune d'elles peut traiter indépendamment un sous-ensemble de vos données.Chaque tâche connaît son index, stocké dans la variable d'environnement
CLOUD_RUN_TASK_INDEX. La variable d'environnementCLOUD_RUN_TASK_COUNTintégrée contient le nombre de tâches fournies au moment de l'exécution du job via le paramètre--tasks.Le code présenté montre également comment relancer des tâches à l'aide de la variable d'environnement intégrée
CLOUD_RUN_TASK_ATTEMPT, qui contient le nombre de tentatives d'exécution de cette tâche, commençant à 0 pour la première tentative et incrémentée de 1 pour chaque nouvelle tentative, jusqu'à--max-retries.Le code vous permet également de générer des échecs afin de tester la répétition des tentatives et de générer des journaux d'erreurs afin que vous puissiez voir à quoi ils ressemblent.
Créez un fichier
pom.xmlavec le contenu suivant :Créez un fichier
project.tomlavec le contenu suivant pour effectuer la compilation avec la version Java acceptée par Buildpack :
Votre code est terminé et prêt à être empaqueté dans un conteneur.
Créer un conteneur de jobs, l'envoyer à Artifact Registry et le déployer dans Cloud Run
Ce guide de démarrage rapide utilise un déploiement à partir d'une source pour créer le conteneur, l'importer dans Artifact Registry et déployer le job dans Cloud Run :
gcloud run jobs deploy job-quickstart \ --source . \ --tasks 50 \ --set-env-vars SLEEP_MS=10000 \ --set-env-vars FAIL_RATE=0.1 \ --max-retries 5 \ --region REGION \ --project=PROJECT_ID
où PROJECT_ID correspond à votre ID de projet et REGION à votre région, par exemple europe-west1. Notez que vous pouvez remplacer les différents paramètres par les valeurs que vous souhaitez utiliser à des fins de test. SLEEP_MS simule le travail et FAIL_RATE entraîne l'échec de X % des tâches afin que vous puissiez tester le parallélisme et réessayer les tâches ayant échoué.
Exécuter une tâche dans Cloud Run
Pour exécuter le job que vous venez de créer, procédez comme suit :
gcloud run jobs execute job-quickstart --region REGION
Remplacez REGION par la région que vous avez utilisée lors de la création et du déploiement du job (par exemple, europe-west1).
Effectuer un nettoyage
Pour éviter que des frais supplémentaires ne soient facturés sur votre compte Google Cloud , supprimez toutes les ressources que vous avez déployées avec ce guide de démarrage rapide.
Supprimer votre dépôt
Cloud Run ne facture que la durée d'exécution de votre job. Toutefois, il se peut que des frais vous soient facturés pour le stockage de l'image de conteneur dans Artifact Registry. Pour supprimer des dépôts Artifact Registry, suivez les étapes décrites dans Supprimer des dépôts de la documentation Artifact Registry.
Supprimer votre job
Les jobs Cloud Run n'entraînent des coûts que lorsqu'une tâche de job est en cours d'exécution. Pour supprimer votre job Cloud Run, procédez comme suit :
Console
Pour supprimer une tâche, procédez comme suit :
Dans la console Google Cloud , accédez à Cloud Run :
Recherchez le job que vous souhaitez supprimer dans la liste des jobs, puis cliquez sur la case à cocher correspondante pour le sélectionner.
Cliquez sur Supprimer. Cela met fin à toutes les exécutions de jobs en cours et à toutes les instances de conteneur en cours d'exécution.
gcloud
Pour supprimer un job, exécutez la commande suivante :
gcloud run jobs delete JOB_NAME
Remplacez JOB_NAME par le nom de la tâche.
Supprimer votre projet de test
La suppression de votre projet Google Cloud arrête la facturation de toutes les ressources de ce projet. Pour libérer toutes les ressources Google Cloud de votre projet, procédez comme suit :
Supprimer un projet Google Cloud :
gcloud projects delete PROJECT_ID
Étapes suivantes
Pour savoir comment créer un conteneur à partir d'une source de code et le transférer vers un dépôt, consultez la section suivante :