Vérifications d'état de conteneur (services)

Vous pouvez configurer des vérifications d'état de démarrage HTTP, TCP et gRPC, ainsi que des vérifications d'activité HTTP et gRPC pour les services Cloud Run nouveaux et existants. Vous configurez une vérification de démarrage ou d'activité pour un service Cloud Run à l'aide du fichier YAML. La configuration varie en fonction du type de vérification.

Vous pouvez utiliser des vérifications d'activité pour déterminer quand redémarrer un conteneur, par exemple pour détecter un interblocage où un service est en cours d'exécution, mais ne peut pas progresser. Dans ce cas, le redémarrage d'un conteneur peut augmenter la disponibilité du service en cas de bugs.

Vous pouvez utiliser des vérifications de démarrage pour déterminer quand un conteneur a démarré et est prêt à accepter le trafic.

Lorsque vous configurez une vérification de démarrage, les vérifications d'activité sont désactivées jusqu'à ce que la vérification de démarrage détermine que le conteneur est démarré, afin d'éviter toute interférence avec le démarrage du service.

Les vérifications de démarrage sont particulièrement utiles si vous utilisez des contrôles d'activité sur des conteneurs à démarrage lent, car elles les empêchent de s'arrêter prématurément avant que les conteneurs ne soient opérationnels.

Sachez que lorsqu'un service rencontre des échecs répétés de démarrage ou de vérification d'activité, Cloud Run limite les redémarrages d'instances pour éviter les boucles de plantage non contrôlées.

Facturation et allocation de processeurs

  • Les processeurs sont alloués à chaque vérification.
  • 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.

Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.

Configurer des vérifications de démarrage

Vous pouvez configurer des vérifications HTTP, TCP et gRPC.

Configurer une vérification de démarrage HTTP

Il n'existe pas de vérifications de démarrage HTTP par défaut pour HTTP, mais vous pouvez en configurer une pour votre service Cloud Run. Notez que l'utilisation d'une vérification d'état HTTP nécessite de créer un point de terminaison de vérification d'état HTTP correspondant dans votre service pour répondre à la vérification. En outre, votre service doit utiliser HTTP/1 (valeur par défaut de Cloud Run) et non HTTP/2.

Une fois la vérification de démarrage configurée, Cloud Run envoie une requête HTTP GET au point de terminaison de la vérification d'état du service (par exemple, /ready). Toute réponse comprise entre 200 et 400 est réussie. Tout autre élément indique un échec.

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é.

Si la vérification de démarrage HTTP réussit dans le délai spécifié et que vous avez configuré une vérification d'activité HTTP, celle-ci est démarrée.

Vous pouvez configurer une vérification de démarrage HTTP à l'aide de la console Google Cloud pour un service existant ou de YAML pour un nouveau service ou un service existant :

Console

  1. Accédez à Cloud Run

  2. Cliquez sur le service que vous souhaitez configurer.

  3. Cliquez sur l'onglet YAML.

  4. Cliquez sur Modifier et configurez l'attribut startupProbe comme indiqué :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    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

    replace

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE_URL par une 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 par le chemin relatif au point de terminaison HTTP, par exemple, /ready.
    • (FACULTATIF) CONTAINER_PORT doit être défini sur le port de conteneur utilisé pour votre service.
    • (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) 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 seconde 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 avant de marquer le conteneur comme Non prêt. 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 seconde et 240 secondes. La valeur par défaut est de 10 secondes.
  5. Cliquez sur Enregistrer et déployer la nouvelle révision.

YAML

Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    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

    replace

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE_URL par une 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 par le chemin relatif au point de terminaison HTTP, par exemple, /ready.
    • (FACULTATIF) CONTAINER_PORT doit être défini sur le port de conteneur utilisé pour votre service.
    • (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) 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 seconde 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 avant de marquer le conteneur comme Non prêt. 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 seconde et 240 secondes. La valeur par défaut est de 10 secondes.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Configurez votre service Cloud Run avec l'attribut startup_probe comme indiqué ci-dessous :

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        http_get {
          path = "/"
          # Custom headers to set in the request
          # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#http_headers
          http_headers {
            name  = "Access-Control-Allow-Origin"
            value = "*"
          }
        }
      }
    }
  }
}

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

Si vous configurez votre service Cloud Run pour une vérification de démarrage HTTP ou une vérification d'activité, vous devez ajouter un point de terminaison dans votre code de service pour répondre à la vérification. Le point de terminaison peut porter n'importe quel nom, par exemple /startup ou /ready, mais il 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, vous spécifiez path dans votre configuration de vérification, comme indiqué ci-dessous :

startupProbe:
  httpGet:
    path: /ready

Les points de terminaison HTTP de vérification d'état sont accessibles en externe et suivent les mêmes principes que tous les autres points de terminaison de service HTTP exposés en externe.

Configurer une vérification de démarrage TCP

Si vous ne configurez pas vous-même une vérification de démarrage, une vérification de démarrage TCP est automatiquement configurée avec des valeurs par défaut pour un nouveau service Cloud Run. La vérification par défaut est équivalente à la suivante :

