Controlli di integrità dei container (servizi)

Puoi configurare probe di controllo di integrità all'avvio HTTP, TCP e gRPC, insieme ai probe di attività HTTP e gRPC per servizi Cloud Run nuovi ed esistenti. Puoi configurare un probe di attività o di avvio per un servizio Cloud Run utilizzando il file YAML. La configurazione varia in base al tipo di probe.

Puoi usare i probe di controllo dell'attività per determinare quando riavviare un container, ad esempio per rilevare un deadlock in cui è in esecuzione un servizio, ma non puoi progredire. Il riavvio di un container in questo caso può aumentare la disponibilità del servizio in caso di bug.

Puoi utilizzare i probe di avvio per determinare quando un container è stato avviato ed è pronto ad accettare traffico.

Quando configuri un probe di avvio, i controlli di attività vengono disabilitati finché il probe di avvio non determina che il container è stato avviato, per evitare interferenze con l'avvio del servizio.

I probe di avvio sono particolarmente utili se utilizzi controlli di attività su container ad avvio lento, perché ne impediscono l'arresto prematura prima che i container siano operativi.

Tieni presente che, quando un servizio riscontra errori ripetuti di avvio o di probe di attività, Cloud Run limita i riavvii delle istanze per evitare loop di arresti anomali incontrollati.

Fatturazione e allocazione della CPU

  • La CPU è allocata per ogni probe.
  • A tutti i probe viene addebitato il consumo di CPU e memoria, ma non è previsto alcun addebito basato su richiesta.

Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche per le revisioni successive verrà applicata automaticamente questa impostazione di configurazione, a meno che non apporti aggiornamenti espliciti per modificarla.

Configura probe di avvio

Puoi configurare probe HTTP, TCP e gRPC.

configura un probe di avvio HTTP

Non esistono probe di avvio HTTP predefiniti per HTTP, ma puoi configurarne uno per il tuo servizio Cloud Run. Tieni presente che l'utilizzo di un probe di controllo di integrità HTTP richiede la creazione di un endpoint di controllo di integrità HTTP corrispondente nel servizio per rispondere al probe. Inoltre, il servizio deve utilizzare HTTP/1 (il valore predefinito di Cloud Run), non HTTP/2.

Dopo aver configurato il probe di avvio, Cloud Run invia una richiesta HTTP GET all'endpoint di controllo di integrità del servizio (ad esempio, /ready). Qualsiasi risposta tra 200 e 400 è positiva, tutto il resto indica un errore.

Se un probe di avvio non ha esito positivo entro il tempo specificato (failureThreshold * periodSeconds), che non può superare i 240 secondi, il container viene arrestato.

Se il probe di attività HTTP ha esito positivo entro il periodo di tempo specificato e hai configurato un probe di attività HTTP, viene avviato.

Puoi configurare un probe di avvio HTTP utilizzando la console Google Cloud per un servizio esistente o YAML per un servizio nuovo o esistente:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che vuoi configurare.

  3. Fai clic sulla scheda YAML.

  4. Fai clic su Modifica e configura l'attributo startupProbe come illustrato di seguito:

    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

    sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH con il percorso relativo all'endpoint HTTP, ad esempio /ready.
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • (FACOLTATIVO) httpHeaders può essere utilizzato per fornire più intestazioni personalizzate o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE, come mostrato.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
    • (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 240 secondi. Il valore predefinito è 10 secondi.
  5. Fai clic su Salva ed esegui il deployment di nuova revisione.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare i campi solo come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura l'attributo startupProbe come mostrato di seguito:

    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

    sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH con il percorso relativo all'endpoint HTTP, ad esempio /ready.
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • (FACOLTATIVO) httpHeaders può essere utilizzato per fornire più intestazioni personalizzate o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE, come mostrato.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
    • (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 240 secondi. Il valore predefinito è 10 secondi.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Configura il servizio Cloud Run con l'attributo startup_probe come mostrato di seguito:

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 = "*"
          }
        }
      }
    }
  }
}

Crea endpoint per il controllo di integrità HTTP

Se configuri il servizio Cloud Run per un probe di avvio HTTP o un probe di attività, devi aggiungere un endpoint nel codice di servizio per rispondere al probe. L'endpoint può avere il nome che preferisci, ad esempio /startup o /ready, ma deve corrispondere ai valori specificati per path nella configurazione del probe. Ad esempio, se specifichi /ready per un probe di avvio HTTP, specifichi path nella configurazione del probe come mostrato di seguito:

startupProbe:
  httpGet:
    path: /ready

