Configurer les vérifications d'état des conteneurs pour les instances

Les vérifications de l'état Cloud Run permettent de s'assurer que vos instances de conteneur s'exécutent correctement et sont en mesure de diffuser du trafic. Les vérifications de l'état Cloud Run vous permettent de personnaliser le moment où votre conteneur est prêt à recevoir des requêtes et le moment où il doit être considéré comme non opérationnel et nécessiter un redémarrage.

Cas d'utilisation

Vous pouvez configurer les types de vérification de l'état'état suivants :

  • Les vérifications de démarrage déterminent si le conteneur a démarré et est prêt à accepter le trafic.
  • Les vérifications d'activité déterminent s'il faut redémarrer un conteneur.
    • Dans ce cas, le redémarrage d'un conteneur peut augmenter la disponibilité de l'instance en cas de bugs.
    • Les vérifications d'activité sont destinées à redémarrer des instances individuelles qui ne peuvent pas être récupérées d'une autre manière. Elles doivent principalement être utilisées en cas de défaillance d'instance irrécupérable, par exemple pour détecter un interblocage où une instance est en cours d'exécution, mais ne peut pas progresser. Vous pouvez exiger une vérification de l'activité pour chaque conteneur à l'aide de règles d'administration personnalisées.
    • Lorsqu'une instance rencontre des échecs répétés de vérification, Cloud Run limite les redémarrages d'instances pour éviter les boucles de plantage non contrôlées.
  • Vérifications de préparation (preview)

    Les vérifications d'aptitude déterminent à quel moment une instance de votre instance Cloud Run doit diffuser du trafic. Les vérifications d'aptitude commencent une fois la vérification de démarrage du conteneur réussie. Si une instance échoue à sa vérification de l'état de préparation au-delà du seuil d'échec que vous configurez, Cloud Run cesse de lui envoyer du trafic. Cloud Run ne met pas fin à l'instance et renvoie le trafic vers celle-ci lorsqu'elle recommence à réussir sa vérification de l'état de préparation.

Votre conteneur doit implémenter les vérifications de démarrage, d'activité et d'aptitude de manière cohérente. Une fois la vérification de démarrage réussie, Cloud Run considère que votre conteneur est prêt à diffuser du trafic.

Nous vous recommandons d'encapsuler votre logique afin que la vérification du démarrage tienne compte de l'état de préparation. Étant donné que Cloud Run peut acheminer le trafic vers une nouvelle instance avant la fin de la première vérification de l'état de préparation, assurez-vous que la réussite de la vérification du démarrage garantit également la capacité à diffuser le trafic en toute sécurité immédiatement. Lorsque la vérification de démarrage réussit, nous considérons que le conteneur est prêt à recevoir du trafic.

Configurer des vérifications de démarrage

Vous pouvez configurer des vérifications HTTP, TCP et gRPC à l'aide de la Google Cloud CLI ou de YAML :

gcloud

Démarrage TCP

Exécutez la commande suivante :

  gcloud beta run instances create INSTANCE \
      --image=IMAGE_URL \
      --startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Remplacez les éléments suivants :

  • INSTANCE : nom de votre instance Cloud Run.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
  • DELAY : 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.
  • TIMEOUT (facultatif) : 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 : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
  • PERIOD : période (en secondes) à laquelle 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.

Démarrage HTTP

Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.

Exécutez la commande suivante :

  gcloud beta run instances create INSTANCE \
      --image=IMAGE_URL \
      --startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Remplacez les éléments suivants :

  • INSTANCE : nom de votre instance Cloud Run.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH : chemin relatif au point de terminaison HTTP, par exemple, /health.
  • CONTAINER_PORT (facultatif) : définissez le port de conteneur utilisé pour votre instance.
  • DELAY (facultatif) : 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 seconde et 240 secondes. La valeur par défaut est de 0 seconde.
  • THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
  • TIMEOUT (facultatif) : nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser celle spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
  • PERIOD (facultatif) : période (en secondes) à laquelle 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.

Démarrage gRPC

Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.

