Há duas configurações de faturamento nos serviços do Cloud Run:
Faturamento com base em solicitações (padrão): as instâncias do Cloud Run só são cobradas quando processam solicitações durante o processamento de solicitações, a inicialização do contêiner e o desligamento do contêiner. Consulte o ciclo de vida da instância para mais detalhes. Antes, essa configuração era chamada de CPU alocada somente durante o processamento da solicitação.
Faturamento com base em instâncias: as instâncias do Cloud Run são cobradas durante todo o ciclo de vida, mesmo quando não há solicitações recebidas. O faturamento baseado em instâncias pode ser útil para executar tarefas em segundo plano de curta duração e outras tarefas de processamento assíncrono. Essa configuração era chamada de CPU sempre alocada.
Se você escolher o faturamento com base em solicitações, será cobrado por solicitação e somente quando a instância processar uma solicitação. Se você escolher o faturamento com base em instâncias, será cobrada pelo ciclo de vida inteiro 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 a mudança de faturamento baseado em solicitações para faturamento baseado em instâncias, se for mais barato.
Impacto da alocação de CPU
A seleção de uma configuração de faturamento afeta a alocação da CPU.
- Com o faturamento com base em solicitações, a CPU é alocada somente durante o processamento da solicitação.
- Com o faturamento com base em instâncias, a CPU é alocada para todo o ciclo de vida da instância do contêiner.
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 com base em solicitações é 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 Faturamento com base na instância aloca a CPU mesmo fora do processamento de solicitações, permitindo que você execute tarefas em segundo plano de curta duração e outros trabalhos de processamento assíncrono 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/segundo plano.
As instâncias inativas, incluindo as que foram mantidas aquecidas com as instâncias mínimas, podem ser encerradas 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 oferece suporte a tempos de execução de até 30 minutos.
Considerações sobre o custo
Se você estiver usando o faturamento com base em solicitações, o faturamento com base em instâncias pode ser mais econômico se:
- O serviço do Cloud Run está processando um número alto de solicitações atuais a uma taxa estável.
- Você não encontra muitas instâncias "inativas" ao analisar a métrica de contagem de instâncias.
Use a calculadora de preços para estimar as diferenças de custo.
Considerações sobre o escalonamento automático
O Cloud Run autoscales do número de instâncias de contêiner.
Para um serviço definido como faturamento com base na solicitação, o Cloud Run escalona automaticamente o número de instâncias com base na utilização da CPU somente durante o processamento da solicitação.
Para um serviço definido como faturamento com base em instâncias, 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.
Considerações sobre o faturamento com base em instâncias
Mesmo que a configuração de faturamento esteja definida como com base em instâncias, o escalonamento automático do Cloud Run ainda está em vigor e pode encerrar as instâncias se elas 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 processar uma solicitação, a menos que seja mantida ativa usando instâncias mínimas.
Combinar o faturamento com base em instâncias com um número de instâncias mínimas resulta em várias instâncias em funcionamento 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âncias para cada sondagem. Consulte sondagens de verificação de integridade do contêiner para 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:
-
Desenvolvedor do Cloud Run (
roles/run.developer
) no serviço Cloud Run -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço
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 interagir com as APIs do Google Cloud , 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 com base em instâncias, especifique pelo menos 512 MiB de memória.
É possível mudar a configuração de faturamento usando o console do Google Cloud , a CLI gcloud ou um arquivo YAML ao criar um novo serviço ou implantar uma nova revisão:
Console
No console do Google Cloud , acesse o Cloud Run:
Clique em Implantar contêiner e selecione Serviço para configurar um novo serviço. Se você estiver configurando um serviço atual, clique nele e em Editar e implantar nova revisão.
Se você estiver configurando um novo serviço, preencha a página inicial de configurações de serviço.
Selecione uma configuração de faturamento em Faturamento. Selecione Faturamento com base em solicitações para que suas instâncias sejam cobradas apenas durante o processamento de solicitações. Selecione Faturamento com base em instâncias para que as instâncias sejam cobradas durante todo o ciclo de vida.
Clique em Criar ou Implantar.
gcloud
É possível atualizar a configuração de faturamento. Para definir o faturamento baseado em instâncias para um determinado serviço:
gcloud run services update SERVICE --no-cpu-throttling
SERVICE pelo nome do serviço;
Para definir o faturamento com base na 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 baseada em instâncias:
gcloud run deploy --image IMAGE_URL --no-cpu-throttling
Para definir a configuração de faturamento como baseada em solicitações:
gcloud run deploy --image IMAGE_URL --cpu-throttling
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
YAML
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
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
Substituir
- SERVICE pelo nome do serviço do Cloud Run;
- BOOLEAN com
true
para definir o faturamento por solicitação oufalse
para definir o faturamento com base na 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
- Começa com
Crie ou atualize o serviç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.
Adicione o seguinte a um recurso google_cloud_run_v2_service
na
configuração do Terraform, em template.containers.resources
.
Conferir as configurações de faturamento
Para conferir as configurações atuais de faturamento do serviço do Cloud Run:
Console
No console do Google Cloud , acesse o Cloud Run:
Clique no serviço de seu interesse para abrir a página Detalhes do serviço.
Clique na guia Revisões.
No painel de detalhes à direita, a configuração de faturamento está listada na guia Geral.
gcloud
Use o comando a seguir:
gcloud run services describe SERVICE
Localize a configuração de faturamento na configuração retornada.