O Knative Serving permite-lhe especificar que revisões devem receber tráfego e especificar as percentagens de tráfego recebidas por uma revisão. Esta funcionalidade permite-lhe reverter para uma revisão anterior, implementar gradualmente uma revisão (também conhecida como implementação azul-verde) e dividir o tráfego entre várias revisões. Esta página descreve como usar esta funcionalidade para gerir o tráfego para as revisões do Knative serving.
Reverter para uma revisão anterior
Para reverter para uma revisão anterior:
Consola
Aceda ao Knative serving na Google Cloud consola:
Localize o serviço na lista de serviços e clique no mesmo.
Clique no separador Revisões para mostrar a lista de revisões atuais desse serviço.
Na lista de revisões, clique no ícone de reticências à direita da revisão à qual está a reverter:
Clique em Gerir tráfego para apresentar o formulário de gestão de tráfego:
- Selecione a revisão anterior para a qual quer reverter na lista pendente.
- Defina a percentagem de tráfego dessa revisão anterior como 100.
- Defina a percentagem da revisão publicada atualmente como 0.
- Clique em Guardar.
Linha de comandos
Use o seguinte comando:
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 está a reverter.
YAML
Pode transferir a configuração de um serviço existente para um ficheiro YAML com o comando gcloud run services describe
usando a flag --format=export
.
Em seguida, pode modificar esse ficheiro YAML e implementar essas alterações com o comando gcloud run services replace
.
Tem de garantir que modifica apenas os atributos especificados.
Transfira a configuração do seu serviço para um ficheiro denominado
service.yaml
no espaço de trabalho local:gcloud run services describe SERVICE --format export > service.yaml
Substitua SERVICE pelo nome do seu serviço de fornecimento do Knative.
No ficheiro local, atualize o atributo
traffic
que se encontra emspec
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION percent: 100
Substituir
- REVISION com o nome da revisão para a qual está a reverter.
Substitua o serviço pela respetiva nova configuração através do seguinte comando:
gcloud run services replace service.yaml
Implementar gradualmente uma revisão
Para implementar uma nova revisão gradualmente (implementação azul-verde):
Consola
Aceda ao Knative serving na Google Cloud consola:
Localize o serviço na lista de serviços e clique no mesmo.
Clique em Implementar nova revisão.
Preencha o formulário de implementação conforme necessário, mas certifique-se de que a caixa de verificação com a etiqueta Publicar esta revisão imediatamente NÃO está selecionada.
Clique em Implementar.
Clique em Gerir tráfego.
A nova revisão é apresentada, mas com uma percentagem de 0: atualmente, não está a publicar tráfego. No formulário:
- Defina-o para a percentagem pretendida, por exemplo, 5. Tenha em atenção que a percentagem da versão publicada atualmente é reduzida automaticamente nesse mesmo valor.
- Clique em Guardar.
- Repita estes passos de Gerir tráfego, mas com percentagens alteradas, aumentando a percentagem conforme necessário para a nova revisão. Não precisa de voltar a implementar para alterar as percentagens de tráfego.
Linha de comandos
Para implementar a revisão que quer implementar gradualmente, definindo-a inicialmente para não receber tráfego, use o comando
update
com o parâmetro--no-traffic
:gcloud run deploy --image IMAGE --no-traffic
Substitua IMAGE pela imagem que está a implementar.
Especifique a percentagem de tráfego que quer que a nova revisão processe, por exemplo, 5 por cento:
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 está a implementar gradualmente. Para especificar a revisão mais recente, pode usar
LATEST
, por exemplo,LATEST=5
. - Substitua PERCENTAGE pela percentagem de tráfego que quer
enviar para a nova revisão, por exemplo,
5
para enviar 5% do tráfego.
Quando o desempenho da revisão for satisfatório, repita o passo
update-traffic
anterior, mas aumente o valor percentual conforme pretendido.
YAML
Pode transferir a configuração de um serviço existente para um ficheiro YAML com o comando gcloud run services describe
usando a flag --format=export
.
Em seguida, pode modificar esse ficheiro YAML e implementar essas alterações com o comando gcloud run services replace
.
Tem de garantir que modifica apenas os atributos especificados.
Transfira a configuração do seu serviço para um ficheiro denominado
service.yaml
no espaço de trabalho local:gcloud run services describe SERVICE --format export > service.yaml
Substitua SERVICE pelo nome do seu serviço de fornecimento do Knative.
Faça as alterações de configuração desejadas ao serviço, conforme descrito nas várias páginas de configuração e especifique o nome da revisão que 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 com o nome que quer que a nova revisão tenha.
Abaixo do atributo
spec
, localize e atualize o atributotraffic
para que a nova revisão apresente 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
Tenha em atenção que as percentagens têm de totalizar 100. Substituir
- REVISION-NEW com o nome da revisão que está a implementar gradualmente.
- REVISION-FORMER com o nome da revisão publicada atualmente.
- PERCENT-NEW com a percentagem de tráfego que quer enviar para a nova revisão.
Por exemplo, use
10
para enviar 10% do tráfego para essa revisão. - PERCENT-FORMER com a percentagem de tráfego que quer enviar para a revisão antiga
Dividir o tráfego entre várias revisões
Para dividir o tráfego entre duas ou mais revisões:
Consola
Aceda ao Knative serving na Google Cloud consola:
Localize o serviço na lista de serviços e clique no mesmo.
Clique em Gerir tráfego.
A nova revisão publicada atualmente é apresentada. No formulário:
- Defina a percentagem de revisão publicada atualmente para a divisão pretendida.
- Selecione uma das revisões anteriores através da lista pendente e defina-a para a divisão percentual pretendida.
- Para dividir o tráfego entre mais revisões, clique em Adicionar revisão, selecione a revisão pretendida e defina a percentagem para a divisão desejada.
- Clique em Guardar.
Linha de comandos
Especifique as revisões e a percentagem de tráfego para cada revisão numa lista separada por vírgulas:
gcloud run services update-traffic SERVICE --to-revisions LIST
Substituição:
- SERVICE com o nome do serviço.
- LIST com uma lista de revisões delimitada por vírgulas para as quais quer receber tráfego e a percentagem de tráfego correspondente, num total de 100 por cento:
REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEn
por exemplo,hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50
.
YAML
Pode transferir a configuração de um serviço existente para um ficheiro YAML com o comando gcloud run services describe
usando a flag --format=export
.
Em seguida, pode modificar esse ficheiro YAML e implementar essas alterações com o comando gcloud run services replace
.
Tem de garantir que modifica apenas os atributos especificados.
Transfira a configuração do seu serviço para um ficheiro denominado
service.yaml
no espaço de trabalho local:gcloud run services describe SERVICE --format export > service.yaml
Substitua SERVICE pelo nome do seu serviço de fornecimento do Knative.
No ficheiro local, atualize o atributo
traffic
para que a nova revisão sirva 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
Tenha em atenção que as percentagens têm de totalizar 100. Substituir
- REVISION-A, REVISION-B, REVISION-C com as revisões às quais está a atribuir tráfego.
- PERCENT-A, PERCENT-B, PERCENT-C com a percentagem da revisão correspondente.
Substitua o serviço pela respetiva nova configuração através do seguinte comando:
gcloud run services replace service.yaml
Enviar todo o tráfego para a revisão mais recente
Quando implementa uma nova revisão, pode fazer com que esta revisão e todas as futuras apresentem 100% do tráfego assim que possível, substituindo qualquer divisão de tráfego estabelecida:
Consola
Aceda ao Knative serving na Google Cloud consola:
Localize o serviço na lista de serviços e clique no mesmo.
Clique em Implementar nova revisão.
Preencha o formulário de implementação conforme necessário, certificando-se de que seleciona a caixa de verificação com a etiqueta Publicar esta revisão imediatamente. Isto substitui qualquer divisão de tráfego existente, com a nova revisão a publicar 100% do tráfego.
Clique em Implementar.
Linha de comandos
Para enviar todo o tráfego para a revisão implementada mais recentemente:
gcloud run services update-traffic SERVICE --to-latest
Substitua SERVICE pelo nome do serviço.
YAML
Pode transferir a configuração de um serviço existente para um ficheiro YAML com o comando gcloud run services describe
usando a flag --format=export
.
Em seguida, pode modificar esse ficheiro YAML e implementar essas alterações com o comando gcloud run services replace
.
Tem de garantir que modifica apenas os atributos especificados.
Transfira a configuração do seu serviço para um ficheiro denominado
service.yaml
no espaço de trabalho local:gcloud run services describe SERVICE --format export > service.yaml
Substitua SERVICE pelo nome do seu serviço de fornecimento do Knative.
No ficheiro local, atualize o atributo
traffic
que se encontra emspec
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - latestRevision: true percent: 100
Substitua o serviço pela respetiva nova configuração através do seguinte comando:
gcloud run services replace service.yaml
Usar etiquetas para testes, migração de tráfego e reversões
Depois de implementar um serviço, pode criar uma nova revisão e atribuir uma etiqueta que lhe permita aceder à revisão num URL específico sem publicar tráfego. Em seguida, pode usar essa etiqueta para migrar gradualmente o tráfego para a revisão etiquetada e para reverter uma revisão etiquetada.
Um exemplo de utilização comum desta funcionalidade é usá-la para testar e validar uma nova revisão do serviço antes de publicar tráfego, nesta sequência típica:
- Executar testes de integração num contentor durante o desenvolvimento.
- Implemente o contentor num Google Cloud projeto que usa apenas para preparação, sem publicar tráfego, e teste-o com uma revisão etiquetada.
- Implemente-o em produção, sem publicar tráfego, e teste-o com uma revisão etiquetada em produção.
- Migre o tráfego para a revisão etiquetada.
Implementar uma nova revisão etiquetada
Para implementar uma nova revisão de um serviço existente na produção:
gcloud run deploy myservice --image IMAGE_URL --no-traffic --tag TAG_NAME
Substituição:
- IMAGE_URL com o URL da sua imagem
- TAG_NAME com o nome da etiqueta em letras minúsculas
A etiqueta permite-lhe testar diretamente a nova revisão num URL específico, sem publicar tráfego. O URL de teste começa com o nome da etiqueta que indicou:
http://{TAG_NAME}---{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io
Por exemplo, se usou o nome da etiqueta green
no serviço myservice
, testaria a revisão etiquetada no URL:
https://green---myservice.default.kuberun.11.111.11.111.nip.io
Migrar tráfego para uma revisão etiquetada
Depois de confirmar que a nova revisão funciona corretamente, pode começar a migrar tráfego para a mesma através da Google Cloud consola, da linha de comandos gcloud ou de um ficheiro YAML:
Consola
Aceda ao Knative serving na Google Cloud consola:
Localize o serviço na lista de serviços e clique no mesmo:
Selecione a revisão etiquetada para a qual quer enviar tráfego:
Clique em Gerir tráfego.
Localize o nome da revisão etiquetada: é apresentado, mas com uma percentagem de 0: atualmente, não está a publicar tráfego. No formulário Gerir tráfego*:
- Defina-o para a percentagem pretendida, por exemplo, 5. Tenha em atenção que a percentagem da versão publicada atualmente é reduzida automaticamente nesse mesmo valor.
- Clique em Guardar.
- Ao longo de um período de horas ou dias, conforme necessário, repita estes passos de Gestão de tráfego, mas com percentagens alteradas, aumentando a percentagem conforme necessário para a revisão etiquetada. Não precisa de voltar a implementar para alterar as percentagens de tráfego.
Linha de comandos
Para migrar tráfego para uma etiqueta de revisão específica:
gcloud run deploy update-traffic myservice --tag TAG_NAME=TRAFFIC_PERCENT
Substituir
- TAG_NAME com o nome da etiqueta para a qual está a migrar o tráfego
- TRAFFIC_PERCENT com a percentagem de tráfego que quer que a revisão etiquetada publique, por exemplo,
1
.
YAML
Pode transferir a configuração de um serviço existente para um ficheiro YAML com o comando gcloud run services describe
usando a flag --format=export
.
Em seguida, pode modificar esse ficheiro YAML e implementar essas alterações com o comando gcloud run services replace
.
Tem de garantir que modifica apenas os atributos especificados.
Transfira a configuração do seu serviço para um ficheiro denominado
service.yaml
no espaço de trabalho local:gcloud run services describe SERVICE --format export > service.yaml
Substitua SERVICE pelo nome do seu serviço de fornecimento do Knative.
Faça as alterações de configuração desejadas ao serviço, conforme descrito nas várias páginas de configuração.
Abaixo do atributo
spec
, localize e atualize o atributotraffic
para a revisão etiquetada, de modo que a revisão etiquetada apresente 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
Tenha em atenção que as percentagens têm de totalizar 100. Substituir
- REVISION com o nome da revisão etiquetada.
- TAG_NAME com o nome da etiqueta que está a implementar gradualmente.
- PERCENT-NEW com a percentagem de tráfego que quer enviar para a revisão etiquetada. Por exemplo, use
10
para enviar 10% do tráfego para essa revisão. - REVISION-FORMER com o nome da revisão publicada atualmente.
- PERCENT-FORMER com a percentagem de tráfego que quer enviar para a revisão antiga
Substitua o serviço pela respetiva nova configuração através do seguinte comando:
gcloud run services replace service.yaml