Exécutez la commande suivante :

  gcloud beta run instances create INSTANCE \
      --image=IMAGE_URL \
      --startup-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Remplacez les éléments suivants :

  • INSTANCE : nom de votre instance Cloud Run.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de grpc.health.v1.HealthCheckRequest lorsque le RPC grpc.health.v1.Health.Check est appelé.
  • CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
  • DELAY (facultatif) : 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 seconde et 240 secondes. La valeur par défaut est de 0 seconde.
  • THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
  • TIMEOUT (facultatif) : nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser celle spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
  • PERIOD (facultatif) : période (en secondes) à laquelle 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.

YAML

Démarrage TCP

  1. Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
     name: INSTANCE
     annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - image: IMAGE_URL
        startupProbe:
          tcpSocket:
            port: CONTAINER_PORT
          initialDelaySeconds: DELAY
          timeoutSeconds: TIMEOUT
          failureThreshold: THRESHOLD
          periodSeconds: PERIOD

    Remplacez les éléments suivants :

    • INSTANCE : nom de votre instance Cloud Run.
    • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
    • DELAY : 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.
    • TIMEOUT (facultatif) : 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 : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
    • PERIOD : période (en secondes) à laquelle 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 l'instance à l'aide de la commande suivante :
    gcloud beta run instances replace instance.yaml

Démarrage HTTP

Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.

  1. Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    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 éléments suivants :

    • INSTANCE : nom de votre instance Cloud Run.
    • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH : chemin relatif au point de terminaison HTTP, par exemple, /health.
    • CONTAINER_PORT (facultatif) : définissez le port de conteneur utilisé pour votre instance.
    • DELAY (facultatif) : 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 seconde et 240 secondes. La valeur par défaut est de 0 seconde.
    • THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
    • Facultatif : httpHeaders peut être utilisé pour fournir des en-têtes personnalisés multiples ou répétés à l'aide des champs HEADER_NAME et HEADER_VALUE, comme indiqué.
    • TIMEOUT (facultatif) : nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser celle spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
    • PERIOD (facultatif) : période (en secondes) à laquelle 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.
    1. Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :

      gcloud beta run instances describe INSTANCE --format export > instance.yaml

Démarrage gRPC

Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.

  1. Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - image: IMAGE_URL
        startupProbe:
          grpc:
            instance: GRPC_INSTANCE
            port: CONTAINER_PORT
          initialDelaySeconds: DELAY
          timeoutSeconds: TIMEOUT
          failureThreshold: THRESHOLD
          periodSeconds: PERIOD

    Remplacez les éléments suivants :

    • INSTANCE : nom de votre instance Cloud Run.
    • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de grpc.health.v1.HealthCheckRequest lorsque le RPC grpc.health.v1.Health.Check est appelé.
    • CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
    • DELAY (facultatif) : 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 seconde et 240 secondes. La valeur par défaut est de 0 seconde.
    • THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
    • TIMEOUT (facultatif) : nombre de secondes d'attente jusqu'à l'expiration de la vérification. Cette valeur ne peut pas dépasser celle spécifiée pour periodSeconds. Définissez une valeur comprise entre 1 et 240. La valeur par défaut est 1.
    • PERIOD (facultatif) : période (en secondes) à laquelle 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. Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :

    gcloud beta run instances describe INSTANCE --format export > instance.yaml

Vérification de démarrage TCP par défaut

Si vous ne configurez pas explicitement de vérification de démarrage TCP pour une nouvelle instance Cloud Run, Cloud Run en configure automatiquement une avec les valeurs par défaut suivantes :

startupProbe:
          timeoutSeconds: 240
          periodSeconds: 240
          failureThreshold: 1

Vous pouvez modifier ces valeurs par défaut en suivant les instructions de la section Configuration de la vérification sur la présente page.

Exigences et comportement de la vérification au démarrage

Type de vérification Conditions requises Comportement
Démarrage TCP Aucune Par défaut, Cloud Run établit une connexion TCP pour ouvrir le socket TCP sur le port spécifié. Si Cloud Run ne parvient pas à établir une connexion, cela 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é. Consultez également la section Valeurs TCP par défaut.
Démarrage HTTP Créez un point de terminaison de vérification de l'état d'état HTTP
Utilisez HTTP/1
Une fois la vérification configurée, Cloud Run envoie une requête HTTP GET au point de terminaison de la vérification de l'état l'état (par exemple, /health). Toute réponse 2XX ou 3XX est considérée comme réussie. Tout autre élément 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 instance Cloud Run. Si une vérification de démarrage échoue 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 d'activité

