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

Neste tutorial, demonstramos como configurar o recurso de análise automática de canários 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 seu app. As diferenças podem ser sutis e demorar algum tempo para aparecer. Além disso, talvez você precise analisar várias métricas diferentes.

Para resolver esses problemas, há um recurso de análise automática de canários no Spinnaker: as métricas de ambas as 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 canários em um aplicativo implantado no GKE e monitorado pelo Stackdriver.

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, as métricas do aplicativo são expostas no formato Prometheus, um sistema de monitoramento de código aberto conhecido pela comunidade do Kubernetes e compatível com o Stackdriver.

Arquitetura do aplicativo

Objetivos

  • Criar um cluster do GKE.
  • Instalar o Spinnaker.
  • 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 GCP.

    ACESSAR A PÁGINA "GERENCIAR RECURSOS"

  2. Ative o faturamento do projeto.

    ATIVAR FATURAMENTO

  3. Crie uma conta do Stackdriver.

    ACESSAR A DOCUMENTAÇÃO DO Stackdriver

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

Como configurar o ambiente

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

  1. Abra o Cloud Shell.

    ACESSAR O CLOUD SHELL

  2. Exporte o ID do projeto como uma variável.

    export GOOGLE_CLOUD_PROJECT=[PROJECT_ID]
    

    em que:

    • [PROJECT_ID] representa o ID do projeto que você está usando.
  3. Crie um cluster do GKE.

    gcloud config set project $GOOGLE_CLOUD_PROJECT
    gcloud config set compute/zone us-central1-f
    gcloud services enable container.googleapis.com
    gcloud beta container clusters create kayenta-tutorial \
        --machine-type=n1-standard-2 --enable-stackdriver-kubernetes
    
  4. Instale o plug-in de integração do Prometheus com o Stackdriver.

    kubectl apply --as=admin --as-group=system:masters -f \
        https://storage.googleapis.com/stackdriver-prometheus-documentation/rbac-setup.yml
    curl -sS "https://storage.googleapis.com/stackdriver-prometheus-documentation/prometheus-service.yml" | \
        sed "s/_stackdriver_project_id:.*/_stackdriver_project_id: $GOOGLE_CLOUD_PROJECT/" | \
        sed "s/_kubernetes_cluster_name:.*/_kubernetes_cluster_name: kayenta-tutorial/" | \
        sed "s/_kubernetes_location:.*/_kubernetes_location: us-central1-f/" | \
        kubectl apply -f -
    
  5. Implante o Spinnaker no novo cluster do GKE.

    curl -sSL "https://www.spinnaker.io/downloads/kubernetes/quick-install.yml" | \
        sed 's/version:.*/version: 1.13.10/g' | kubectl apply -f -
    
  6. A implantação leva alguns minutos para ser concluída. Para verificar o progresso, execute o comando watch kubectl -n spinnaker get pods. Para interromper o comando watch, pressione Ctrl + C. Quando a implantação for concluída, a resposta ao comando será todos os pods como Ready 1/1.

    NAME                                READY  STATUS    RESTARTS   AGE
    minio-deployment-7c665c4b57-jx7px   1/1    Running   0          5m
    spin-clouddriver-789c6fff77-rjtc6   1/1    Running   0          4m
    spin-deck-68b5968f7f-trmkn          1/1    Running   0          4m
    spin-echo-57dbff9fb8-rq5qc          1/1    Running   0          4m
    spin-front50-67965475b8-l24db       1/1    Running   0          4m
    spin-gate-6d8bbf8c45-m9pzn          1/1    Running   0          4m
    spin-halyard-59fd54bd69-xns49       1/1    Running   0          5m
    spin-kayenta-99b97b85f-4gvsv        1/1    Running   0          4m
    spin-orca-5748974888-cph9g          1/1    Running   0          4m
    spin-redis-6d49c9c5b9-q2hzm         1/1    Running   0          4m
    spin-rosco-6b4ddbcb94-mjrht         1/1    Running   0          4m
    
  7. Para acessar o Spinnaker, encaminhe uma porta local ao componente "deck" do Spinnaker.

    DECK_POD=$(kubectl -n spinnaker get pods -l \
        cluster=spin-deck,app=spin \
        -o=jsonpath='{.items[0].metadata.name}')
    kubectl -n spinnaker port-forward $DECK_POD 8080:9000 >/dev/null &
    
  8. No Cloud Shell, clique no ícone Visualização da Web e selecione Visualizar na porta 8080.

    Ícone de visualização da Web para a porta 8080.

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 do Spinnaker.

  1. No Spinnaker, clique em Actions > Create Application.

    Menu suspenso "Create Application"

  2. Na caixa de diálogo New Application, insira os seguintes valores:

    • Name: sampleapp
    • Owner Email: [example@example.com]

  3. Clique em Create.

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, você primeiro implanta o aplicativo com um pipeline simples do Spinnaker, em que um parâmetro successRate é usado para criar uma implantação do GKE com quatro pods. Esses pods lançam erros aleatoriamente a uma taxa correspondente ao parâmetro successRate. Neste tutorial, são lançados 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 do Spinnaker.

    wget https://raw.githubusercontent.com/spinnaker/spinnaker/master/solutions/kayenta/pipelines/simple-deploy.json
    curl -d@simple-deploy.json -X POST \
        -H "Content-Type: application/json" -H "Accept: */*" \
        http://localhost:8080/gate/pipelines
    
  2. Na seção "Pipelines" do Spinnaker, é exibido um pipeline chamado Simple deploy. Se ele não estiver visível, atualize a página. Clique em Start Manual Execution.

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

  3. Na janela Confirm Execution, selecione uma Success Rate de 70 e clique em Run. 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 --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 app expõe um endpoint /metrics com métricas no formato Prometheus, que são ingeridas pelo Stackdriver. Nesta seção, você visualiza essas métricas no Stackdriver.

  1. No Stackdriver, acesse o Metrics Explorer.

    METRICS EXPLORER

  2. No campo Find resource type and metric, insira o seguinte:

    external.googleapis.com/prometheus/requests
    
  3. Para refinar o gráfico, no campo Group by, insira 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

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. Na imagem a seguir, são descritos diferentes cenários desse pipeline:

