Como automatizar a análise de teste canário no Google Kubernetes Engine com o Spinnaker

Neste tutorial, demonstramos como configurar o recurso de análise automática de teste canário do Spinnaker no Google Kubernetes Engine (GKE).

Introdução

O Spinnaker é um sistema de entrega contínua de código aberto criado pela Netflix e pelo Google para gerenciar a implantação de apps em diferentes plataformas de computação, incluindo o App Engine, o GKE, o Compute Engine, a AWS e o Azure. Com o Spinnaker, é possível implementar métodos avançados de implantação, incluindo implantações canário.

Em uma implantação canário, você expõe uma nova versão do seu app a uma pequena parte do tráfego de produção e analisa o comportamento dele antes de continuar o processo. Isso permite reduzir os riscos antes de implantar uma nova versão para todos os usuários. Para usar implantações canário, você precisa comparar com precisão o comportamento das versões antiga e nova do aplicativo. As diferenças podem ser sutis e levar algum tempo para aparecer. Além disso, talvez você precise analisar várias métricas diferentes. Leia mais sobre o padrão canário em Estratégias de implantação e teste de aplicativos.

Para resolver esses problemas, há um recurso de análise automática de teste canário no Spinnaker: as métricas das duas versões no sistema de monitoramento são lidas, e uma análise estatística é feita para automatizar a comparação. Neste tutorial, mostramos como fazer uma análise automática de teste canário em um aplicativo implantado no GKE e monitorado pelo Cloud Monitoring.

O Spinnaker é uma plataforma avançada de implantação e gerenciamento de aplicativos para organizações com cenários complexos de implantação, geralmente com uma função de engenharia de versões dedicada. É possível seguir este tutorial sem ter experiência anterior com o Spinnaker. No entanto, a implementação de análise automática de canários na produção geralmente é feita por equipes que têm experiência com o Spinnaker, contam com um sistema de monitoramento forte e sabem como determinar se uma versão é segura.

Sobre este tutorial

O aplicativo neste tutorial é um simples "Hello World" que tem a taxa de erro configurada com uma variável de ambiente. É fornecida uma imagem pré-criada do Docker para esse aplicativo. Conforme ilustrado na imagem a seguir, o aplicativo expõe métricas no formato Prometheus, um sistema de monitoramento de código aberto conhecido na comunidade do Kubernetes e compatível com o Cloud Monitoring.

Arquitetura do aplicativo

Objetivos

  • Instalar o Spinnaker para o Google Cloud.
  • Implantar um aplicativo no GKE sem uma implantação canário.
  • Configurar e executar uma implantação canário do aplicativo.
  • Configurar a análise automática de canários.
  • Testar a análise automática de canários.

Custos

Antes de começar

  1. Selecione ou crie um projeto do Google Cloud.

    Acessar a página Gerenciar recursos

  2. Ative o faturamento no projeto.

    Ativar faturamento

  3. Crie um espaço de trabalho.

    Acessar a documentação do Monitoring

Ao concluir este tutorial, exclua os recursos criados para evitar o faturamento contínuo. Veja mais detalhes em Limpeza.

Implantar o Spinnaker para o Google Cloud usando o Cloud Shell

Nesta seção, você configura a infraestrutura necessária para concluir o tutorial. Execute todos os comandos do terminal no Cloud Shell.

