Reversões, lançamentos graduais e migração de tráfego

O Cloud Run for Anthos no Google Cloud permite que você especifique quais revisões precisam receber tráfego, assim como especifique porcentagens de tráfego recebidas por uma revisão. Esse recurso permite reverter para uma revisão anterior, lançar gradualmente uma revisão (também conhecido como implantação azul-verde) e dividir o tráfego entre várias revisões. Nesta página, descrevemos como usar esse recurso para gerenciar o tráfego para as revisões do Cloud Run for Anthos.

Como reverter para uma revisão anterior

Para reverter para uma revisão anterior:

Console

  1. Acessar o Cloud Run for Anthos

  2. Na lista, localize e clique no serviço.

  3. Clique na guia Revisões para mostrar a lista de revisões atuais desse serviço.

  4. Na lista de revisões, clique no ícone de elipse à direita da revisão que você está revertendo:

    gerenciar-tráfego

  5. Clique em Gerenciar tráfego para exibir o formulário de gerenciamento de tráfego:

    1. Selecione a revisão anterior que você quer reverter na lista suspensa.
    2. Defina a porcentagem de tráfego da revisão anterior como 100.
    3. Defina a porcentagem da revisão de processamento atual como 0.
    4. Clique em Salvar.

Linha de comando

Use o comando a seguir:

gcloud kuberun core 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

Para usar um arquivo YAML para modificar a configuração do serviço atual, consiga uma cópia da configuração atual, modifique e salve as alterações em um arquivo local e, em seguida, implante essas alterações no serviço.

  1. Exiba como YAML e copie a configuração do serviço em um arquivo local, por exemplo, service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    Substitua SERVICE pelo nome do serviço do Cloud Run for Anthos.

  2. No seu arquivo local, atualize o atributo traffic localizado em spec:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
    ...
      traffic:
      - revisionName: REVISION
        percent: 100
    

    Replace

    • REVISION pelo nome da revisão para a qual você está revertendo.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud beta run services replace service.yaml

Como implementar gradualmente uma revisão

Para implementar uma nova revisão gradualmente (implantação azul-verde):

Console

  1. Acessar o Cloud Run for Anthos

  2. Na lista, localize e clique no serviço.

  3. Clique em Implantar uma revisão nova.

  4. 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.

  5. Clique em Implantar.

  6. Clique em Gerenciar tráfego.

  7. 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:

    1. Defina a porcentagem pretendida, por exemplo, 5. Observe que a porcentagem da versão em exibição no momento é reduzida automaticamente na mesma quantidade.
    2. Clique em Salvar.
    3. 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

  1. Para implantar a revisão que você quer lançar de modo gradual, configurando-a inicialmente para não receber tráfego, use o comando update com o parâmetro --no-traffic:

    gcloud kuberun core services update --image IMAGE --no-traffic

    Substitua IMAGE pela imagem que você está implantando.

  2. Especifique a porcentagem de tráfego que você quer que a nova revisão processe, por exemplo, 5%:

    gcloud kuberun core 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.
  3. Depois que o desempenho da revisão for satisfatório, repita a etapa update-traffic anterior, mas aumente o valor percentual conforme desejado.

YAML

