O Cloud Run permite especificar quais revisões receberão tráfego e especificar porcentagens de tráfego recebidas por uma revisão. Esse recurso permite que você faça reversão para uma revisão anterior, distribua gradualmente uma revisão e divida o tráfego entre várias revisões. Nesta página, descrevemos como usar esse recurso para gerenciar o tráfego das suas revisões do Cloud Run.
Os ajustes de roteamento de tráfego não são instantâneos. Quando você altera o tráfego para revisões, todas as solicitações em processamento atualmente continuam sendo concluídas. As solicitações em andamento não serão descartadas e poderão ser direcionadas para uma nova revisão ou uma revisão anterior durante o período de transição.
Se você estiver dividindo o tráfego entre várias revisões com a afinidade de sessão ativada, consulte Afinidade da sessão e divisão de tráfego para ver detalhes sobre o efeito da afinidade de sessão na divisão de tráfego.
Reverter para uma revisão anterior
Para reverter para uma revisão anterior:
Console
Na lista, localize e clique no serviço.
Clique na guia Revisões para mostrar a lista de revisões atuais desse serviço.
Na lista de revisões, clique no ícone de elipse à direita da revisão que você está revertendo:
Clique em Gerenciar tráfego para exibir o formulário de gerenciamento de tráfego:
- Selecione a revisão anterior que você quer reverter na lista suspensa.
- Defina a porcentagem de tráfego da revisão anterior como 100.
- Defina a porcentagem da revisão de processamento atual como 0.
- Clique em Salvar.
Linha de comando
Use o comando a seguir:
gcloud run services update-traffic SERVICE --to-revisions REVISION=100
- Substitua SERVICE pelo nome do serviço.
- Substitua REVISION pelo nome da revisão para a qual você está revertendo.
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.
Para visualizar e fazer o download da configuração:
gcloud run services describe SERVICE --format export > service.yaml
Abaixo do atributo
spec
, localize e atualize o atributotraffic
para o seguinte:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION percent: 100
Substituir
- REVISION pelo nome da revisão para a qual você está revertendo.
Substitua o serviço pela nova configuração usando o seguinte comando:
gcloud run services replace service.yaml
Aguarde a conclusão da atualização. Você verá uma mensagem informando que a revisão da qual você está revertendo foi implantada e está exibindo
0
% do tráfego.
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.
Adicione a instrução a seguir ao seu arquivo .tf
:
Lançamento gradual para revisões
Para implantar uma nova revisão gradualmente:
Console
Na lista, localize e clique no serviço.
Clique em Implantar uma revisão nova.
Preencha o formulário de implantação conforme necessário, mas verifique se a caixa de seleção Veicular esta revisão imediatamente está DESMARCADA.
Clique em Implantar.
Clique em Gerenciar tráfego.
A nova revisão está listada, mas com uma porcentagem 0 definida: ela não está veiculando tráfego no momento. No formulário, siga estas etapas:
- Defina a porcentagem pretendida, por exemplo, 5. Observe que a porcentagem da versão em exibição no momento é reduzida automaticamente na mesma quantidade.
- Clique em Salvar.
- Repita essas etapas Gerenciar tráfego, mas com porcentagens alteradas, aumentando a porcentagem conforme necessário para a nova revisão. Você não precisa reimplantar para alterar as porcentagens de tráfego.
Linha de comando
Implante a revisão que você quer implantar gradualmente, inicialmente a definindo para não receber tráfego:
gcloud run deploy --image IMAGE --no-traffic
Substitua IMAGE pela imagem que você está implantando.
Especifique a porcentagem de tráfego que você quer que a nova revisão processe, por exemplo, 5%:
gcloud run services update-traffic SERVICE --to-revisions REVISION=PERCENTAGE
- Substitua SERVICE pelo nome do serviço.
- Substitua REVISION pelo nome da revisão que você está implementando gradualmente. Para especificar a revisão mais recente, use
LATEST
, por exemplo,LATEST=5
. - Substitua PERCENTAGE pela porcentagem de tráfego que você quer enviar para a nova revisão, por exemplo,
5
para enviar 5% do tráfego.
Depois que o desempenho da revisão for satisfatório, repita a etapa
update-traffic
anterior, mas aumente o valor percentual conforme desejado.
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.
Para ver e fazer o download da configuração:
gcloud run services describe SERVICE --format export > service.yaml
Faça as alterações de configuração desejadas no serviço e especifique o nome da nova revisão que você quer:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE template: metadata: annotations: ... name: REVISION-NAME
Substituir
- REVISION-NAME pelo nome que você quer para a nova revisão.
Abaixo do atributo
spec
, localize e atualize o atributotraffic
para que a nova revisão exiba apenas uma pequena quantidade de tráfego:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION-NEW percent: PERCENT-NEW - revisionName: REVISION-FORMER percent: PERCENT-FORMER
As porcentagens precisam totalizar até 100. Substituir
- REVISION-NEW pelo nome da revisão que você está lançando gradualmente.
- REVISION-FORMER pelo nome da revisão que está sendo exibida no momento.
- PERCENT-NEW pela porcentagem de tráfego que você quer enviar para a nova revisão.
Por exemplo, use
10
para enviar 10% do tráfego para essa revisão. - PERCENT-FORMER pela porcentagem de tráfego que você quer enviar para a revisão antiga.
Aguarde a conclusão da atualização. Você verá uma mensagem informando que a nova revisão que está sendo lançada gradualmente foi implantada e está exibindo o valor de porcentagem de tráfego usado.
Terraform
Adicione o seguinte ao seu arquivo .tf
e atualize gradualmente a porcentagem de tráfego da revisão anterior para a revisão mais recente.
Lembre-se de que cada mudança de tráfego exigirá outra terraform apply
para ser executada.
Para aplicar as mudanças, insira terraform apply
.
Dividir o tráfego entre várias revisões
Para dividir o tráfego entre duas ou mais revisões:
Console
Na lista, localize e clique no serviço.
Clique em Gerenciar tráfego.
A nova revisão em exibição no momento é listada. No formulário, siga estas etapas:
- Defina a porcentagem de revisão em exibição no momento para a divisão pretendida.
- Selecione uma das revisões anteriores usando a lista suspensa e defina-a como a porcentagem pretendida.
- Para dividir o tráfego entre mais revisões, clique em Adicionar revisão, selecione a revisão pretendida e defina a porcentagem para a divisão pretendida.
- Clique em Salvar.
Linha de comando
Especifique as revisões e a porcentagem de tráfego de cada revisão em uma lista delimitada por vírgulas:
gcloud run services update-traffic SERVICE --to-revisions LIST
- Substitua SERVICE pelo nome do serviço.
- Substitua LIST por uma lista delimitada por vírgulas de revisões e porcentagens:
REVISION1=PERCENTAGE1, REVISION2=PERCENTAGE2, REVISIONn=PERCENTAGEx
, por exemplo,hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50
.
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.
Para visualizar e fazer o download da configuração:
gcloud run services describe SERVICE --format export > service.yaml
Abaixo do atributo
spec
, localize e atualize o atributotraffic
para que a nova revisão exiba apenas uma pequena quantidade de tráfego:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION-A percent: PERCENT-A - revisionName: REVISION-B percent: PERCENT-B - revisionName: REVISION-C percent: PERCENT-C
As porcentagens precisam totalizar até 100. Substituir
- REVISION-A, REVISION-B e REVISION-C pelas revisões para as quais você está alocando tráfego.
- PERCENT-A, PERCENT-B, PERCENT-C pela porcentagem da revisão correspondente.
Substitua o serviço pela nova configuração usando o seguinte comando:
gcloud run services replace service.yaml
Aguarde a conclusão da atualização. Você verá uma mensagem informando que a nova revisão que está sendo lançada gradualmente foi implantada e está exibindo
5
% (ou o valor gradual usado) do tráfego.
Terraform
Adicione a instrução a seguir ao seu arquivo .tf
:
Para aplicar as mudanças, insira terraform apply
.
Enviar todo o tráfego para a revisão mais recente
Ao implantar uma nova revisão, é possível fazer essa revisão e todas as futuras processarem todo o tráfego o mais rápido possível, modificando qualquer divisão de tráfego estabelecida:
Console
Na lista, localize e clique no serviço.
Clique em Implantar uma revisão nova.
Preencha o formulário de implantação conforme necessário, marcando a caixa de seleção Veicular esta revisão imediatamente. Isso substituirá qualquer divisão de tráfego existente, com a nova revisão veiculando todo o tráfego.
Clique em Implantar.
Linha de comando
Para enviar todo o tráfego para a revisão implantada mais recentemente:
gcloud run services update-traffic SERVICE --to-latest
Substitua SERVICE pelo nome do serviç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.
Para visualizar e fazer o download da configuração:
gcloud run services describe SERVICE --format export > service.yaml
Abaixo do atributo
spec
, localize e atualize o atributotraffic
para o seguinte:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - latestRevision: true percent: 100
Substitua o serviço pela nova configuração usando o seguinte comando:
gcloud run services replace service.yaml
Aguarde a conclusão da atualização. Você verá uma mensagem informando que a revisão (mais recente) foi implantada e está exibindo
100
% do tráfego.
Terraform
Adicione a instrução a seguir ao seu arquivo .tf
:
Para aplicar as mudanças, insira terraform apply
.
Usar tags para teste, migração de tráfego e reversões
Depois de implantar um serviço, é possível criar uma nova revisão e atribuir uma tag que permita acessar a revisão em um URL específico sem veicular o tráfego. Em seguida, use essa tag para migrar gradualmente o tráfego para a revisão marcada com a tag e para reverter uma revisão com tags.
Um caso de uso comum desse recurso é usá-lo para testar e verificar uma nova revisão de serviço antes de disponibilizar qualquer tráfego, nesta sequência típica:
- Executar testes de integração em um contêiner durante o desenvolvimento.
- Implantar o contêiner em um projeto do Google Cloud que você usa apenas para preparo, sem tráfego e testar em uma revisão marcada com tag.
- Implantá-lo na produção, sem exibir tráfego, e testar em uma revisão marcada com tag na produção.
- Migrar o tráfego para a revisão marcada.
Implantar uma nova revisão com tag
Para implantar uma nova revisão de um serviço em produção:
Linha de comando
gcloud run deploy myservice --image IMAGE_URL --no-traffic --tag TAG_NAME
Substituir
- IMAGE_URL pelo URL da imagem;
- TAG_NAME pelo nome da tag em letras minúsculas.
A tag permite testar diretamente a nova revisão em um URL específico, sem
veicular o tráfego. O URL começa com o nome da tag fornecido. Por exemplo,
se você usou o nome de tag green
no serviço myservice
, teste
a revisão marcada com tag no URL https://green---myservice-abcdef.a.run.app
.
Terraform
Adicione o seguinte ao seu arquivo .tf
e atualize gradualmente a porcentagem de tráfego da revisão antiga para a mais recente com a nova tag.
Lembre-se de que cada mudança de tráfego exigirá outra terraform apply
para ser executada.
Para aplicar as mudanças, insira terraform apply
.
Remover uma tag
Para remover uma tag de uma revisão:
Console
Na lista, localize e clique no serviço.
Navegue até a seção Revisões no serviço desejado e selecione a revisão com a tag que você quer remover.
Passe o cursor sobre a coluna URLs de revisão (tags) e clique no ícone do lápis, como mostrado abaixo.
No menu pop-up URLs de revisão, clique no ícone da lata de lixo para remover a tag atual usada na revisão.
Clique em Save.
Linha de comando
Para remover uma tag de revisão:
gcloud run services update-traffic SERVICE --remove-tags TAG_NAME
Substituir
- TAG_NAME pelo nome da tag para onde você está migrando o tráfego;
- SERVICE pelo nome do serviço do qual você está removendo a tag.
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.
Para ver e fazer o download da configuração:
gcloud run services describe SERVICE --format export > service.yaml
Faça as alterações de configuração desejadas no serviço.
Abaixo do atributo
spec
, localize e remova o atributotag
da revisão com tag:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION tag: TAG_NAME percent: PERCENT-NEW
Substitua o serviço pela nova configuração usando o seguinte comando:
gcloud run services replace service.yaml
Aguarde a conclusão da atualização. Você verá uma mensagem informando que a nova revisão que está sendo lançada gradualmente foi implantada e está exibindo o valor de porcentagem de tráfego usado.
Terraform
Adicione a instrução a seguir ao seu arquivo .tf
:
Para aplicar as mudanças, insira terraform apply
.
Como migrar tráfego para uma revisão com tags
Depois de confirmar que a nova revisão funciona corretamente, é possível começar a migrar o tráfego para ela usando o Console do Google Cloud, a linha de comando gcloud, o Terraform ou um arquivo YAML:
Console
Na lista, localize e clique no serviço.
Selecione a revisão marcada com tag que receberá o tráfego:
Clique em Gerenciar tráfego.
Localize o nome da revisão marcada com tag: ele está listado, mas com uma porcentagem definida em zero. No momento, ela não está veiculando tráfego. No formulário Gerenciar tráfego*:
- Defina a porcentagem pretendida. Por exemplo, 5. Observe que a porcentagem da versão em exibição no momento é reduzida automaticamente na mesma quantidade.
- Clique em Salvar.
- Durante um período de horas ou dias, conforme necessário, repita essas etapas em Gerenciar tráfego, mas com porcentagens alteradas, aumentando a porcentagem conforme necessário para a revisão marcada. Você não precisa reimplantar para alterar as porcentagens de tráfego.
Linha de comando
Para migrar o tráfego para uma tag de revisão específica:
gcloud run services update-traffic myservice --to-tags TAG_NAME=TRAFFIC_PERCENT
Substituir
- TAG_NAME pelo nome da tag para onde você está migrando o tráfego;
- TRAFFIC_PERCENT pela porcentagem de tráfego que você quer que a
revisão marcada com tag veicule, por exemplo,
1
.
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.
Para ver e fazer o download da configuração:
gcloud run services describe SERVICE --format export > service.yaml
Faça as alterações de configuração desejadas no serviço.
Abaixo do atributo
spec
, localize e atualize o atributotraffic
para a revisão marcada com tag para que a revisão veicule apenas uma pequena quantidade de tráfego:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION tag: TAG_NAME percent: PERCENT-NEW - revisionName: REVISION-FORMER percent: PERCENT-FORMER
As porcentagens precisam totalizar até 100. Substituir
- REVISION pelo nome da revisão marcada com tag.
- TAG_NAME pelo nome da tag que você está lançando gradualmente.
- PERCENT-NEW pela porcentagem de tráfego que você quer enviar para
a revisão marcada com tag. Por exemplo, use
10
para enviar 10% do tráfego a essa revisão. - REVISION-FORMER pelo nome da revisão que está sendo exibida no momento.
- PERCENT-FORMER pela porcentagem de tráfego que você quer enviar para a revisão antiga.
Substitua o serviço pela nova configuração usando o seguinte comando:
gcloud run services replace service.yaml
Aguarde a conclusão da atualização. Você verá uma mensagem informando que a nova revisão que está sendo lançada gradualmente foi implantada e está exibindo o valor de porcentagem de tráfego usado.
Terraform
Adicione a instrução a seguir ao seu arquivo .tf
:
Durante um período de horas ou dias, conforme necessário, atualize gradualmente uma tag para outra, aumentando a porcentagem necessária para a revisão marcada.
Faça a aplicação inserindo terraform apply
depois de cada mudança.
A seguir
- Saiba como usar o Cloud Deploy para configurar um pipeline de entrega contínua para implantar no Cloud Run.