Gli endpoint per il controllo di integrità HTTP sono accessibili dall'esterno e seguono gli stessi principi di qualsiasi altro endpoint di servizio HTTP esposto all'esterno.

Configura un probe di avvio TCP

Un probe di avvio TCP viene configurato automaticamente con valori predefiniti per un nuovo servizio Cloud Run se non configuri un probe di avvio autonomamente. Il probe predefinito è equivalente a quanto segue:

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

dove CONTAINER_PORT è impostato sulla porta del container utilizzata per il tuo servizio.

Puoi modificare questi valori predefiniti seguendo le istruzioni riportate in questa sezione.

Per i probe di avvio TCP, Cloud Run stabilisce una connessione TCP per aprire il socket TCP sulla porta specificata. Se Cloud Run non è in grado di stabilire una connessione, significa che si è verificato un errore.

Se un probe di avvio non ha esito positivo entro il tempo specificato (failureThreshold * periodSeconds), che non può superare i 240 secondi, il container viene arrestato.

Puoi configurare un probe di avvio TCP utilizzando la console Google Cloud per un servizio esistente o YAML per un servizio nuovo o esistente:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che vuoi configurare.

  3. Fai clic sulla scheda YAML.

  4. Fai clic su Modifica e configura l'attributo startupProbe come illustrato di seguito:

    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

    sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • (Facoltativo) DELAY con il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
    • (Facoltativo) THRESHOLD con il numero di tentativi del probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (Facoltativo) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 240 secondi. Il valore predefinito è 10 secondi.
  5. Fai clic su Salva ed esegui il deployment di nuova revisione.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare i campi solo come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura l'attributo startupProbe come mostrato di seguito:

    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

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
    • THRESHOLD con il numero di tentativi del probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 240 secondi. Il valore predefinito è 10 secondi.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Configura il servizio Cloud Run con l'attributo startup_probe come mostrato di seguito:

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
        }
      }
    }
  }
}

configura un probe di avvio gRPC

Per utilizzare un probe di avvio gRPC, devi implementare il protocollo per il controllo di integrità gRPC nel servizio Cloud Run, quindi configurare il probe di conseguenza, come descritto in questa sezione.

Puoi configurare un probe di avvio gRPC utilizzando la console Google Cloud per un servizio esistente o YAML per un servizio nuovo o esistente:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che vuoi configurare.

  3. Fai clic sulla scheda YAML.

  4. Fai clic su Modifica e configura l'attributo startupProbe come illustrato di seguito:

    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

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • GRPC_SERVICE con il nome del servizio gRPC a cui inviare il controllo di integrità.
    • (Facoltativo) DELAY con il numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
    • (Facoltativo) THRESHOLD con il numero di tentativi del probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (Facoltativo) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 240 secondi. Il valore predefinito è 10 secondi.
  5. Fai clic su Salva ed esegui il deployment di nuova revisione.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare i campi solo come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura l'attributo startupProbe come mostrato di seguito:

    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

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • GRPC_SERVICE con il nome del servizio gRPC a cui inviare il controllo di integrità.
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
      • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
      • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSecond. Specifica un valore compreso tra 1 e 240. Il valore predefinito è 1.
      • (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
      • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 e 240 secondi. Il valore predefinito è 10 secondi.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Il servizio deve implementare i controlli di integrità GRPC.

Configura il servizio Cloud Run con l'attributo startup_probe come mostrato di seguito:

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"
        }
      }
    }
  }
}

configura un probe di attività

Puoi configurare probe di attività HTTP e gRPC.

configura un probe di attività HTTP

Se configuri un probe di avvio HTTP, il probe di attività viene avviato solo dopo l'esito positivo del probe di avvio. Tieni presente che l'utilizzo di un probe di controllo di integrità HTTP richiede la creazione di un endpoint di controllo di integrità HTTP corrispondente nel servizio per rispondere al probe. Inoltre, il servizio deve utilizzare HTTP/1 (il valore predefinito di Cloud Run), non HTTP/2.

Dopo aver configurato il probe di attività e se ogni probe di avvio ha esito positivo, Cloud Run invia una richiesta HTTP GET all'endpoint del controllo di integrità del servizio (ad esempio, /health). Qualsiasi risposta tra 200 e 400 è positiva, tutto il resto indica un errore.

Se un probe di attività non ha esito positivo entro il periodo di tempo specificato (failureThreshold * periodSeconds), il container viene arrestato utilizzando un indicatore SIGKILL. Tutte le richieste rimanenti che erano ancora gestite dal container vengono terminate con il codice di stato HTTP 503. La scalabilità automatica di Cloud Run avvia una nuova istanza di container dopo l'arresto del container.