Ilustração das etapas 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 Deploy Canary Config, 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 Deploy to Production será acionada somente se você optar por continuar durante a etapa Manual Judgement.

  • Etapa 5: por último, a etapa Successful Deployment confirma que todo o pipeline foi bem-sucedido. Sua autorização na etapa Manual Judgement é verificada, e a execução só ocorrerá se as etapas Deploy to Production, Delete Canary e Delete Baseline forem executadas.

Agora, crie e execute o pipeline Canary Deploy.

  1. Crie o pipeline Canary Deploy. Para isso, execute o seguinte comando para buscar o ID do pipeline Simple deploy e injetá-lo no pipeline Canary Deploy:

    wget https://raw.githubusercontent.com/spinnaker/spinnaker/master/solutions/kayenta/pipelines/canary-deploy.json
    export PIPELINE_ID=$(curl \
        localhost:8080/gate/applications/sampleapp/pipelineConfigs/Simple%20deploy \
        | jq -r '.id')
    jq '(.stages[] | select(.refId == "9") | .pipeline) |= env.PIPELINE_ID | (.stages[] | select(.refId == "8") | .pipeline) |= env.PIPELINE_ID' canary-deploy.json | \
        curl -d@- -X POST \
        -H "Content-Type: application/json" -H "Accept: */*" \
        http://localhost:8080/gate/pipelines
    
  2. Se você não encontrar o pipeline Canary Deploy no Spinnaker, atualize a página sampleapp e clique em Pipelines.

  3. Para iniciar o pipeline Canary Deploy, siga estas etapas:

    1. Clique em Start Manual Execution.
    2. Selecione uma Success Rate de 80.
    3. Clique em Run.
  4. Quando o pipeline chegar à etapa Manual Judgement, não clique em Continue ainda, porque você precisará comparar a versão canário com a de referência.

    Cenário "Manual Judgement" do pipeline do canário

  5. No Cloud Shell, execute o comando kubectl -n default get pods para ver os novos pods rotulados como canário (canary) e referência (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 Stackdriver, acesse o Metrics Explorer.

    METRICS EXPLORER

  7. Se houver alguma métrica configurada no Metrics Explorer, remova todas as configurações existentes no formulário.

  8. Exiba a taxa de erro para a versão de referência e a canário, especificando os seguintes parâmetros:

    1. Metric: external.googleapis.com/prometheus/requests
    2. Filters:

      • http_code é igual a 500.
      • version é diferente de (!=) em prod.
  9. 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 nessa etapa 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

  10. Clique em Continue na caixa de diálogo Manual Judgement no Spinnaker.

    Cenário "Manual Judgement" do pipeline do canário

  11. Quando a implantação for concluída, volte ao Metrics Explorer no Stackdriver.

    METRICS EXPLORER

  12. Se houver alguma métrica configurada no Metrics Explorer, remova todas as configurações existentes no formulário.

  13. No campo Find resource type and metric, insira o seguinte:

    external.googleapis.com/prometheus/requests
    
  14. No campo Group by, insira 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, na implementação atual, é 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 cenário Manual Judgement é substituído por uma análise automática de canários.

Ativar o suporte ao canário

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

  1. No Cloud Shell, recupere o ID do seu projeto.

    echo $GOOGLE_CLOUD_PROJECT
    
  2. Abra um shell no pod do Halyard.

    export HALYARD_POD=$(kubectl -n spinnaker get pods -l \
        stack=halyard,app=spin \
        -o=jsonpath='{.items[0].metadata.name}')
    kubectl -n spinnaker exec -it $HALYARD_POD -- bash
    
  3. Configure o Kayenta para usar o Stackdriver como back-end.

    hal config canary google enable
    hal config canary google account add kayenta-tutorial --project [PROJECT_ID]
    hal config canary google edit --stackdriver-enabled=true
    

    em que:

    • [PROJECT_ID] representa o ID do projeto que você recuperou.
  4. Aplique a nova configuração e saia do pod do Halyard.

    hal deploy apply
    exit
    
  5. A implantação leva alguns minutos para ser concluída. Para verificar o progresso, execute os comandos watch kubectl -n spinnaker get pods. Quando a implantação for concluída, a resposta dos pods será Ready 1/1. Para interromper o comando watch, pressione Ctrl + C.

    NAME                               READY  STATUS   RESTARTS AGE
    minio-deployment-7c665c4b57-prl6d  1/1    Running  0        1h
    spin-clouddriver-6c4f954667-8769c  1/1    Running  0        1h
    spin-deck-7d44499f9b-hkqz4         1/1    Running  0        1h
    spin-echo-6cf4bbbbfc-vxzlr         1/1    Running  0        1h
    spin-front50-7666c894c6-fm7sz      1/1    Running  0        1h
    spin-gate-76f789696d-vsn98         1/1    Running  0        1h
    spin-halyard-59fd54bd69-vb99h      1/1    Running  0        1h
    spin-kayenta-84f6b9b697-5krhh      1/1    Running  0        1m
    spin-orca-78f5c74c6f-srl4f         1/1    Running  0        1h
    spin-redis-6d49c9c5b9-gddgv        1/1    Running  0        1h
    spin-rosco-699cb484f7-grthh        1/1    Running  0        1h
    

Configurar o recurso de análise automática de canários

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

  1. No Spinnaker, clique em Config.

  2. Na seção Features, selecione Canary e clique em Save Changes.

    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 Delivery, acesse Canary Configs.

  2. Clique em Add Configuration.

  3. No campo Configuration Name, insira kayenta-test.

  4. Na seção Metrics, clique em Add Metric.

  5. Na caixa de diálogo Add Metric, insira os seguintes valores e clique em OK:

    • Name: error_rate
    • Fail on: increase
    • Resource Type: k8s_container
    • Metric type: external.googleapis.com/prometheus/requests
    • Aligner: ALIGN_RATE
    • Filter Template: escolha Create new...
      • No campo Name do novo modelo de filtro, insira http_code.
      • No campo Template do novo modelo de filtro, insira metric.labels.http_code = "500" AND resource.label.pod_name = starts_with("${scope}").
      • Clique em Save.
  6. Na seção Scoring, selecione os seguintes valores:

    • Marginal: 75
    • Pass: 95
    • Group 1: 100
  7. Clique em Save Changes.

Adicionar uma etapa de análise de canários ao pipeline

Agora que você tem uma configuração canário, modifique o pipeline de implantação atual para substituir a etapa Manual Judgement por uma Canary Analysis que use essa configuração.

  1. Acesse Delivery > Pipelines e, no pipeline Canary Deploy, clique em Configure.

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

  2. Clique em Add Stage.

  3. Para Type, selecione Canary Analysis.

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

    • Deploy Canary
    • Deploy Baseline
  5. Preencha a seção Canary Analysis Configuration 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.
    Delay 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.
  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á as etapas para considerar uma potencial falha dos canários.

  7. No esquema do pipeline, clique em Deploy to Production.

    Captura de tela do botão "Deploy to Production" para o pipeline

  8. Altere a seção Depends On para os seguintes parâmetros:

    1. Adicione Canary Analysis.
    2. Remova Manual Judgement.
  9. Para garantir que a implantação só ocorra na produção se a análise de canários for bem-sucedida, altere o parâmetro Conditional on Expression.

    ${ #stage('Canary Analysis')['status'].toString() == 'SUCCEEDED'}
    
  10. No esquema do pipeline, clique em Delete Canary e altere a seção Depends On para os seguintes parâmetros:

    1. Adicione Canary Analysis.
    2. Remova Manual Judgement.
  11. No esquema do pipeline, clique em Delete Baseline e altere a seção Depends On.

    1. Adicione Canary Analysis.
    2. Remova Manual Judgement.
  12. Para garantir que todo o pipeline falhe se a análise de canários falhar, no esquema do pipeline, clique em Successful deployment e, para a pré-condição atual, clique no ícone Edit.

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

    1. Altere Expression para:

      ${ #stage('Canary Analysis')['status'].toString() == 'SUCCEEDED'}
      
    2. Clique em Update.

  13. Termine de substituir a etapa Manual Judgement pela etapa recém-criada Canary Analysis.

    1. No esquema do pipeline, clique em Manual Judgement.
    2. Clique em Remove stage.
  14. Clique em Save Changes. O pipeline agora se parece com a imagem a seguir: Visualização do pipeline de análise de canários

Testar o novo pipeline

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

  1. Acesse Delivery > Pipelines e, no pipeline Canary Deploy ou Automated Canary Deploy, clique em Start Manual Execution se você tiver usado a CLI.

  2. Selecione a Success Rate 60 e clique em Run.

  3. Para verificar o progresso atual da análise de canários, clique em Canary Analysis e em Task Status. Após alguns minutos, a etapa Canary Analysis falha, porque a taxa de sucesso atual na produção é 80. Quando a Canary Analysis falhar, acesse o relatório dessa análise de canários.

    1. Clique em Canary Analysis.
    2. Clique em Canary Summary.
    3. Clique no ícone Report. 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 "Report" para o resumo da análise de canários

  4. Repita as etapas desta seção, mas selecione uma Success Rate de 90 para conseguir uma análise de canários bem-sucedida.

Como fazer a limpeza

Para evitar que os recursos usados neste tutorial sejam cobrados na conta do Google Cloud Platform:

  1. No Console do GCP, acesse a página Projetos.

    Acessar a página Projetos

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

Excluir os recursos

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

  1. Desinstale o Spinnaker.

    kubectl delete -f https://www.spinnaker.io/downloads/kubernetes/quick-install.yml
    
  2. Exclua o cluster do GKE.

    gcloud container clusters delete kayenta-tutorial
    
  3. Quando a confirmação for solicitada, digite Y.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…