O Spinnaker para Google Cloud oferece uma maneira de configurar e gerenciar o Spinnaker em uma configuração pronta para produção, otimizada para o Google Cloud. O Spinnaker para Google Cloud configura muitos recursos (GKE, Memorystore, buckets do Cloud Storage e contas de serviço) necessários para executar o Spinnaker no Google Cloud, integra o Spinnaker a serviços relacionados, como o Cloud Build, e fornece um ambiente de gerenciamento baseado no Cloud Shell para suas instalações do Spinnaker, com auxiliares e ferramentas comuns, como spin e hal.

  1. No Cloud Shell, abra o Spinnaker para o Google Cloud. Isso clona o repositório do Spinnaker para Google Cloud (em inglês) no ambiente do Cloud Shell e inicia as instruções detalhadas de instalação.

    Acessar o Cloud Shell

  2. Instale o Spinnaker para o Google Cloud:

    PROJECT_ID=${DEVSHELL_PROJECT_ID} ~/cloudshell_open/spinnaker-for-gcp/scripts/install/setup_properties.sh
    ~/cloudshell_open/spinnaker-for-gcp/scripts/install/setup.sh
    
  3. Instale o plug-in de integração do Monitoring-Prometheus:

    export KUBE_NAMESPACE=prometheus
    export GCP_PROJECT=$DEVSHELL_PROJECT_ID
    export DATA_DIR=/prometheus/
    export DATA_VOLUME=prometheus-storage-volume
    export SIDECAR_IMAGE_TAG=0.7.0
    export GCP_REGION=us-east1-c
    export KUBE_CLUSTER=spinnaker-1
    
    kubectl create namespace ${KUBE_NAMESPACE}
    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-stackdriver-gke/master/prometheus-service-account.yaml
    kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-stackdriver-gke/master/prometheus-configmap.yaml
    curl -sS https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-stackdriver-gke/master/gke-prometheus-deployment.yaml | \
      envsubst | \
      kubectl apply -f -
    
  4. Reinicie o Cloud Shell para carregar as novas configurações de ambiente.

    Opção do menu de reinicialização do Cloud Shell.

  5. Conecte-se ao Spinnaker:

    ~/cloudshell_open/spinnaker-for-gcp/scripts/manage/connect_unsecured.sh
    
  6. No Cloud Shell, selecione o ícone Visualização da Web e Visualizar na porta 8080.

    Opção de reinicialização do Cloud Shell no menu

Como implantar um aplicativo com o Spinnaker

Nesta seção, mostramos como configurar o Spinnaker para implantar um aplicativo no cluster do GKE.

Criar um aplicativo do Spinnaker

Antes de implantar, crie o aplicativo Spinnaker.

  1. No Spinnaker, selecione Ações e Criar aplicativo.

    Menu suspenso

  2. Na caixa de diálogo Novo aplicativo, insira os seguintes valores:

    • Nome: sampleapp
    • E-mail do proprietário: [example@example.com]

  3. Selecione Criar.

Você está agora no sampleapp do Spinnaker. A configuração ainda não foi feita, por isso, a maioria das guias está vazia.

Criar e executar um pipeline de implantação

Nesta seção, primeiro implante o aplicativo com um pipeline simples do Spinnaker que usa um parâmetro successRate para criar uma implantação do GKE com quatro pods. Esses pods geram erros aleatoriamente a uma taxa correspondente ao parâmetro successRate. Neste tutorial, eles lançam 500 erros a uma taxa de 100 - successRate.

  1. No Cloud Shell, crie o pipeline com o arquivo JSON fornecido. O comando a seguir publica a definição JSON do pipeline diretamente na API Spinnaker.

    cd ~
    wget https://raw.githubusercontent.com/spinnaker/spinnaker/master/solutions/kayenta/pipelines/simple-deploy.json
    sed "s/my-kubernetes-account/spinnaker-install-account/g" simple-deploy.json > updated-simple-deploy.json
    spin pipeline save --file updated-simple-deploy.json
    
  2. Na seção "Pipelines" do Spinnaker, um pipeline chamado Simple deploy é exibido. Se ele não estiver visível, atualize a página. Selecione Iniciar execução manual.

    Iniciar a execução manual do pipeline de implantação simples

  3. Na janela Confirmar execução, selecione uma Taxa de sucesso de 70 e selecione Executar. Após alguns segundos, a configuração do aplicativo e quatro pods terão sido implantados com sucesso pelo pipeline.

  4. No Cloud Shell, crie um pod para fazer solicitações ao novo aplicativo até o final do tutorial.

    kubectl -n default run injector --generator=run-pod/v1 --image=alpine:3.10 -- \
        /bin/sh -c "apk add --no-cache curl; \
        while true; do curl -sS --max-time 3 \
        http://sampleapp:8080/; done"
    

Verificar os registros do injetor

  1. Para ver o comportamento do aplicativo, verifique os registros do injetor:

    kubectl -n default logs -f \
        $(kubectl -n default get pods -l run=injector \
        -o=jsonpath='{.items[0].metadata.name}')
    
  2. Os registros exibem um grande número de mensagens de erro interno do servidor. Para parar de acompanhar os registros do injetor, pressione Ctrl + C.

Verificar a integridade do aplicativo

Agora que o aplicativo está implantado e disponibilizando tráfego, veja se ele está se comportando corretamente. Claro que, neste tutorial, você já sabe que não está, porque implantou o aplicativo com uma taxa de sucesso de apenas 70%.

