Verificações de integridade do contêiner (serviços)

É possível configurar sondagens de verificação de integridade de inicialização HTTP, TCP e gRPC, além de sondagens de atividade HTTP e gRPC para serviços novos e atuais do Cloud Run. Configure uma sondagem de inicialização ou atividade para um serviço do Cloud Run usando o arquivo YAML. A configuração varia de acordo com o tipo de sondagem.

As sondagens de verificação de atividade podem ser usadas para determinar quando reiniciar um contêiner. Por exemplo, para capturar um impasse em que um serviço está em execução, mas não consegue progredir. A reinicialização de um contêiner nesse caso pode aumentar a disponibilidade do serviço em caso de bugs.

É possível usar sondagens de inicialização para determinar quando um contêiner foi iniciado e está pronto para aceitar o tráfego.

Quando você configura uma sondagem de inicialização, as verificações de atividade são desativadas até que ela verifique se o contêiner foi iniciado para evitar interferência na inicialização do serviço.

As sondagens de inicialização são especialmente úteis se você usa verificações de atividade em contêineres iniciais lentos, porque impedem que eles sejam encerrados prematuramente antes de os contêineres estarem funcionando.

Lembre-se que, quando um serviço passa por repetidas falhas na sondagem de inicialização ou atividade, o Cloud Run limita as reinicializações de instâncias para evitar loops de falha incontrolados.

Faturamento e alocação de CPU

  • A CPU é alocada para cada sondagem.
  • Todas as sondagens são cobradas pelo consumo de uso da memória e CPU, mas não há cobrança baseada em solicitação.

Qualquer mudança na configuração leva à criação de uma nova revisão. As próximas revisões também recebem automaticamente essa configuração, a menos que você faça atualizações explícitas para alterá-la.

Configurar sondagens de inicialização

É possível configurar sondagens HTTP, TCP e gRPC.

Configurar uma sondagem de inicialização HTTP

Não há sondagens de inicialização HTTP padrão para HTTP, mas é possível configurar uma para o serviço do Cloud Run. Para usar uma sondagem de verificação de integridade HTTP, é necessário criar um endpoint de verificação de integridade HTTP correspondente no seu serviço para responder à sondagem. Além disso, o serviço precisa usar HTTP/1 (o padrão do Cloud Run), e não HTTP/2.

Após a configuração da sondagem de inicialização, o Cloud Run faz uma solicitação HTTP GET para o endpoint da verificação de integridade do serviço (por exemplo, /ready). Qualquer resposta entre 200 e 400 é um sucesso, e todo o restante indica falha.

Se uma sondagem de inicialização não for bem-sucedida dentro do tempo especificado (failureThreshold * periodSeconds), que não pode exceder 240 segundos, o contêiner será encerrado.

Se a sondagem de inicialização HTTP for concluída no tempo especificado, e você configurou uma sondagem de atividade HTTP, ela será iniciada.

É possível configurar uma sondagem de inicialização HTTP usando o console do Google Cloud para um serviço atual ou o YAML para um serviço novo ou atual:

Console

  1. Acesse o Cloud Run

  2. Clique no serviço que você quer configurar.

  3. Clique na guia YAML.

  4. Clique em Editar e configure o atributo startupProbe como mostrado:

    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

    substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH pelo caminho relativo para o endpoint HTTP, por exemplo, /ready.
    • (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
    • (OPCIONAL) httpHeaders pode ser usado para fornecer vários cabeçalhos personalizados ou repetidos usando os campos HEADER_NAME e HEADER_VALUE, conforme mostrado.
    • (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
    • (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem expire. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 240. O padrão é 1.
    • (OPCIONAL) THRESHOLD pelo número de vezes para tentar novamente a sondagem antes de marcar o contêiner como Não está pronto. O valor padrão é 3.
    • (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita. Por exemplo, 2 para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 240 segundos. O valor padrão é de 10 segundos.
  5. Clique em Salvar e implantar nova revisão.

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para ver e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configure o atributo startupProbe como mostrado:

    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

    substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH pelo caminho relativo para o endpoint HTTP, por exemplo, /ready.
    • (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
    • (OPCIONAL) httpHeaders pode ser usado para fornecer vários cabeçalhos personalizados ou repetidos usando os campos HEADER_NAME e HEADER_VALUE, conforme mostrado.
    • (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
    • (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem expire. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 240. O padrão é 1.
    • (OPCIONAL) THRESHOLD pelo número de vezes para tentar novamente a sondagem antes de marcar o contêiner como Não está pronto. O valor padrão é 3.
    • (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita. Por exemplo, 2 para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 240 segundos. O valor padrão é de 10 segundos.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Configure o serviço do Cloud Run com o atributo startup_probe, conforme mostrado:

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

Criar endpoints de verificação de integridade HTTP

Se você configurar o serviço do Cloud Run para uma sondagem de atividade ou inicialização HTTP, vai precisar adicionar um endpoint ao código de serviço para responder à sondagem. O endpoint pode ter o nome que você quiser, por exemplo, /startup ou /ready, mas precisa corresponder aos valores especificados para path na configuração da sondagem. Por exemplo, se você especificar /ready para uma sondagem de inicialização HTTP, especifique path na configuração da sondagem, como mostrado:

startupProbe:
  httpGet:
    path: /ready

Os endpoints de verificação de integridade HTTP são acessíveis externamente e seguem os mesmos princípios de qualquer outro endpoint de serviço HTTP exposto externamente.

Configurar uma sondagem de inicialização TCP

Uma sondagem de inicialização TCP é configurada automaticamente com valores padrão para um novo serviço do Cloud Run se você não configurá-la. A sondagem padrão é equivalente ao seguinte:

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

em que CONTAINER_PORT é definido como a porta do contêiner usada para o serviço.

Para alterar esses valores padrão, siga as instruções nesta seção.

Para sondagens de inicialização TCP, o Cloud Run faz uma conexão TCP para abrir o socket TCP na porta especificada. Se o Cloud Run não conseguir estabelecer uma conexão, isso indica uma falha.

Se uma sondagem de inicialização não for bem-sucedida dentro do tempo especificado (failureThreshold * periodSeconds), que não pode exceder 240 segundos, o contêiner será encerrado.

É possível configurar uma sondagem de inicialização TCP usando o console do Google Cloud para um serviço atual ou YAML para um serviço novo ou atual:

Console

  1. Acesse o Cloud Run

  2. Clique no serviço que você quer configurar.

  3. Clique na guia YAML.

  4. Clique em Editar e configure o atributo startupProbe como mostrado:

    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

    substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
    • (Opcional) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
    • (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem expire. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 240. O padrão é 1.
    • (Opcional) THRESHOLD pelo número de vezes para tentar novamente a sondagem antes de marcar o contêiner como Não está pronto. O valor padrão é 3.
    • (Opcional) PERIOD com o período (em segundos) em que a sondagem deve ser feita. Por exemplo, 2 para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 240 segundos. O valor padrão é de 10 segundos.
  5. Clique em Salvar e implantar nova revisão.

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para ver e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configure o atributo startupProbe como mostrado:

    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

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
    • DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
    • (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem expire. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 240. O padrão é 1.
    • THRESHOLD pelo número de vezes que a sondagem será repetida antes de marcar o contêiner como Não está pronto. O valor padrão é 3.
    • PERIOD com período (em segundos) em que a sondagem deve ser feita. Por exemplo, 2 para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 240 segundos. O valor padrão é de 10 segundos.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Configure o serviço do Cloud Run com o atributo startup_probe, conforme mostrado:

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

Configurar uma sondagem de inicialização do gRPC

Para usar uma sondagem de inicialização do gRPC, é necessário implementar o protocolo gRPC de verificação de integridade no serviço do Cloud Run e configurá-la corretamente, conforme descrito nesta seção.

É possível configurar uma sondagem de inicialização gRPC usando o console do Google Cloud para um serviço atual ou YAML para um serviço novo ou atual:

Console

  1. Acesse o Cloud Run

  2. Clique no serviço que você quer configurar.

  3. Clique na guia YAML.

  4. Clique em Editar e configure o atributo startupProbe como mostrado:

    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

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
    • GRPC_SERVICE pelo nome do serviço gRPC para enviar a verificação de integridade.
    • (Opcional) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
    • (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem expire. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 240. O padrão é 1.
    • (Opcional) THRESHOLD pelo número de vezes para tentar novamente a sondagem antes de marcar o contêiner como Não está pronto. O valor padrão é 3.
    • (Opcional) PERIOD com o período (em segundos) em que a sondagem deve ser feita. Por exemplo, 2 para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 240 segundos. O valor padrão é de 10 segundos.
  5. Clique em Salvar e implantar nova revisão.

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para ver e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configure o atributo startupProbe como mostrado:

    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

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • GRPC_SERVICE pelo nome do serviço gRPC para enviar a verificação de integridade.
    • (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
      • (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
      • (OPCIONAL) TEMPO LIMITE pelo número de segundos de espera até que a sondagem expire. Esse valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 240. O padrão é 1.
      • (OPCIONAL) THRESHOLD pelo número de vezes para tentar novamente a sondagem antes de marcar o contêiner como Não está pronto. O valor padrão é 3.
      • (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita. Por exemplo, 2 para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 240 segundos. O valor padrão é de 10 segundos.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

O serviço precisa implementar verificações de integridade do GRPC.

Configure o serviço do Cloud Run com o atributo startup_probe, conforme mostrado:

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

Configurar uma sondagem de atividade

É possível configurar sondagens de atividade HTTP e gRPC.

Configurar uma sondagem de atividade HTTP

Se você configurar uma sondagem de inicialização HTTP, ela será iniciada apenas depois que a sondagem de atividade for concluída. Para usar uma sondagem de verificação de integridade HTTP, é necessário criar um endpoint de verificação de integridade HTTP correspondente no seu serviço para responder à sondagem. Além disso, o serviço precisa usar HTTP/1 (o padrão do Cloud Run), e não HTTP/2.

Após a configuração da sondagem de atividade e a conclusão de qualquer sondagem de inicialização, o Cloud Run faz uma solicitação HTTP GET para o endpoint da verificação de integridade do serviço (por exemplo, /health). Qualquer resposta entre 200 e 400 indica sucesso, e as demais indicam falha.

Se uma sondagem de atividade não for bem-sucedida dentro do tempo especificado (failureThreshold * periodSeconds), o contêiner será encerrado usando um sinal SIGKILL. Todas as solicitações restantes que ainda estavam sendo exibidas pelo contêiner são encerradas com o código de status HTTP 503. Depois que o contêiner é encerrado, o escalonamento automático do Cloud Run inicia uma nova instância de contêiner.

É possível configurar uma sondagem de atividade HTTP usando o console do Google Cloud para um serviço antigo, ou o YAML para um serviço novo ou antigo:

Console

  1. Acesse o Cloud Run

  2. Clique no serviço que você quer configurar.

  3. Clique na guia YAML.

  4. Clique em Editar e configure o atributo livenessProbe como mostrado:

    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

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH pelo caminho relativo para o endpoint HTTP, por exemplo, /ready.
    • (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
    • (OPCIONAL) httpHeaders pode ser usado para fornecer vários cabeçalhos personalizados ou repetidos usando os campos HEADER_NAME e HEADER_VALUE, conforme mostrado.
    • (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
    • (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem expire. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 3.600. O padrão é 1.
    • (OPCIONAL) THRESHOLD pelo número de vezes para tentar novamente a sondagem antes de marcar o contêiner como Não está pronto. O valor padrão é 3.
    • (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita. Por exemplo, 2 para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 3600 segundos. O valor padrão é de 10 segundos.
  5. Clique em Salvar e implantar nova revisão.

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para ver e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configure o atributo livenessProbe como mostrado:

    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

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH pelo caminho relativo para o endpoint HTTP, por exemplo, /ready.
    • (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
    • (OPCIONAL) httpHeaders pode ser usado para fornecer vários cabeçalhos personalizados ou repetidos usando os campos HEADER_NAME e HEADER_VALUE, conforme mostrado.
    • (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
    • (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem expire. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 3.600. O padrão é 1.
    • (OPCIONAL) THRESHOLD pelo número de vezes para tentar novamente a sondagem antes de marcar o contêiner como Não está pronto. O valor padrão é 3.
    • (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita. Por exemplo, 2 para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 3600 segundos. O valor padrão é de 10 segundos.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

O serviço precisa implementar verificações de integridade do GRPC.

Configure o serviço do Cloud Run com o atributo liveness_probe, conforme mostrado:

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

Após a configuração da sondagem HTTP, também é necessário criar um endpoint de verificação de integridade para responder à sondagem.

Configurar uma sondagem de atividade do gRPC

Se você configurar uma sondagem de inicialização do gRPC, a sondagem de atividade só vai começar depois que a sondagem de inicialização for concluída. O uso de uma sondagem de verificação de integridade do gRPC requer a implementação do protocolo de verificação de integridade do gRPC no serviço do Cloud Run.

Após a configuração da sondagem de atividade e da conclusão de qualquer sondagem de inicialização, o Cloud Run faz uma solicitação de verificação de integridade do serviço.

Se uma sondagem de atividade não for bem-sucedida dentro do tempo especificado (failureThreshold * periodSeconds), o contêiner será encerrado usando um sinal SIGKILL. Depois que o contêiner é encerrado, o escalonamento automático do Cloud Run inicia uma nova instância de contêiner.

É possível configurar uma sondagem de atividade gRPC usando o console do Google Cloud para um serviço antigo, ou o YAML para um serviço novo ou antigo:

Console

  1. Acesse o Cloud Run

  2. Clique no serviço que você quer configurar.

  3. Clique na guia YAML.

  4. Clique em Editar e configure o atributo livenessProbe como mostrado:

    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

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
    • GRPC_SERVICE pelo nome do serviço gRPC para enviar a verificação de integridade.
    • (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
    • (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem expire. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 3.600. O padrão é 1.
    • (OPCIONAL) THRESHOLD pelo número de vezes para tentar novamente a sondagem antes de marcar o contêiner como Não está pronto. O valor padrão é 3.
    • (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita. Por exemplo, 2 para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 3600 segundos. O valor padrão é de 10 segundos.
  5. Clique em Salvar e implantar nova revisão.

YAML

É possível fazer o download e conferir as configurações de serviço usando o comando gcloud run services describe --format export, que produz resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run services replace. Modifique os campos somente conforme documentado.

  1. Para ver e fazer o download da configuração:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Configure o atributo livenessProbe como mostrado:

    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

    Substituir

    • SERVICE pelo nome do serviço do Cloud Run;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se você usa o Artifact Registry, o repositório REPO_NAME já precisará ter sido criado. O URL tem o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • (OPCIONAL) CONTAINER_PORT precisa ser definido como a porta do contêiner usada para o serviço.
    • GRPC_SERVICE pelo nome do serviço gRPC para enviar a verificação de integridade.
    • (OPCIONAL) DELAY pelo número de segundos de espera após o início do contêiner antes de executar a primeira sondagem. Especifique um valor de 0 a 240 segundos. O valor padrão é de 0 segundos.
    • (OPCIONAL) TIMEOUT pelo número de segundos de espera até que a sondagem expire. Este valor não pode exceder o valor especificado para periodSeconds. Especifique um valor entre 1 e 3.600. O padrão é 1.
    • (OPCIONAL) THRESHOLD pelo número de vezes para tentar novamente a sondagem antes de marcar o contêiner como Não está pronto. O valor padrão é 3.
    • (OPCIONAL) PERIOD com o período (em segundos) em que a sondagem deve ser feita. Por exemplo, 2 para executar a sondagem a cada dois segundos. Especifique um valor de 1 segundo a 3600 segundos. O valor padrão é de 10 segundos.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Configure o serviço do Cloud Run com o atributo liveness_probe, conforme mostrado:

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