Para usar um arquivo YAML para modificar a configuração do serviço atual, consiga uma cópia da configuração atual, modifique e salve as alterações em um arquivo local e, em seguida, implante essas alterações no serviço.

  1. Exiba como YAML e copie a configuração do serviço em um arquivo local, por exemplo, service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    Substitua SERVICE pelo nome do serviço do Cloud Run for Anthos.

  2. Faça as alterações de configuração desejadas no serviço, conforme descrito nas várias páginas de configuração, e especifique o nome da revisão que você quer para a nova revisão:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    template:
      metadata:
        annotations:
          ...
        name: REVISION-NAME
     ```
    
    Replace
    
    • REVISION-NAME pelo nome que você quer para a nova revisão.
  3. Abaixo do atributo spec, localize e atualize o atributo traffic 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. Replace

    • 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.

Como dividir o tráfego entre várias revisões

Para dividir o tráfego entre duas ou mais revisões:

Console

  1. Acessar o Cloud Run for Anthos

  2. Na lista, localize e clique no serviço.

  3. Clique em Gerenciar tráfego.

  4. A nova revisão em exibição no momento é listada. No formulário, siga estas etapas:

    1. Defina a porcentagem de revisão em exibição no momento para a divisão pretendida.
    2. Selecione uma das revisões anteriores usando a lista suspensa e defina-a como a porcentagem pretendida.
    3. 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.
    4. 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 kuberun core services update-traffic SERVICE --to-revisions LIST

Substitua:

  • SERVICE pelo nome do serviço;
  • LIST por uma lista delimitada por vírgulas em que você quer receber tráfego e a porcentagem correspondente de tráfego, totalizando 100%:
    REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEn
    , por exemplo, hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50.

YAML

Para usar um arquivo YAML para modificar a configuração do serviço atual, consiga uma cópia da configuração atual, modifique e salve as alterações em um arquivo local e, em seguida, implante essas alterações no serviço.

  1. Exiba como YAML e copie a configuração do serviço em um arquivo local, por exemplo, service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    Substitua SERVICE pelo nome do serviço do Cloud Run for Anthos.

  2. No arquivo local, atualize o atributo traffic para que a nova revisão veicule 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. Replace

    • 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.
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud beta run services replace service.yaml

Como 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

  1. Acessar o Cloud Run for Anthos

  2. Na lista, localize e clique no serviço.

  3. Clique em Implantar uma revisão nova.

  4. 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.

  5. Clique em Implantar.

Linha de comando

Para enviar todo o tráfego para a revisão implantada mais recentemente:

gcloud kuberun core services update-traffic SERVICE --to-latest

Substitua SERVICE pelo nome do serviço.

YAML

Para usar um arquivo YAML para modificar a configuração do serviço atual, consiga uma cópia da configuração atual, modifique e salve as alterações em um arquivo local e, em seguida, implante essas alterações no serviço.

  1. Exiba como YAML e copie a configuração do serviço em um arquivo local, por exemplo, service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    Substitua SERVICE pelo nome do serviço do Cloud Run for Anthos.

  2. No seu arquivo local, atualize o atributo traffic localizado em spec:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     name: SERVICE
    spec:
    ...
      traffic:
      - latestRevision: true
        percent: 100
    
  3. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud beta run services replace service.yaml

Como 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:

  1. Executar testes de integração em um contêiner durante o desenvolvimento.
  2. 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.
  3. Implantá-lo na produção, sem exibir tráfego, e testar em uma revisão marcada com tag na produção.
  4. Migrar o tráfego para a revisão marcada.

Como implantar uma nova revisão com tag

Para implantar uma nova revisão de um serviço em produção:

gcloud kuberun core services create myservice --image IMAGE_URL  --no-traffic --tag TAG_NAME

Substitua:

  • 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.

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 Cloud, a linha de comando gcloud ou um arquivo YAML:

Console

  1. Acessar o Cloud Run for Anthos

  2. Na lista, localize e clique no serviço.

  3. Selecione a revisão marcada com tag que receberá o tráfego:

    manage-traffic

  4. Clique em Gerenciar tráfego.

  5. 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*:

    1. Defina a porcentagem pretendida. Por exemplo, 5. Observe que a porcentagem da versão em exibição no momento é reduzida automaticamente na mesma quantidade.
    2. Clique em Salvar.
    3. 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.

YAML

Para usar um arquivo YAML para modificar a configuração do serviço atual, consiga uma cópia da configuração atual, modifique e salve as alterações em um arquivo local e, em seguida, implante essas alterações no serviço.

  1. Exiba como YAML e copie a configuração do serviço em um arquivo local, por exemplo, service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    Substitua SERVICE pelo nome do serviço do Cloud Run for Anthos.

  2. Faça as alterações de configuração desejadas no serviço, conforme descrito nas várias páginas de configuração.

  3. Abaixo do atributo spec, localize e atualize o atributo traffic 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. Substitua:

    • 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.
  4. Substitua o serviço pela nova configuração usando o seguinte comando:

    gcloud beta run services replace service.yaml