O aplicativo expõe um endpoint /metrics com métricas no formato Prometheus que são ingeridas pelo Monitoring. Nesta seção, você visualiza essas métricas no Monitoring.

  1. No Console do Google Cloud, acesse o Monitoring.

    Acessar o Monitoring

  2. Se o Metrics Explorer for exibido no painel de navegação, selecione Metrics Explorer. Caso contrário, selecione Recursos e, em seguida, Metrics Explorer.

  3. Verifique se Métrica é a guia selecionada.

  4. Marque a caixa Encontrar recurso e métrica e digite external.googleapis.com/prometheus/requests.

  5. Para refinar o gráfico, no campo Agrupar por, digite http_code.

    No gráfico a seguir, as taxas de solicitações HTTP respondidas pelo aplicativo são agrupadas pelo código de status HTTP:

    Gráfico de solicitações HTTP respondidas pelo aplicativo.

    Se você não tiver dados no Monitoring ou se não conseguir encontrar a métrica external.googleapis.com/promheus/requests, aguarde alguns minutos para que os dados sejam processados pelo Monitoring antes de recarregar o Metrics Explorer.

    Como visto no gráfico, o app atualmente tem uma taxa de erro inaceitável, em torno de 30%, conforme o esperado. No restante do tutorial, você saberá como configurar um pipeline de implantação canário e uma análise automática para evitar implantações futuras de apps com taxa de erro tão alta.

Como criar uma implantação canário

Nesta seção, você cria um pipeline de implantação canário sem análise automática para testar a nova versão do app antes de implantá-lo totalmente na produção. Para simplificar, o pipeline criado nesta seção depende do balanceamento de carga do Kubernetes para enviar tráfego para a versão canário. Como consequência, não é possível escolher qual parte do tráfego será encaminhada para o canário. Para implementar políticas avançadas de roteamento de tráfego, use o Istio.

Na imagem a seguir, são descritos diferentes estágios desse pipeline:

Ilustração dos estágios de um pipeline de implantação canário.

  • Etapa 0: assim como no pipeline Simple Deploy, um parâmetro de Success Rate é usado como entrada. No novo pipeline, esse parâmetro é usado para simular diferentes taxas de sucesso. Esta é a configuração do pipeline.

  • Etapa 1: a etapa Find Baseline Version recupera a versão atual do app em execução na produção a partir da execução mais recente do pipeline Simple Deploy. Neste tutorial, a taxa de sucesso do aplicativo implantado atualmente é recuperada.

    Simultaneamente à etapa Find Baseline Version, a nova configuração de taxa de sucesso da versão canário do app é implantada na etapa Deploy Canary Config.

  • Etapa 2: as etapas Deploy Canary e Deploy Baseline implantam as duas versões para comparação: a nova versão canário e uma versão de referência. A versão canário usa a configuração criada em Implantar configuração canário, enquanto a de referência usa a configuração usada pela versão de produção.

  • Etapa 3: a etapa Manual Judgement interrompe o pipeline até que você o continue. Durante essa etapa, é possível verificar se o comportamento da versão canário está correto.

  • Etapa 4: se você continuar depois da etapa Manual Judgement, as etapas Delete Canary e Delete Baseline apagarão a infraestrutura.

    Simultaneamente à limpeza, a etapa Deploy to Production é iniciada, e o pipeline Simple Deploy é acionado com o mesmo parâmetro de Success Rate fornecido inicialmente. A mesma versão do app que você testou em uma implantação canário é implantada na produção.

    A etapa Implantar para a produção será acionada somente se você optar por continuar durante a etapa Julgamento manual.

  • Etapa 5: por último, a etapa Successful Deployment confirma que todo o pipeline foi bem-sucedido. Sua autorização no estágio Julgamento manual é verificada, e a execução só ocorrerá se os estágios Implantar para produção, Excluir implantação canário e Excluir valor de referência forem executadas.

