Configurer les vérifications de l'état des conteneurs pour les jobs

Cette page explique comment configurer des vérifications de démarrage HTTP, TCP et gRPC pour les jobs Cloud Run nouveaux et existants. La configuration varie selon le type de vérification.

Cas d'utilisation

Vous pouvez configurer des vérifications d'état de démarrage. Les vérifications de démarrage déterminent si le conteneur a démarré et est prêt à exécuter le job.

Lorsqu'un job ne parvient pas à démarrer à plusieurs reprises, Cloud Run limite les redémarrages de tâches pour éviter les boucles de plantage non contrôlées.

Exigences et comportement de vérification

Type de vérification Conditions requises Comportement
Démarrage TCP Aucun Si Cloud Run ne parvient pas à établir de connexion, il indique un échec.

Si une vérification de démarrage n'aboutit pas dans l'intervalle de temps spécifié, Cloud Run arrête le conteneur. Cet intervalle de temps est calculé comme suit : failureThreshold * periodSeconds et ne peut pas dépasser 240 secondes.
Démarrage HTTP Créez un point de vérification de l'état HTTP
Utilisez HTTP/1
Une fois la vérification configurée, Cloud Run envoie une requête GET HTTP au point de terminaison de vérification de l'état du job (par exemple, /ready). Toute réponse comprise entre 200 et 400 indique un succès, toute autre réponse indique un échec.

Si une vérification de démarrage n'aboutit pas dans le délai spécifié (failureThreshold * periodSeconds), qui ne peut pas dépasser 240 secondes, le conteneur est arrêté.
Démarrage gRPC Mettez en œuvre le protocole de vérification d'état gRPC dans votre job Cloud Run. Si une vérification de démarrage n'aboutit pas dans le délai spécifié (failureThreshold * periodSeconds), qui ne peut pas dépasser 240 secondes, le conteneur est arrêté.

Configurer des vérifications

Configurez des vérifications HTTP, TCP et gRPC à l'aide de la Google Cloud console ou de YAML :

Console

Important : Si vous configurez votre job Cloud Run pour les vérifications HTTP, vous devez également ajouter un vérification de l'état HTTP dans votre code de job pour répondre à la vérification. Si vous configurez une vérification gRPC, vous devez également mettre en œuvre le protocole de vérification d'état gRPC dans votre job Cloud Run.

  1. Dans la Google Cloud console, accédez à la page Jobs de Cloud Run :

    Accédez à Cloud Run

  2. Pour un nouveau job, cliquez sur Déployer un conteneur. Pour un job existant, cliquez sur l'onglet Jobs, sur le job de votre choix, puis sur Afficher et modifier la configuration du job.

  3. Développez Conteneurs, mise en réseau, sécurité.

  4. Dans la section Conteneur(s) , accédez à Vérifications d'état , puis cliquez sur Ajouter une vérification d'état pour ouvrir le panneau de configuration Ajouter une vérification d'état.

  5. Dans le menu Sélectionner le vérification de l'étatétat, sélectionnez le type de démarrage de la vérification de l'état.

  6. Dans le menu Sélectionner un type de vérification, sélectionnez le type de vérification, par exemple HTTP ou gRPC. Le formulaire de configuration de vérification s'affiche.

  7. Notez que la configuration de vérification varie selon le type de vérification. Configurez les paramètres de la vérification :

    • Si vous utilisez des vérifications HTTP :
      • Utilisez le champ Chemin d'accès pour spécifier le chemin d'accès relatif au point de terminaison (par exemple, /).
      • Cochez la case En-têtes HTTP pour spécifier des en-têtes personnalisés facultatifs. Spécifiez ensuite le nom de l'en-tête dans le champ Nom et la valeur de l'en-tête dans le champ Valeur. Cliquez sur Ajouter un en-tête HTTP pour spécifier d'autres en-têtes.
    • Pour le champ Port, spécifiez le port sur lequel le conteneur de job écoute la vérification.
    • Dans le champ Délai initial, spécifiez le nombre de secondes d'attente après le démarrage du conteneur avant d'effectuer la première vérification. Spécifiez une valeur comprise entre 0 et 240 secondes. La valeur par défaut est de 0 seconde.
    • Dans le champ Période, spécifiez l'intervalle de temps (en secondes) auquel effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 240 secondes. La valeur par défaut est de 10 secondes.
    • Pour Seuil d'échec, spécifiez le nombre de tentatives d'exécution de la vérification à effectuer avant d'arrêter le conteneur. La valeur par défaut est "3".
    • Dans le champ Délai avant expiration, spécifiez le nombre de secondes d'attente avant expiration de la vérification. Cette valeur ne peut pas dépasser la valeur spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
  8. Cliquez sur Ajouter pour ajouter le nouveau seuil.

YAML

Important : Si vous configurez votre job Cloud Run pour les vérifications HTTP, vous devez également ajouter un point de terminaison dans votre code de job pour répondre à la vérification. Si vous configurez une vérification gRPC, vous devez également mettre en œuvre le protocole de vérification d'état gRPC dans votre job Cloud Run.