Puoi configurare un probe di attività HTTP utilizzando la console Google Cloud per un servizio esistente o YAML per un servizio nuovo o esistente:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che vuoi configurare.

  3. Fai clic sulla scheda YAML.

  4. Fai clic su Modifica e configura l'attributo livenessProbe come illustrato di seguito:

    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

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH con il percorso relativo all'endpoint HTTP, ad esempio /ready.
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • (FACOLTATIVO) httpHeaders può essere utilizzato per fornire più intestazioni personalizzate o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE, come mostrato.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 3600. Il valore predefinito è 1.
    • (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
  5. Fai clic su Salva ed esegui il deployment di nuova revisione.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare i campi solo come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura l'attributo livenessProbe come mostrato di seguito:

    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

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH con il percorso relativo all'endpoint HTTP, ad esempio /ready.
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • (FACOLTATIVO) httpHeaders può essere utilizzato per fornire più intestazioni personalizzate o ripetute utilizzando i campi HEADER_NAME e HEADER_VALUE, come mostrato.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 3600. Il valore predefinito è 1.
    • (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Il servizio deve implementare i controlli di integrità GRPC.

Configura il servizio Cloud Run con l'attributo liveness_probe come mostrato di seguito:

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 = "*"
          }
        }
      }
    }
  }
}

Dopo la configurazione del probe HTTP, devi anche creare un endpoint per il controllo di integrità per rispondere al probe.

Configura un probe di attività gRPC

Se configuri un probe di avvio gRPC, il probe di attività viene avviato solo dopo che il probe di avvio ha esito positivo. Tieni presente che l'utilizzo di un probe di controllo di integrità gRPC richiede l'implementazione del protocollo per il controllo di integrità gRPC nel servizio Cloud Run.

Dopo che il probe di attività è stato configurato e ogni probe di avvio ha esito positivo, Cloud Run invia una richiesta di controllo di integrità al servizio.

Se un probe di attività non ha esito positivo entro il periodo di tempo specificato (failureThreshold * periodSeconds), il container viene arrestato utilizzando un indicatore SIGKILL. Dopo l'arresto del container, la scalabilità automatica di Cloud Run avvia una nuova istanza di container.

Puoi configurare un probe di attività gRPC utilizzando la console Google Cloud per un servizio esistente o YAML per un servizio nuovo o esistente:

Console

  1. Vai a Cloud Run

  2. Fai clic sul servizio che vuoi configurare.

  3. Fai clic sulla scheda YAML.

  4. Fai clic su Modifica e configura l'attributo livenessProbe come illustrato di seguito:

    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

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • GRPC_SERVICE con il nome del servizio gRPC a cui inviare il controllo di integrità.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 3600. Il valore predefinito è 1.
    • (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
  5. Fai clic su Salva ed esegui il deployment di nuova revisione.

YAML

Puoi scaricare e visualizzare le configurazioni di servizio esistenti utilizzando il comando gcloud run services describe --format export, che restituisce risultati puliti in formato YAML. Puoi quindi modificare i campi descritti di seguito e caricare il file YAML modificato utilizzando il comando gcloud run services replace. Assicurati di modificare i campi solo come documentato.

  1. Per visualizzare e scaricare la configurazione:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configura l'attributo livenessProbe come mostrato di seguito:

    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

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (FACOLTATIVO) CONTAINER_PORT deve essere impostato sulla porta del container utilizzata per il tuo servizio.
    • GRPC_SERVICE con il nome del servizio gRPC a cui inviare il controllo di integrità.
    • (FACOLTATIVO) DELAY con numero di secondi di attesa dopo l'avvio del container prima di eseguire il primo probe. Specifica un valore compreso tra 0 e 240 secondi. Il valore predefinito è 0 secondi.
    • (FACOLTATIVO) TIMEOUT con il numero di secondi di attesa fino al timeout del probe. Questo valore non può superare il valore specificato per periodSeconds. Specifica un valore compreso tra 1 e 3600. Il valore predefinito è 1.
    • (FACOLTATIVO) THRESHOLD con il numero di tentativi del probe prima di contrassegnare il container come Non pronto. Il valore predefinito è 3.
    • (FACOLTATIVO) PERIOD con il periodo (in secondi) in cui eseguire il probe. Ad esempio, 2 per eseguire il probe ogni 2 secondi. Specifica un valore compreso tra 1 secondo e 3600 secondi. Il valore predefinito è 10 secondi.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Configura il servizio Cloud Run con l'attributo liveness_probe come mostrato di seguito:

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"
        }
      }
    }
  }
}