Agora, crie e execute o pipeline Canary Deploy.

  1. Crie o pipeline Implantação canário. Para isso, execute o seguinte comando para buscar o ID do pipeline Implantação simples e injetá-lo no pipeline Implantação canário:

    cd ~
    wget https://raw.githubusercontent.com/spinnaker/spinnaker/master/solutions/kayenta/pipelines/canary-deploy.json
    export PIPELINE_ID=$(spin pipeline get -a sampleapp -n 'Simple deploy' | jq -r '.id')
    jq '(.stages[] | select(.refId == "9") | .pipeline) |= env.PIPELINE_ID | (.stages[] | select(.refId == "8") | .pipeline) |= env.PIPELINE_ID' canary-deploy.json | \
        sed "s/my-kubernetes-account/spinnaker-install-account/g" > updated-canary-deploy.json
        spin pipeline save --file updated-canary-deploy.json
    
  2. Se você não encontrar o pipeline Implantação canário no Spinnaker, atualize a página sampleapp e selecione Pipelines.

  3. Para iniciar o pipeline Canary Deploy:

    1. Selecione Iniciar execução manual.
    2. Selecione uma Taxa de sucesso de 80.
    3. Selecione Executar.
  4. Quando o pipeline chegar ao estágio Julgamento manual, não selecione Continuar porque você precisa comparar a versão canário com a versão de referência.

    Cenário

  5. No Cloud Shell, execute o comando kubectl -n default get pods para ver os novos pods rotulados como canary e baseline:

    NAME                                READY STATUS  RESTARTS  AGE
    injector-66bd655ffd-9ntwx           1/1   Running 0         30m
    sampleapp-5cdf8f55dd-995rz          1/1   Running 0         28m
    sampleapp-5cdf8f55dd-dqq8n          1/1   Running 0         28m
    sampleapp-5cdf8f55dd-ntq57          1/1   Running 0         28m
    sampleapp-5cdf8f55dd-rlpzp          1/1   Running 0         28m
    sampleapp-baseline-567b8d6849-gsgqr 1/1   Running 0          4m
    sampleapp-canary-54b9759dd6-gmjhc   1/1   Running 0          4m
    
  6. No Console do Google Cloud, acesse o Monitoring.

    Acessar o Monitoring

  7. Se o Metrics Explorer for exibido no painel de navegação, selecione Metrics Explorer. Caso contrário, selecione Recursos e, em seguida, Metrics Explorer.

  8. Verifique se Métrica é a guia selecionada.

  9. Para exibir a taxa de erro do valor de referência e do canário, especifique os seguintes parâmetros:

    1. Métrica: external.googleapis.com/prometheus/requests
    2. Filtros:
      1. http_code é igual a 500
      2. version diferente (!=) de prod

    Se faltarem alguns dados no Monitoring, aguarde alguns minutos.

  10. Compare a versão canário (em roxo no gráfico a seguir) com a de referência (em azul no gráfico a seguir). As cores podem ser diferentes no seu gráfico. Neste tutorial, a versão canário tem uma taxa de erro menor que a de referência. Portanto, é seguro implantar a versão canário por completo na produção. Se ela não tiver uma taxa de erro menor, interrompa a implantação nesse estágio e faça algumas correções no app.

    Gráfico de comparação da taxa de erro do canário com a versão de referência

  11. No Spinnaker, na caixa de diálogo Julgamento manual, selecione Continuar.

  12. Quando a implantação for concluída, volte para o Monitoring.

    Acessar o Monitoring

  13. Se o Metrics Explorer for exibido no painel de navegação, selecione Metrics Explorer. Caso contrário, selecione Recursos e, em seguida, Metrics Explorer.

  14. Verifique se Métrica é a guia selecionada.

  15. Clique na caixa Encontrar tipo de recurso e métrica e, em seguida, insira ou selecione o nome do recurso e da métrica no menu. Use as informações a seguir para preencher os campos dessa caixa de texto:

    1. Em Métrica, selecione ou insira external.googleapis.com/prometheus/requests.
    2. No campo Agrupar por, digite http_code.

    No gráfico a seguir, a taxa de solicitações HTTP respondidas pelo aplicativo é dividida pelo código de status HTTP:

    Gráfico de comparação da taxa de solicitações HTTP.

    Neste gráfico, é exibida a taxa de códigos HTTP, 200 e 500, para todos os pods: produção, referência e canário. Como a versão canário apresentava uma taxa de erro menor, você a implantou na produção. Após um curto período de tempo durante a implantação, em que o número total de solicitações é um pouco menor, é possível ver que a taxa de erro geral foi reduzida: a versão canário foi implantada corretamente na produção.

Como automatizar a análise de canários

Uma implantação canário é útil, mas a maneira como ela é configurada atualmente é um processo manual. É preciso verificar manualmente se o comportamento do canário é o que você quer antes de executar uma implantação completa, e a diferença entre a versão canário e a de referência nem sempre é clara.