Démarrage TCP

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
     name: JOB
    spec:
     template:
       metadata:
       spec:
         containers:
         - image: IMAGE_URL
           startupProbe:
             tcpSocket:
               port: CONTAINER_PORT
             initialDelaySeconds: DELAY
             timeoutSeconds: TIMEOUT
             failureThreshold: THRESHOLD
             periodSeconds: PERIOD

    Remplacez les variables suivantes :

    • JOB par le nom de votre job Cloud Run
    • IMAGE_URL par l'URL de l'image de conteneur du job (par exemple, us-docker.pkg.dev/cloudrun/container/job:latest)
    • Facultatif : CONTAINER_PORT par le port sur lequel le conteneur de job écoute la vérification
    • DELAY par le nombre de secondes d'attente après le démarrage du conteneur avant d'effectuer la première vérification Spécifiez une valeur comprise entre 0 et 240 secondes. La valeur par défaut est de 0 seconde.
    • Facultatif : TIMEOUT par le nombre de secondes d'attente jusqu'à l'expiration de la vérification Cette valeur ne peut pas dépasser la valeur spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
    • THRESHOLD par le nombre de tentatives d'exécution de la vérification à effectuer avant d'arrêter le conteneur. La valeur par défaut est "3".
    • PERIOD par le délai (en secondes) auquel effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 seconde et 240 secondes. La valeur par défaut est de 10 secondes.
  3. Créez ou mettez à jour le job à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml

Démarrage HTTP

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Remplacez les variables suivantes :

    • JOB par le nom de votre job Cloud Run
    • IMAGE_URL par l'URL de l'image de conteneur du job (par exemple, us-docker.pkg.dev/cloudrun/container/job:latest)
    • PATH par le chemin relatif au point de terminaison HTTP, par exemple, /ready.
    • Facultatif : CONTAINER_PORT par le port sur lequel le conteneur de job écoute la vérification
    • Facultatif : httpHeaders peut être utilisé pour fournir plusieurs en-têtes personnalisés ou des en-têtes personnalisés répétés à l'aide des champs HEADER_NAME et HEADER_VALUE , comme indiqué.
    • Facultatif : DELAY par le nombre de secondes d'attente après le démarrage du conteneur avant d'effectuer la première vérification Spécifiez une valeur comprise entre 0 et 240 secondes. La valeur par défaut est de 0 seconde.
    • Facultatif : TIMEOUT par le nombre de secondes d'attente jusqu'à l'expiration de la vérification Cette valeur ne peut pas dépasser la valeur spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
    • Facultatif : THRESHOLD par le nombre de tentatives d'exécution de la vérification à effectuer avant d'arrêter le conteneur La valeur par défaut est "3".
    • Facultatif : PERIOD par le délai (en secondes) auquel effectuer la vérification Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 240 secondes. La valeur par défaut est de 10 secondes.
  3. Créez ou mettez à jour le job à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml

Démarrage gRPC

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              grpc:
                service: GRPC_SERVICE
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Remplacez les variables suivantes :

    • JOB par le nom de votre job Cloud Run
    • IMAGE_URL par l'URL de l'image de conteneur du job (par exemple, us-docker.pkg.dev/cloudrun/container/job:latest)
    • Facultatif : GRPC_SERVICE. Si cette option est définie, elle est utilisée dans le champ de service de grpc.health.v1.HealthCheckRequest lorsque l'appel RPC grpc.health.v1.Health.Check est effectué.
    • Facultatif : CONTAINER_PORT par le port sur lequel le conteneur de job écoute la vérification
    • Facultatif : DELAY par le nombre de secondes d'attente après le démarrage du conteneur avant d'effectuer la première vérification Spécifiez une valeur comprise entre 0 et 240 secondes. La valeur par défaut est de 0 seconde.
    • Facultatif : TIMEOUT par le nombre de secondes d'attente jusqu'à l'expiration de la vérification Cette valeur ne peut pas dépasser la valeur spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
    • Facultatif : THRESHOLD par le nombre de tentatives d'exécution de la vérification à effectuer avant d'arrêter le conteneur La valeur par défaut est "3".
    • Facultatif : PERIOD par le délai (en secondes) auquel effectuer la vérification Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 240 secondes. La valeur par défaut est de 10 secondes.
  3. Créez ou mettez à jour le job à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml

Créer des points de terminaison HTTP de vérification de l'état

Si vous configurez votre job Cloud Run pour une vérification de démarrage HTTP, vous devez ajouter un point de terminaison dans votre code de job pour répondre à la vérification. Vous pouvez utiliser n'importe quel nom pour le point de terminaison, par exemple /startup ou /ready. Le nom doit correspondre aux valeurs que vous spécifiez pour path dans la configuration de la vérification. Par exemple, si vous spécifiez /ready pour une vérification de démarrage HTTP, spécifiez path dans la configuration de votre vérification comme indiqué ci-dessous :

startupProbe:
  httpGet:
    path: /ready