Vous pouvez configurer des vérifications HTTP et gRPC à l'aide de Google Cloud SDK ou de YAML :

gcloud

Activité HTTP

Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.

Exécutez la commande suivante :

  gcloud beta run instances deploy INSTANCE \
      --image=IMAGE_URL \
      --liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Remplacez les éléments suivants :

  • INSTANCE : nom de votre instance Cloud Run.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH : chemin relatif au point de terminaison HTTP, par exemple, /health.
  • CONTAINER_PORT (facultatif) : définissez le port de conteneur utilisé pour votre instance.
  • DELAY (facultatif) : 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 seconde et 240 secondes. La valeur par défaut est de 0 seconde.
  • THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
  • Facultatif. TIMEOUT : 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 3 600.La valeur par défaut est 1.
  • Facultatif. PERIOD : période (en secondes) à laquelle effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 3 600 secondes. La valeur par défaut est de 10 secondes.

Activité gRPC

Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.

Exécutez la commande suivante :

  gcloud beta run instances deploy INSTANCE \
      --image=IMAGE_URL \
      --liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Remplacez les éléments suivants :

  • INSTANCE : nom de votre instance Cloud Run.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de grpc.health.v1.HealthCheckRequest lorsque le RPC grpc.health.v1.Health.Check est appelé.
  • CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
  • DELAY (facultatif) : 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 seconde et 240 secondes. La valeur par défaut est de 0 seconde.
  • THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
  • Facultatif. TIMEOUT : 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 3 600.La valeur par défaut est 1.
  • Facultatif. PERIOD : période (en secondes) à laquelle effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 3 600 secondes. La valeur par défaut est de 10 secondes.

YAML

Activité HTTP

Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.

  1. Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configurez l'attribut livenessProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - image: IMAGE_URL
        livenessProbe:
          httpGet:
            path: PATH
            port: CONTAINER_PORT
            httpHeaders:
              - name: HEADER_NAME
                value: HEADER_VALUE
          initialDelaySeconds: DELAY
          timeoutSeconds: TIMEOUT
          failureThreshold: THRESHOLD
          periodSeconds: PERIOD

    Remplacez les éléments suivants :

    • INSTANCE : nom de votre instance Cloud Run.
    • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH : chemin relatif au point de terminaison HTTP, par exemple, /health.
    • CONTAINER_PORT (facultatif) : définissez le port de conteneur utilisé pour votre instance.
    • DELAY (facultatif) : 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 seconde et 240 secondes. La valeur par défaut est de 0 seconde.
    • THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
    • Facultatif : httpHeaders peut être utilisé pour fournir des en-têtes personnalisés multiples ou répétés à l'aide des champs HEADER_NAME et HEADER_VALUE, comme indiqué.
    • Facultatif. TIMEOUT : 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 3 600.La valeur par défaut est 1.
    • Facultatif. PERIOD : période (en secondes) à laquelle effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 3 600 secondes. La valeur par défaut est de 10 secondes.
  3. Créez ou mettez à jour l'instance à l'aide de la commande suivante :
    gcloud beta run instances replace instance.yaml

Activité gRPC

Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.

  1. Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configurez l'attribut livenessProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - image: IMAGE_URL
        livenessProbe:
          grpc:
            port: CONTAINER_PORT
            service: GRPC_SERVICE
            initialDelaySeconds: DELAY
            timeoutSeconds: TIMEOUT
            failureThreshold: THRESHOLD
            periodSeconds: PERIOD

    Remplacez les éléments suivants :

    • INSTANCE : nom de votre instance Cloud Run.
    • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de grpc.health.v1.HealthCheckRequest lorsque le RPC grpc.health.v1.Health.Check est appelé.
    • CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance.
    • DELAY (facultatif) : 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 seconde et 240 secondes. La valeur par défaut est de 0 seconde.
    • THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant d'arrêter le conteneur. La valeur par défaut est "3".
    • Facultatif. TIMEOUT : 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 3 600.La valeur par défaut est 1.
    • Facultatif. PERIOD : période (en secondes) à laquelle effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 3 600 secondes. La valeur par défaut est de 10 secondes.

  3. Créez ou mettez à jour l'instance à l'aide de la commande suivante :
    gcloud beta run instances replace instance.yaml