Automatizar a análise de canários é uma boa ideia: você não precisa fazer isso sozinho e, para detectar problemas em um conjunto de métricas, uma análise estatística automática é mais adequada que uma análise humana. Nesta seção, o estágio Julgamento manual é substituído por uma análise automática de teste canário.

Ativar o suporte ao canário

No Spinnaker, primeiro configure o recurso de análise automática de teste canário, chamado Kayenta. Para configurar o Kayenta, use o Halyard, a mesma ferramenta usada para configurar e implantar o Spinnaker.

  1. Configure o Kayenta para usar o Monitoring como back-end:

    hal config canary google enable
    hal config canary google account add kayenta-tutorial --project $DEVSHELL_PROJECT_ID
    hal config canary google edit --stackdriver-enabled=true
    
  2. Aplique a nova configuração:

    ~/cloudshell_open/spinnaker-for-gcp/scripts/manage/push_and_apply.sh
    

    A implantação leva alguns minutos para ser concluída.

Configurar o recurso de análise automática de teste canário

Agora que o Kayenta está ativado, configure-o para sampleapp.

  1. No Spinnaker, selecione Config.

  2. Na seção Recursos, selecione Canário e selecione Salvar alterações.

    Captura de tela dos recursos para o pipeline

Criar uma configuração canário

Na análise automática de canários do Spinnaker, um teste estatístico é realizado com base em diferentes métricas, e uma pontuação é gerada. Essa pontuação, que pode variar de 0 a 100, representa o número de métricas que são aprovadas ou reprovadas na comparação entre a referência e o canário. É possível manipular a pontuação ao colocar as métricas em grupos diferentes, com pesos distintos para cada um. Dependendo da pontuação da análise, cabe a você decidir se prossegue ou não com a implantação. Se você usar uma só métrica, como neste tutorial, a pontuação só poderá ser 0 (falha) ou 100 (aprovação).

Um app pode ter várias configurações canário que podem ser compartilhadas em diversos aplicativos. Uma configuração canário tem dois elementos principais:

  • Um conjunto de métricas para analisar, possivelmente em grupos diferentes
  • Limites marginal e de aprovação para a pontuação

Em um pipeline de implantação, uma configuração canário é usada durante a etapa Canary Analysis, em que pode haver várias execuções da versão canário. Se a pontuação de qualquer execução estiver abaixo do limite marginal, a etapa será interrompida e as outras execuções não serão feitas. A pontuação da última execução precisa estar acima do limite de aprovação para que toda a etapa seja considerada bem-sucedida.

Para criar uma configuração canário, siga estas etapas:

  1. Agora que o canário está ativado, a seção Pipelines é substituída por Delivery. Caso a seção Delivery não apareça, recarregue o Spinnaker. Na seção Envio, acesse Configs canários.
  2. Selecione Adicionar configuração.
  3. Em Nome da configuração, digite kayenta-test.
  4. Na seção Métricas, selecione Adicionar métrica.
  5. Na caixa de diálogo Adicionar métrica, insira os seguintes valores e selecione OK:

    • Nome: error_rate
    • Falha em: increase
    • Tipo de recurso: k8s_container
    • Tipo de métrica: external.googleapis.com/prometheus/requests
    • Alinhador: ALIGN_RATE
    • Modelo de filtro: escolha Criar novo

      • Em Nome do novo modelo de filtro, insira: http_code
      • Em Modelo do novo modelo de filtro, insira: metric.labels.http_code = "500" AND resource.label.pod_name = starts_with("${scope}")
      • Selecione Salvar.
  6. Na seção Pontuação, defina o Grupo 1 como 100.

  7. Selecione Salvar alterações.

Adicionar um estágio de análise de teste canário ao pipeline

