Configurações de faturamento de serviços

Esta página descreve as configurações de faturamento, presumindo o uso do comportamento de escalonamento automático padrão do Cloud Run . Consulte Comportamento de faturamento usando o escalonamento manual para outras considerações se você usar o escalonamento manual.

Há duas configurações de faturamento nos serviços do Cloud Run:

  • Faturamento baseado em solicitação (padrão): as instâncias do Cloud Run só são cobradas quando processam solicitações, quando são iniciadas e quando são desligadas. Consulte o ciclo de vida da instância para mais detalhes. Essa configuração era chamada anteriormente de CPU alocada somente durante o processamento da solicitação.

  • Faturamento baseado em instância: as instâncias do Cloud Run são cobradas durante todo o ciclo de vida das instâncias, mesmo quando não há solicitações recebidas. O faturamento baseado em instância pode ser útil para executar tarefas curtas em segundo plano e outras tarefas de processamento assíncrono. Essa configuração era chamada anteriormente de CPU sempre alocada.

Se você escolher o faturamento baseado em solicitação, será cobrado por solicitação e somente quando a instância processar uma solicitação. Se você escolher o faturamento baseado em instância, será cobrado durante todo o ciclo de vida da instância. Consulte as tabelas de preços do Cloud Run para mais detalhes.

O recomendador analisa automaticamente o tráfego recebido pelo serviço do Cloud Run no último mês e recomenda alternar do faturamento baseado em solicitação para o faturamento baseado em instância, se for mais barato.

Impacto da alocação de CPU

A seleção de uma configuração de faturamento afeta a forma como a CPU é alocada.

  • Com o faturamento baseado em solicitação, a CPU só é alocada durante o processamento da solicitação.
  • Com o faturamento baseado em instância, a CPU é alocada para todo o ciclo de vida da instância do contêiner.

Limites de gastos do orçamento

Se você configurar limites de gastos do orçamento do Cloud Billing spend caps no console do Cloud Billing, esses limites serão aplicados automaticamente a todos os tipos de recursos do Cloud Run no seu projeto.

É possível monitorar o progresso do limite de gastos diretamente na página de visão geral do console do Cloud Run. Quando você atinge um limite de gastos, Google Cloud pausa todas as cargas de trabalho do Cloud Run para evitar mais custos para os seguintes recursos do Cloud Run:

  • Serviços: qualquer serviço atual não vai atender ao tráfego e retornará erros 5xx.
  • Jobs: novas execuções de tarefas não são iniciadas e as tarefas em andamento não são concluídas.
  • Pools de workers: todas as instâncias atuais interrompem o processamento de tarefas.

Se você exceder o gasto máximo, vai receber uma notificação de alerta e um banner de restrição no console do Cloud Run. Para retomar as operações, é necessário remover ou ajustar o limite na página de visão geral do console do Cloud Run.

Como escolher a configuração de faturamento adequada

A escolha da configuração de faturamento adequada para seu caso de uso depende de vários fatores, como padrões de tráfego, execução em segundo plano e custo, cada um deles descrito nas seções a seguir.

Considerações sobre padrões de tráfego

  • O faturamento baseado em solicitação é recomendado quando o tráfego de entrada é esporádico, em burst ou com picos.
  • O faturamento baseado em instância é recomendado quando o tráfego de entrada está estável, variando lentamente.

Considerações sobre execução em segundo plano

Selecionar o faturamento baseado em instância aloca a CPU mesmo fora do processamento de solicitações, permitindo que você execute tarefas curtas em segundo plano e outros trabalhos de processamento assíncronos depois de retornar respostas. Exemplo:

  • utilização de agentes de monitoramento, como o OpenTelemetry, que podem presumir a possibilidade de execução em segundo plano;
  • Usar as Goroutines do Go, Node.js assíncrono, linhas de execução do Java e corrotinas do Kotlin
  • Usar frameworks de aplicativos que dependem de recursos integrados de programação ou segundo plano.

As instâncias inativas, incluindo as que foram mantidas aquecidas com as instâncias mínimas, podem ser desligadas a qualquer momento. Se for necessário concluir tarefas pendentes antes de o contêiner ser encerrado, interrompa o SIGTERM para conceder à instância 10 segundos de carência antes de ser interrompida.

Recomendamos o uso do Cloud Tasks para executar tarefas assíncronas. O Cloud Tasks repete automaticamente as tarefas com falha e é compatível com tempos de execução de até 30 minutos.

Considerações sobre o custo

Se você estiver usando o faturamento baseado em solicitação, o faturamento baseado em instância poderá ser mais econômico se:

Use a calculadora de preços para estimar as diferenças de custo.

Considerações sobre o escalonamento automático

O Cloud Run por padrão escalona automaticamente o número de instâncias de contêiner.

Para um serviço definido como faturamento baseado em solicitação, o Cloud Run escalona automaticamente o número de instâncias com base na utilização da CPU durante o processamento da solicitação.

