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

Neste tutorial, você recebe orientações para 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 e código aberto criado pela Netflix e pelo Google para gerenciar a implantação de aplicativos em diferentes plataformas de computação, incluindo o Google App Engine, o GKE, o Compute Engine, o 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 aplicativo a uma pequena parte do tráfego de produção e analisa o comportamento antes de prosseguir com a implantação completa. 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. Também é possível que haja várias métricas diferentes a serem examinadas.

Para resolver esses problemas, no Spinnaker, há um recurso de análise automática de canários: as métricas de ambas as versões do 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 release 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, 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 Limpeza.

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 código do projeto como uma variável.

    export GOOGLE_CLOUD_PROJECT=[PROJECT_ID]
    

    em que:

    • [PROJECT_ID] representa o código 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 --cluster-version=1.10 \
        --enable-stackdriver-kubernetes \
        --scopes=gke-default,compute-ro
    gcloud container clusters get-credentials kayenta-tutorial
    

  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.

    kubectl apply -f https://spinnaker.io/downloads/kubernetes/quick-install.yml
    

  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 estiver concluída, a saída dos pods será 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 para o 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. A publicação da definição JSON do pipeline diretamente na API Spinnaker é feita pelo comando a seguir.

    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 -- \
        /bin/sh -c "apk add --no-cache --yes 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. Nos registros, um grande número de mensagens de erro interno do servidor é exibido. 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%.

No aplicativo, um endpoint /metrics é exposto 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 por código de status HTTP:

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

Como você vê no gráfico, o aplicativo 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 um aplicativo com uma 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 aplicativo antes de implantá-lo totalmente na produção. Na imagem a seguir, são descritos diferentes cenários desse pipeline:

Ilustração dos cenários de um pipeline de implantação canário

  • Passo 0: como no pipeline Simple Deploy, um parâmetro de Success Rate é usado como entrada. Neste novo pipeline, esse parâmetro é usado para simular diferentes taxas de sucesso. Esta é a Configuração do pipeline.
  • Passo 1: no cenário Find Baseline Version, a versão atual do aplicativo em execução na produção é recuperada a partir da execução mais recente do pipeline Simple Deploy. Neste tutorial, a taxa de sucesso do aplicativo implantado atualmente é recuperada.
  • Em paralelo com o cenário Find Baseline Version, no cenário Deploy Canary Config, a nova configuração de taxa de sucesso para a versão canário do aplicativo é implantada.
  • Passo 2: com os estágios Deploy Canary e Deploy Baseline, são implantadas as duas versões para comparação: a nova versão canário e uma versão do valor de referência. Na versão canário, a configuração criada no Deploy Canary Config é usada. Na versão do valor de referência, a configuração da versão de produção é usada.

  • Passo 3: no cenário Manual Judgement, o pipeline é interrompido até que você continue. Durante esse cenário, é possível verificar se o comportamento da versão canário está correto.

  • Passo 4: se você continuar depois do cenário Manual Judgement, a infraestrutura será limpa pelos cenários Delete Canary e Delete Baseline.
  • Em paralelo com a limpeza, o cenário Deploy to Production é iniciado, e o pipeline Simple Deploy é acionado com o mesmo parâmetro de Success Rate que você forneceu inicialmente. A mesma versão do aplicativo que você testou em uma implantação canário é implantada na produção.
  • O cenário Deploy to Production é acionado somente se você optar por continuar durante o cenário Manual Judgement.
  • Passo 5: finalmente, o cenário Successful Deployment confirma que todo o pipeline foi bem-sucedido. Seu sinal verde no cenário Manual Judgement é verificado, e a execução só ocorre se a execução dos cenários Deploy to Production, Delete Canary e Delete Baseline for bem-sucedida.

Agora, crie e execute o pipeline Canary Deploy.

  1. Crie o pipeline Canary Deploy. Para isso, execute o seguinte comando para buscar o código 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:

    1. Clique em Start Manual Execution.
    2. Selecione uma Success Rate de 80.
    3. Clique em Run.
  4. Quando o pipeline atingir o cenário Manual Judgement, não clique em Continue ainda, porque você precisará comparar a versão canário com a versão do valor 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 valor de 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 atuais do formulário.

  8. Selecione os dados da implantação canário como primeira métrica e especifique os seguintes parâmetros:

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

      • http_code é igual a 500
      • pod_name é igual a sampleapp-canary-*
  9. Para selecionar os dados do valor de referência como a segunda métrica, clique em + Add Metric e preencha os seguintes campos:

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

      • http_code é igual a 500
      • pod_name é igual a sampleapp-baseline-*
  10. Compare a versão canário (em roxo no gráfico a seguir) com a versão do valor 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 versão do valor de referência. Portanto, é seguro implantar completamente a versão canário na produção. Se a versão canário não tiver uma taxa de erro menor, pode ser melhor interromper a implantação nesse cenário e fazer algumas correções no aplicativo.

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

  11. No Spinnaker, na caixa de diálogo Manual Judgement, clique em Continue.

    Cenário Manual Judgement do pipeline do canário

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

    METRICS EXPLORER

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

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

    external.googleapis.com/prometheus/requests
    

  15. 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, valor de 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 o canário e o valor 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 código do seu projeto.

    echo $GOOGLE_CLOUD_PROJECT
    

  2. Pegue 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 código 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 saída dos pods será Ready 1/1. Para parar 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 no Spinnaker, um teste estatístico é executado sob 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 passam ou falham na comparação entre o valor de referência e o canário. A pontuação poderá ser influenciada se você colocar métricas em grupos diferentes, com pesos diferentes para cada grupo. 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 aplicativo pode ter várias configurações canário que podem ser compartilhadas em vários aplicativos. Uma configuração canário tem dois elementos principais:

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