Agora que você tem uma configuração canário, modifique o pipeline de implantação atual para substituir o estágio Julgamento manual por uma Análise de teste canário que use essa configuração.

  1. Acesse Envio > Pipelines e, no pipeline Implantação canário, selecione Configurar.

    Captura de tela do botão de configuração da implantação canário

  2. Selecione Adicionar estágio.

  3. Para Tipo, selecione Análise de teste canário.

  4. Na seção Depends On, modifique a nova etapa para que dependa das seleções a seguir:

    • Implantar canário
    • Implantar valor de referência
  5. Preencha a seção Configuração da análise de teste canário com os seguintes valores:

    Nome do parâmetro Valor Definição
    Analysis Type Real Time (Manual) O modo automático, em que o canário e a referência são criados automaticamente, ainda não está disponível para o Kubernetes.
    Config Name kayenta-test O nome da configuração canário que você criou anteriormente.
    Lifetime 0 hours 5 minutes Quanto tempo a análise de canários costuma durar.
    Atraso 0 O tempo que damos ao aplicativo para aquecer antes da análise.
    Interval 5 A janela de tempo que o Kayenta usa para executar uma única análise estatística.
    Baseline sampleapp-baseline A implantação do GKE usada como referência pelo Kayenta.
    Baseline Location default O namespace do GKE em que a referência é encontrada.
    Canary sampleapp-canary A implantação do GKE usada como canário pelo Kayenta.
    Canary Location default Namespace do GKE em que o canário reside.
    Marginal 75 A pontuação limite para um passe canário.
    Pass 95 A pontuação limite para um passe canário geral.
  6. Na seção Execution Options, selecione Ignore the failure. Ignore a falha para que seja possível destruir a referência e os canários, mesmo em caso de falha da análise. Posteriormente, no tutorial, você modificará os estágios para considerar uma potencial falha dos canários.

  7. No esquema do pipeline, selecione Implantar para produção.

    Captura de tela do botão

  8. Altere a seção Depende de para os seguintes parâmetros:

    1. Adicione Análise de teste canário.
    2. Remova Julgamento manual.
  9. Para garantir que a implantação só ocorra na produção se a análise de teste canário for bem-sucedida, altere o parâmetro Condições na expressão.

    ${ #stage('Canary Analysis')['status'].toString() == 'SUCCEEDED'}
    
  10. No esquema do pipeline, selecione Excluir canário e altere a seção Depende de para os seguintes parâmetros:

    1. Adicione Análise de teste canário.
    2. Remova Julgamento manual.
  11. No esquema do pipeline, selecione Excluir valor de referência e altere a seção Depende de.

    1. Adicione Análise de teste canário.
    2. Remova Julgamento manual.
  12. Para garantir que todo o pipeline falhe se a análise de teste canário falhar, selecione Implantação bem-sucedida no esquema do pipeline e, em seguida, selecione o ícone Editar.

    Editar a pré-condição atual da implantação bem-sucedida

    1. Altere Expressão para:

      ${ #stage('Canary Analysis')['status'].toString() == 'SUCCEEDED'}
      
    2. Selecione Atualizar.

  13. Termine de substituir o cenário Julgamento manual pelo cenário recém-criado análise de teste canário.

    1. No esquema do pipeline, selecione Julgamento manual.
    2. Selecione Remover estágio.
  14. Selecione Salvar alterações.

    O pipeline agora se parece com a imagem a seguir:

    Visualização do pipeline de análise de teste canário

Testar o novo pipeline

Agora que a análise automática de teste canário está configurada, teste o pipeline para garantir que ele tenha o comportamento esperado.

  1. Acesse Envio > Pipelines e, no pipeline implantação canário ou Implantação canário automatizada, selecione Iniciar execução manual se você tiver usado a CLI.

  2. Selecione uma Taxa de sucesso de 60 e selecione Executar.

  3. Para verificar o progresso atual da análise de teste canário, selecione Análise de teste canários e selecione Status da tarefa. Após alguns minutos, o estágio Análise de teste canário falha, porque a taxa de sucesso atual na produção é 80. Quando a Análise de teste canário falhar, acesse o relatório dessa análise.

    1. Selecione Análise de teste canário.
    2. Selecione Resumo canário.
    3. Selecione o ícone Relatório.

      Na página do relatório, a taxa de erro é maior para a versão canário do que para a de referência.

      Ícone

  4. Repita as etapas desta seção, mas selecione uma Taxa de sucesso de 90 para conseguir uma análise de teste canário bem-sucedida.

Como fazer a limpeza

Para evitar cobranças dos recursos usados neste tutorial na conta do Google Cloud Platform:

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar a página "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Excluir os recursos

Se você quiser manter o projeto do Google Cloud usado neste tutorial, exclua os recursos individuais:

  1. Exclua o cluster do GKE.

    gcloud container clusters delete spinnaker-1
    
  2. Quando a confirmação for solicitada, digite Y.

A seguir