startupProbe:
  tcpSocket:
    port: CONTAINER_PORT
  timeoutSeconds: 240
  periodSeconds: 240
  failureThreshold: 1

CONTAINER_PORT est défini sur le port de conteneur utilisé pour votre service.

Vous pouvez modifier ces valeurs par défaut en suivant les instructions de cette section.

Pour les vérifications de démarrage TCP, 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 échoue dans le délai spécifié (failureThreshold * periodSeconds), qui ne peut pas dépasser 240 secondes, le conteneur est arrêté.

Vous pouvez configurer une vérification de démarrage TCP à l'aide de la console Google Cloud pour un service existant ou de YAML pour un service nouveau ou existant :

Console

  1. Accédez à Cloud Run

  2. Cliquez sur le service que vous souhaitez configurer.

  3. Cliquez sur l'onglet YAML.

  4. Cliquez sur Modifier et configurez l'attribut startupProbe comme indiqué :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              failureThreshold: THRESHOLD
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              periodSeconds: PERIOD
              tcpSocket:
                port: CONTAINER_PORT

    replace

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE_URL par une 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
    • (FACULTATIF) CONTAINER_PORT doit être défini sur le port de conteneur utilisé pour votre service.
    • (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 seconde 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 avant de marquer le conteneur comme Non prêt. 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 seconde et 240 secondes. La valeur par défaut est de 10 secondes.
  5. Cliquez sur Enregistrer et déployer la nouvelle révision.

YAML

Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              tcpSocket:
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Remplacer

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE_URL par une 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
    • (FACULTATIF) CONTAINER_PORT doit être défini sur le port de conteneur utilisé pour votre service.
    • 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 seconde 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 avant de marquer le conteneur comme Non prêt. 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. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Configurez votre service Cloud Run avec l'attribut startup_probe comme indiqué ci-dessous :

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        tcp_socket {
          port = 8080
        }
      }
    }
  }
}

Configurer une vérification de démarrage gRPC

Pour utiliser une vérification de démarrage gRPC, vous devez mettre en œuvre le protocole de vérification de l'état gRPC dans votre service Cloud Run, puis configurer la vérification en conséquence, comme décrit dans cette section.

Vous pouvez configurer une vérification de démarrage gRPC à l'aide de la console Google Cloud pour un service existant ou de YAML pour un service nouveau ou existant :

Console

  1. Accédez à Cloud Run

  2. Cliquez sur le service que vous souhaitez configurer.

  3. Cliquez sur l'onglet YAML.

  4. Cliquez sur Modifier et configurez l'attribut startupProbe comme indiqué :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              grpc:
                service: GRPC_SERVICE
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Remplacer

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE_URL par une 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
    • (FACULTATIF) CONTAINER_PORT doit être défini sur le port de conteneur utilisé pour votre service.
    • GRPC_SERVICE par le nom du service gRPC auquel envoyer la vérification d'état.
    • (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 seconde 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 avant de marquer le conteneur comme Non prêt. 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 seconde et 240 secondes. La valeur par défaut est de 10 secondes.
  5. Cliquez sur Enregistrer et déployer la nouvelle révision.

YAML

Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configurez l'attribut startupProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              grpc:
                service: GRPC_SERVICE
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Remplacer

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE_URL par une 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_SERVICE par le nom du service gRPC auquel envoyer la vérification d'état.
    • (FACULTATIF) CONTAINER_PORT doit être défini sur le port de conteneur utilisé pour votre service.
      • (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 seconde 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 avant de marquer le conteneur comme Non prêt. 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 seconde et 240 secondes. La valeur par défaut est de 10 secondes.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Votre service doit mettre en œuvre les vérifications d'état gRPC.

Configurez votre service Cloud Run avec l'attribut startup_probe comme indiqué ci-dessous :

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  template {
    containers {
      # Note: Change to the name of your image
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      startup_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        grpc {
          # Note: Change to the name of your pre-existing grpc health status service
          service = "grpc.health.v1.Health"
        }
      }
    }
  }
}

Configurer une vérification d'activité

Vous pouvez configurer des vérifications d'activité HTTP et gRPC.

Configurer une vérification d'activité HTTP

Si vous configurez une vérification de démarrage HTTP, celle-ci ne démarre qu'une fois la vérification de démarrage réussie. Notez que l'utilisation d'une vérification d'état HTTP nécessite de créer un point de terminaison de vérification d'état HTTP correspondant dans votre service pour répondre à la vérification. En outre, votre service doit utiliser HTTP/1 (valeur par défaut de Cloud Run) et non HTTP/2.

Une fois que la vérification d'activité est configurée et que la vérification d'activité réussit, Cloud Run envoie une requête HTTP GET au point de terminaison de la vérification d'état du service (par exemple, /health). Toute réponse comprise entre 200 et 400 est 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.

Vous pouvez configurer une vérification d'activité HTTP à l'aide de la console Google Cloud pour un service existant ou de YAML pour un nouveau service ou un service existant :

