Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Canary release a Knative Service with traffic splitting

Última atualização: Jun 28, 2026

Ao lançar uma nova versão de um Knative Service, direcionar todo o tráfego para ela de uma só vez pode causar indisponibilidade caso haja problemas. A divisão de tráfego permite encaminhar uma pequena porcentagem das requisições para a nova Revision primeiro, verificar sua estabilidade e aumentar gradualmente essa participação. Se surgirem falhas em qualquer etapa, reverta o tráfego imediatamente para a Revision anterior.

Como funciona

No Knative no Alibaba Cloud Service Mesh (ASM), cada Knative Service possui uma ou mais Revisions:

  • O Knative cria automaticamente a primeira Revision ao criar um Knative Service.

  • O Knative gera uma nova Revision sempre que você atualiza a configuração do Service.

  • Você define a porcentagem de tráfego encaminhada para cada Revision. A soma das porcentagens de todas as Revisions deve ser igual a 100%.

Uma liberação canary típica segue esta progressão:

  1. Crie uma nova Revision e atribua 0% do tráfego a ela.

  2. Verifique se a nova Revision funciona corretamente.

  3. Transfira gradualmente o tráfego da Revision anterior para a nova (por exemplo, 10% -> 50% -> 100%).

  4. Caso a nova Revision apresente problemas em qualquer fase, defina seu tráfego como 0% e restaure a Revision anterior para 100%.

Pré-requisitos

Antes de começar, certifique-se de ter:

Nota

Este tópico utiliza o nome de domínio padrão example.com. Para usar um nome de domínio personalizado, consulte Definir um nome de domínio personalizado no Knative no ASM.

Etapa 1: Criar uma nova Revision com 0% de tráfego

Crie uma nova Revision sem enviar tráfego de produção para ela. Isso permite confirmar o sucesso da implantação antes de expô-la aos usuários.

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, escolha Applications > Knative.

  3. Clique na aba Services. Localize o Service e clique no nome dele. No canto superior direito, clique em Create Revision.

  4. Na etapa Basic Information, clique em Advanced na parte inferior. Clique em Add ao lado de Environment Variables e configure os seguintes parâmetros. Em seguida, clique em Next.

    Parâmetro

    Valor

    Type

    Custom

    Variable Key

    TARGET

    Value/ValueFrom

    Knative on ASM

  5. Na etapa Traffic Splitting Settings, defina Percent % como 0 para a Latest Revision e 100 para a Revision anterior. Clique em Create.

    Nota

    A soma das porcentagens de tráfego de todas as Revisions deve ser igual a 100%.

  6. Após criar a Revision, clique na aba Services e selecione o nome do Service. Na seção Revision Information, verifique se a nova Revision aparece listada.

  7. Execute o comando abaixo para confirmar que todo o tráfego ainda vai para a Revision anterior. Saída esperada: Cada requisição retorna Hello World!, o que confirma que a Revision anterior continua processando 100% do tráfego.

       curl http://helloworld-go.default.example.com
       Hello World!

Etapa 2: Transferir tráfego para a nova Revision

Aumente a porcentagem de tráfego da nova Revision em etapas enquanto monitora possíveis problemas.

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, escolha Applications > Knative.

  3. Clique na aba Services e selecione o nome do Service. No canto superior direito, clique em Split Traffic. Na caixa de diálogo Split Traffic, defina Percent % como 50 tanto para a Revision mais recente quanto para a anterior e clique em OK.

  4. Após salvar a divisão de tráfego, clique na aba Services e selecione o nome do Service. Na seção Revision Information, confirme as porcentagens de tráfego atualizadas.

  5. Envie várias requisições para verificar se o tráfego está distribuído entre ambas as Revisions. Saída esperada (abreviada): As respostas alternam entre Hello World! (Revision anterior) e Hello Knative on ASM! (nova Revision), correspondendo aproximadamente à divisão 50/50.

       for i in $(seq 20); do curl http://helloworld-go.default.example.com; done
       Hello Knative on ASM!
       Hello Knative on ASM!
       Hello World!
       Hello Knative on ASM!
       Hello World!
       ...
  6. Se a nova Revision estiver estável, repita a etapa 3 para aumentar sua porcentagem de tráfego. Continue até que ela processe 100% do tráfego.

  7. Quando a nova Revision atingir 100%, valide a transição completa. Saída esperada: Todas as requisições retornam Hello Knative on ASM!, confirmando a conclusão da liberação canary.

       for i in $(seq 20); do curl http://helloworld-go.default.example.com; done
       Hello Knative on ASM!
       Hello Knative on ASM!
       Hello Knative on ASM!
       ...

Reverter para a Revision anterior

Caso a nova Revision apresente erros, alta latência ou comportamento inesperado durante a liberação canary, faça a reversão imediatamente:

  1. Na página de detalhes do Service, clique em Split Traffic no canto superior direito.

  2. Na caixa de diálogo Split Traffic, defina Percent % como 0 para a nova Revision e 100 para a anterior. Clique em OK.

  3. Valide a reversão enviando requisições. Todas as respostas devem retornar Hello World!, confirmando que o tráfego foi totalmente restaurado para a Revision anterior.

       for i in $(seq 20); do curl http://helloworld-go.default.example.com; done

Próximos passos

Após uma liberação canary, configure o dimensionamento automático para ajustar a quantidade de pods conforme o volume de tráfego. O Knative Serving adiciona um contêiner Queue Proxy a cada pod para relatar métricas de concorrência ao Knative Pod Autoscaler (KPA). O KPA dimensiona o número de pods com base no volume de requisições simultâneas. Para obter detalhes, consulte Ativar o dimensionamento automático de pods com base no número de requisições.