Em um pipeline de implantação, uma configuração canário é usada durante o cenário Canary Analysis. Nesse cenário, pode haver várias execuções de teste canário. Se a pontuação de qualquer execução estiver abaixo do limite marginal, o cenário será interrompido, 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 todo o cenário seja considerado bem-sucedido.

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

  1. Agora que o teste canário está ativado, atualize o Spinnaker. A seção Pipelines é substituída pela Delivery. Na seção Delivery, acesse Canary Configs.

  2. Clique em Add Configuration.

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

  4. Na seção Filter Templates, clique em Add Template.

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

    • Name: http_code
    • Template: metric.labels.http_code = "500" AND resource.label.pod_name = starts_with("${scope}")

    A variável scope é preenchida no ambiente de execução com o nome da implantação do GKE que terá as métricas verificadas pelo Kayenta. Para o valor de referência, é sampleapp-baseline, e para o canário, é sampleapp-canary.

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

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

    • Name: error_rate
    • Fail on: increase
    • Filter Template: http_code
    • Metric type: external.googleapis.com/prometheus/requests
  8. Na seção Scoring, selecione os seguintes valores:

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

Adicionar um cenário 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 o cenário Manual Judgement por um cenário Canary Analysis que use essa configuração.

  1. Acesse Delivery > Pipelines e, para o 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 o novo cenário para que dependa das seguintes seleções:

    • Deploy Canary
    • Deploy Baseline
  5. Na seção Extended Params, clique em Add Field e adicione um parâmetro com uma chave de perSeriesAligner e um valor de ALIGN_RATE.

  6. Preencha a seção Canary Analysis Configuration com os seguintes valores:

    Nome do parâmetro Valor Definição
    Config Name kayenta-test O nome da configuração canário que você criou anteriormente.
    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 valor de referência pelo Kayenta.
    Baseline Location default O namespace do GKE em que o valor de referência reside.
    Canary sampleapp-canary A implantação do GKE usada como canário pelo Kayenta.
    Canary Location default O namespace do GKE em que o canário reside.
    Lifetime 0 hours 5 minutes Quanto tempo a análise de canários deve durar.
    Resource Type k8s_container O tipo de recurso em que você está executando a análise de canários. Usado para consultar a API Stackdriver Debugger.
    Metrics Account kayenta-tutorial A conta usada pelo Kayenta para consultar métricas. Aqui, é a conta do Google que você configurou anteriormente para dar ao Spinnaker acesso a {{stackdriver_name_short}.
    Storage Account kayenta-minio A conta usada pelo Kayenta para armazenar os arquivos necessários, como os relatórios de canários.

  7. Na seção Execution Options, selecione Ignore the failure. Ignore a falha, assim será possível destruir o valor de referência e os canários mesmo em caso de falha da análise. Posteriormente, no tutorial, você modificará os cenários para levar em conta uma potencial falha dos canários.

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

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

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

    1. Adicione Canary Analysis.
    2. Remova Manual Judgement.
  10. 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'}
    

  11. 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.
  12. No esquema do pipeline, clique em Delete Baseline e altere a seção Depends On.

    1. Adicione Canary Analysis.
    2. Remova Manual Judgement.
  13. 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 a Expression para o seguinte:

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

    2. Clique em Update.

  14. Termine de substituir o cenário Manual Judgement pelo cenário recém-criado Canary Analysis.

    1. No esquema do pipeline, clique em Manual Judgement.
    2. Clique em Remove stage.
  15. Clique em Save Changes. O pipeline agora se parecerá 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 o comportamento dele é o esperado:

  1. Acesse Delivery > Pipelines e, para o pipeline Canary Deploy ou Automated Canary Deploy, se você usou a CLI, clique em Start Manual Execution.

  2. Selecione uma Success Rate de 60 e clique em Run.

  3. Para verificar o andamento atual da análise de canários, clique em Canary Analysis e em Task Status. Após alguns minutos, o cenário Canary Analysis falha, porque a taxa de sucesso atual na produção é 80. Quando o cenário 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 versão do valor 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 que você quer excluir e clique em Excluir projeto. Após marcar a caixa de seleção ao lado do nome do projeto, clique em Excluir projeto
  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://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…