Para um serviço definido como faturamento baseado em instância, o Cloud Run escalona automaticamente o número de instâncias com base no uso da CPU para todo o ciclo de vida da instância do contêiner, exceto ao escalonar de e para zero, em que é usado apenas solicitações.

Consulte o escalonamento manual para outras considerações se você usar o escalonamento manual em vez do recurso de escalonamento automático do Cloud Run.

Considerações sobre o faturamento baseado em instância

Mesmo que a configuração de faturamento esteja definida como faturamento baseado em instância, o escalonamento automático do Cloud Run ainda está em vigor e poderá encerrar as instâncias se não forem necessárias para lidar com o tráfego de entrada ou a utilização atual da CPU fora das solicitações. Uma instância nunca permanecerá inativa por mais de 15 minutos após o processamento de uma solicitação, a menos que seja mantida ativa usando instâncias mínimas.

A combinação do faturamento baseado em instância com várias instâncias mínimas resulta em várias instâncias funcionando com acesso total aos recursos da CPU, permitindo casos de uso de processamento em segundo plano. Ao usar esse padrão, o Cloud Run aplica o escalonamento automático de instâncias mesmo que um serviço esteja usando a CPU fora de qualquer solicitação.

Se você usar sondagens de verificação de integridade, será necessário usar o faturamento baseado em instância para cada sondagem. Consulte sondagens de verificação de integridade do contêiner para ver detalhes de faturamento.

Funções exigidas

Para receber as permissões necessárias para configurar e implantar os serviços do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:

Se você estiver implantando um serviço ou função do código-fonte, você também precisará ter outros papéis concedidos ao seu projeto e à conta de serviço do Cloud Build.

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Definir e atualizar o faturamento

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.

Se você selecionar o faturamento baseado em instância, especifique pelo menos 512 MiB de memória.

É possível alterar a configuração de faturamento usando o Google Cloud console, a CLI gcloud ou um arquivo YAML ao criar um novo serviço ou implantar uma nova revisão:

Console

  1. Noconsole, acesse a página Serviços do Cloud Run: Google Cloud

    Acesse o Cloud Run

  2. Clique em Implantar contêiner para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.

  3. Se você estiver configurando um novo serviço, preencha a página inicial de configurações de serviço.

  4. Selecione uma configuração de faturamento em Faturamento. Selecione faturamento baseado em solicitação para que as instâncias sejam cobradas somente durante o processamento da solicitação. Selecione faturamento baseado em instância para que as instâncias sejam cobradas durante todo o ciclo de vida delas.

  5. Clique em Criar ou Implantar.

gcloud

É possível atualizar a configuração de faturamento. Para definir o faturamento baseado em instância para um determinado serviço:

gcloud run services update SERVICE --no-cpu-throttling 

Substitua SERVICE pelo nome do serviço.

Para definir o faturamento baseado em solicitação:

gcloud run services update SERVICE --cpu-throttling 

Também é possível definir a configuração de faturamento durante a implantação. Para definir a configuração de faturamento como faturamento baseado em instância:

gcloud run deploy --image IMAGE_URL --no-cpu-throttling

Para definir a configuração de faturamento como faturamento baseado em solicitação:

gcloud run deploy --image IMAGE_URL --cpu-throttling

Substitua IMAGE_URL por uma referência à imagem do 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 segue o formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

YAML

  1. Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize o atributo cpu:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/cpu-throttling: 'BOOLEAN'
          name: REVISION

    Substitua:

    • SERVICE: o nome do serviço do Cloud Run
    • BOOLEAN: true para definir o faturamento baseado em solicitação ou false para definir o faturamento baseado em instância.
    • REVISION por um novo nome de revisão ou excluí-lo (se houver). Se você fornecer um novo nome de revisão, ele precisará atender aos seguintes critérios:
      • Começa com SERVICE-
      • Contém apenas letras minúsculas, números e -
      • Não termina com um -
      • Não excede 63 caracteres
  3. Crie ou atualize o serviço usando o seguinte comando:

    gcloud run services replace service.yaml

    O comando gcloud run services replace usa o arquivo service.yaml por padrão, se presente.

Terraform

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

Adicione o seguinte a um google_cloud_run_v2_service recurso na configuração do Terraform:

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

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        # If true, garbage-collect CPU when once a request finishes
        cpu_idle = false
      }
    }
  }
}

Ver configurações de faturamento

Para ver as configurações de faturamento atuais do serviço do Cloud Run:

Console

  1. Noconsole, acesse a página Serviços do Cloud Run: Google Cloud

    Acesse o Cloud Run

  2. Clique no serviço para abrir a página Detalhes do serviço.

  3. Clique na guia Revisões.

  4. No painel de detalhes, a configuração de Faturamento está listada na guia Geral.

gcloud

  1. Execute o seguinte comando para conferir a configuração de faturamento:

    gcloud run services describe SERVICE --format=yaml
  2. Na saída YAML, encontre a configuração run.googleapis.com/cpu-throttling. Um valor de false indica o faturamento baseado em instância e, se essa configuração estiver ausente, indica o faturamento baseado em solicitação.