Console

  1. Accédez à Cloud Run

  2. Cliquez sur le service que vous souhaitez configurer.

  3. Cliquez sur l'onglet YAML.

  4. Cliquez sur Modifier et configurez l'attribut livenessProbe comme indiqué :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        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

    Remplacer

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE_URL par une 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 par le chemin relatif au point de terminaison HTTP, par exemple, /ready.
    • (FACULTATIF) CONTAINER_PORT doit être défini sur le port de conteneur utilisé pour votre service.
    • (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) 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 seconde 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 3 600. La valeur par défaut est 1.
    • (FACULTATIF) THRESHOLD par le nombre de tentatives d'exécution de la vérification avant de marquer le conteneur comme Non prêt. 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 seconde et 3 600 secondes. La valeur par défaut est de 10 secondes.
  5. Cliquez sur Enregistrer et déployer la nouvelle révision.

YAML

Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configurez l'attribut livenessProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        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

    Remplacer

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE_URL par une 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 par le chemin relatif au point de terminaison HTTP, par exemple, /ready.
    • (FACULTATIF) CONTAINER_PORT doit être défini sur le port de conteneur utilisé pour votre service.
    • (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) 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 seconde 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 3 600. La valeur par défaut est 1.
    • (FACULTATIF) THRESHOLD par le nombre de tentatives d'exécution de la vérification avant de marquer le conteneur comme Non prêt. 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 seconde et 3 600 secondes. La valeur par défaut est de 10 secondes.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Votre service doit mettre en œuvre les vérifications d'état gRPC.

Configurez votre service Cloud Run avec l'attribut liveness_probe comme indiqué ci-dessous :

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      liveness_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        http_get {
          path = "/"
          # Custom headers to set in the request
          # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#http_headers
          http_headers {
            name  = "Access-Control-Allow-Origin"
            value = "*"
          }
        }
      }
    }
  }
}

Après la configuration de la vérification HTTP, vous devez également créer un point de terminaison de vérification d'état pour répondre à la vérification.

Configurer une vérification d'activité gRPC

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. Notez que l'utilisation d'une vérification d'état gRPC nécessite la mise en œuvre du protocole de vérification d'état gRPC dans votre service Cloud Run.

Une fois que la vérification d'activité est configurée et que toute vérification de démarrage a abouti, Cloud Run envoie une requête de vérification d'état au service.

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.

Vous pouvez configurer une vérification d'activité gRPC à l'aide de la console Google Cloud pour un service existant ou de YAML pour un nouveau service ou un service existant :

Console

  1. Accédez à Cloud Run

  2. Cliquez sur le service que vous souhaitez configurer.

  3. Cliquez sur l'onglet YAML.

  4. Cliquez sur Modifier et configurez l'attribut livenessProbe comme indiqué :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
            image: IMAGE_URL
            livenessProbe:
              grpc:
                port: CONTAINER_PORT
                service: GRPC_SERVICE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Remplacer

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE_URL par une 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
    • (FACULTATIF) CONTAINER_PORT doit être défini sur le port de conteneur utilisé pour votre service.
    • GRPC_SERVICE par le nom du service gRPC auquel envoyer la vérification d'état.
    • (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 seconde 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 3 600. La valeur par défaut est 1.
    • (FACULTATIF) THRESHOLD par le nombre de tentatives d'exécution de la vérification avant de marquer le conteneur comme Non prêt. 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 seconde et 3 600 secondes. La valeur par défaut est de 10 secondes.
  5. Cliquez sur Enregistrer et déployer la nouvelle révision.

YAML

Vous pouvez télécharger et afficher les configurations de service existantes à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configurez l'attribut livenessProbe comme indiqué ci-dessous :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            livenessProbe:
              grpc:
                port: CONTAINER_PORT
                service: GRPC_SERVICE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    Remplacer

    • SERVICE par le nom de votre service Cloud Run ;
    • IMAGE_URL par une 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
    • (FACULTATIF) CONTAINER_PORT doit être défini sur le port de conteneur utilisé pour votre service.
    • GRPC_SERVICE par le nom du service gRPC auquel envoyer la vérification d'état.
    • (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 seconde 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 3 600. La valeur par défaut est 1.
    • (FACULTATIF) THRESHOLD par le nombre de tentatives d'exécution de la vérification avant de marquer le conteneur comme Non prêt. 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 seconde et 3 600 secondes. La valeur par défaut est de 10 secondes.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Configurez votre service Cloud Run avec l'attribut liveness_probe comme indiqué ci-dessous :

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-healthcheck"
  location = "us-central1"

  template {
    containers {
      # Note: Change to the name of your image
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      liveness_probe {
        failure_threshold     = 5
        initial_delay_seconds = 10
        timeout_seconds       = 3
        period_seconds        = 3

        # Note: Change to the name of your pre-existing grpc health status service
        grpc {
          service = "grpc.health.v1.Health"
        }
      }
    }
  }
}