Exigences et comportement de la vérification d'activité

Type de vérification Conditions requises Comportement
Activité HTTP Créez un point de terminaison de vérification de l'état d'état HTTP
Utilisez HTTP/1
La vérification d'activité ne démarre qu'une fois la vérification de démarrage réussie. Une fois la vérification configurée et la vérification de démarrage réussie, Cloud Run envoie une requête HTTP GET au point de terminaison de la vérification de l'état l'état (par exemple, /health). Toute réponse 2XX ou 3XX est considérée comme réussie. Tout le reste indique un échec.

Si une vérification d'activité échoue dans le délai spécifié (failureThreshold * periodSeconds), le conteneur est arrêté à l'aide d'un signal SIGKILL. Toute requête restante encore diffusée par le conteneur est interrompue par le code d'état HTTP 503. Une fois le conteneur arrêté, l'autoscaling Cloud Run démarre une nouvelle instance de conteneur.
Activité gRPC Mettez en œuvre le protocole de vérification d'état gRPC dans votre instance Cloud Run. Si vous configurez une vérification de démarrage gRPC, la vérification d'activité ne commence qu'une fois la vérification de démarrage réussie.

Une fois la vérification d'activité configurée et toute vérification de démarrage réussie, Cloud Run envoie une requête de vérification de l'état d'état à l'instance.

Si une vérification d'activité échoue dans le délai spécifié (failureThreshold * periodSeconds), le conteneur est arrêté à l'aide d'un signal SIGKILL. Une fois le conteneur arrêté, l'autoscaling Cloud Run démarre une nouvelle instance de conteneur.

Configurer des vérifications d'aptitude

Les limites suivantes s'appliquent aux sondes de disponibilité :

  • Si vous activez l'affinité de session, Cloud Run continue d'envoyer des requêtes à la même instance, même si son test d'aptitude échoue.

Vous pouvez configurer une vérification de disponibilité à l'aide de Google Cloud CLI ou de YAML :

gcloud

Compatibilité HTTP

Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.

Exécutez la commande suivante :

gcloud beta run instances deploy INSTANCE \
    --image=IMAGE_URL \
    --readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Remplacez les éléments suivants :

  • INSTANCE : nom de votre instance Cloud Run.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • PATH (facultatif) : chemin relatif au point de terminaison HTTP, par exemple /are_you_ready. Le chemin par défaut est /.
  • CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance. Le port par défaut est le port d'entrée principal.
  • SUCCESS_THRESHOLD (facultatif) : nombre minimal de succès consécutifs requis pour que la vérification soit considérée comme réussie après un échec. La valeur par défaut est 2.
  • FAILURE_THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant de signaler un échec, ce qui entraîne l'arrêt de la réception du trafic par l'instance. La valeur par défaut est 3.
  • TIMEOUT (facultatif) : 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 300. La valeur par défaut est 1.
  • PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 300. La valeur par défaut est de 10 secondes.

Préparation de gRPC

Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.

Exécutez la commande suivante :

gcloud beta run instances deploy INSTANCE \
    --image=IMAGE_URL \
    --readiness-probe grpc.port=CONTAINER_PORT,grpc.instance=GRPC_INSTANCE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD

Remplacez les éléments suivants :

  • INSTANCE : nom de votre instance Cloud Run.
  • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  • CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance. Le port par défaut est le port d'entrée principal.
  • GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de grpc.health.v1.HealthCheckRequest lorsque le RPC grpc.health.v1.Health.Check est appelé.
  • SUCCESS_THRESHOLD (facultatif) : nombre minimal de succès consécutifs requis pour que la vérification soit considérée comme réussie après un échec. La valeur par défaut est 2.
  • FAILURE_THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant de signaler un échec, ce qui entraîne l'arrêt de la réception du trafic par l'instance. La valeur par défaut est 3.
  • TIMEOUT (facultatif) : 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 300. La valeur par défaut est 1.
  • PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 300. La valeur par défaut est de 10 secondes.

YAML

Compatibilité HTTP

Ajoutez un point de terminaison HTTP/1 (valeur par défaut de Cloud Run, et non HTTP/2) dans le code de votre instance pour répondre à la vérification. Le nom du point de terminaison (par exemple, /startup, /health ou /are_you_ready) doit correspondre à path dans la configuration de la vérification. Les points de terminaison HTTP de vérification de l'état d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison d'instance HTTP exposés en externe.

  1. Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configurez l'attribut readinessProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            readinessProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
              successThreshold: SUCCESS_THRESHOLD
              failureThreshold: FAILURE_THRESHOLD
              timeoutSeconds: TIMEOUT
              periodSeconds: PERIOD

    Remplacez les éléments suivants :

    • INSTANCE : nom de votre instance Cloud Run.
    • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • PATH (facultatif) : chemin relatif au point de terminaison HTTP, par exemple /are_you_ready. Le chemin par défaut est /.
    • CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance. Le port par défaut est le port d'entrée principal.
    • SUCCESS_THRESHOLD (facultatif) : nombre minimal de succès consécutifs requis pour que la vérification soit considérée comme réussie après un échec. La valeur par défaut est 2.
    • FAILURE_THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant de signaler un échec, ce qui entraîne l'arrêt de la réception du trafic par l'instance. La valeur par défaut est 3.
    • TIMEOUT (facultatif) : 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 300. La valeur par défaut est 1.
    • PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 300. La valeur par défaut est de 10 secondes.

  3. Créez ou mettez à jour l'instance à l'aide de la commande suivante :
    gcloud beta run instances replace instance.yaml

Préparation de gRPC

Assurez-vous que votre image de conteneur implémente le protocole de vérification de l'état gRPC.

  1. Si vous créez une instance, ignorez cette étape. Si vous mettez à jour une instance existante, téléchargez sa configuration YAML :
    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Configurez l'attribut readinessProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            readinessProbe:
              grpc:
                port: CONTAINER_PORT
                instance: GRPC_INSTANCE
              successThreshold: SUCCESS_THRESHOLD
              failureThreshold: FAILURE_THRESHOLD
              timeoutSeconds: TIMEOUT
              periodSeconds: PERIOD

    Remplacez les éléments suivants :

    • INSTANCE : nom de votre instance Cloud Run.
    • IMAGE_URL : référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • CONTAINER_PORT (facultatif) : port de conteneur utilisé pour votre instance. Le port par défaut est le port d'entrée principal.
    • GRPC_INSTANCE (facultatif) : si cette valeur est définie, elle est utilisée dans le champ d'instance de grpc.health.v1.HealthCheckRequest lorsque le RPC grpc.health.v1.Health.Check est appelé.
    • SUCCESS_THRESHOLD (facultatif) : nombre minimal de succès consécutifs requis pour que la vérification soit considérée comme réussie après un échec. La valeur par défaut est 2.
    • FAILURE_THRESHOLD (facultatif) : nombre de tentatives d'exécution de la vérification avant de signaler un échec, ce qui entraîne l'arrêt de la réception du trafic par l'instance. La valeur par défaut est 3.
    • TIMEOUT (facultatif) : 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 300. La valeur par défaut est 1.
    • PERIOD (facultatif) : période (en secondes) à laquelle effectuer la vérification. Par exemple, 2 pour effectuer la vérification toutes les deux secondes. Spécifiez une valeur comprise entre 1 et 300. La valeur par défaut est de 10 secondes.

  3. Créez ou mettez à jour l'instance à l'aide de la commande suivante :
    gcloud beta run instances replace instance.yaml

Allocation du processeur

  • Le processeur est toujours alloué lorsque les vérifications s'exécutent.
  • Toutes les vérifications sont facturées pour l'utilisation de la mémoire et des processeurs, mais il n'y a pas de frais basés sur les requêtes.

Étapes suivantes