Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Argo Rollouts no Kubernetes: Alavancando a Esta...

Thiago Finardi
November 25, 2023
28

Argo Rollouts no Kubernetes: Alavancando a Estabilidade das Implantações

Você já se deparou com desafios ao implantar atualizações em seu cluster Kubernetes?

Implantar e atualizar aplicativos no K8s pode ser um desafio complexo, a estabilidade e a confiabilidade são fundamentais na entrega de aplicativos em ambientes Kubernetes complexos. No mundo da entrega de aplicativos modernos, a estabilidade e a resiliência são cruciais. Nesta palestra, exploraremos como você pode aprimorar suas implantações no Kubernetes usando o Argo Rollouts, com estratégias avançadas como: Blue-Green, Canary, Reversões e Promoções automatizadas através de métricas.

Thiago Finardi

November 25, 2023
Tweet

Transcript

  1. Argo Rollouts no k8s: Alavancando a estabilidade das implantações Thiago

    Finardi Staff Reliability Engineer - SRE Chaos Engineer © 2023 - Code Island Summit - Palhoça / SC
  2. Thiago Finardi STAFF RELIABILITY ENGINEER / CHAOS ENGINEER Especialista em

    Testes de Resiliência através da Engenharia do Caos em ambientes complexos e críticos SRE com +20 anos de experiência em Infra e Sec Desenvolvo e viabilizo as práticas de Engenharia do Caos junto aos times dentro do Itaú Grad. em ADS / Esp. em Segurança da Informação / Mestrado em Ciência da Computação [IoT e Sistemas Distribuídos] Thiago Finardi @tfinardi www.finardi.me © 2023 - Code Island Summit - Palhoça / SC
  3. Quem já teve problemas em implantações de novas versões? Já

    sofreu com rollback? © 2023 - Code Island Summit - Palhoça / SC
  4. Estratégias nativas: RollingUpdate © 2023 - Code Island Summit -

    Palhoça / SC App v1 Tráfego atual Versão inicial
  5. Estratégias nativas: RollingUpdate © 2023 - Code Island Summit -

    Palhoça / SC App v1 Tráfego atual Nova Versão implantada App v2
  6. Estratégias nativas: RollingUpdate © 2023 - Code Island Summit -

    Palhoça / SC App v1 Tráfego atual Nova Versão implantada App v2
  7. Estratégias nativas: RollingUpdate © 2023 - Code Island Summit -

    Palhoça / SC Tráfego atual Estado final App v2
  8. Estratégias nativas: Recreate © 2023 - Code Island Summit -

    Palhoça / SC App v1 Tráfego atual Versão inicial
  9. Estratégias nativas: Recreate © 2023 - Code Island Summit -

    Palhoça / SC Tráfego atual Nova Versão implantada
  10. Estratégias nativas: Recreate © 2023 - Code Island Summit -

    Palhoça / SC Tráfego atual Estado final App v2
  11. Poucos controles sobre a velocidade do lançamento Incapacidade de controlar

    o fluxo de tráfego para a nova versão Algumas limitações: © 2023 - Code Island Summit - Palhoça / SC
  12. Poucos controles sobre a velocidade do lançamento Incapacidade de controlar

    o fluxo de tráfego para a nova versão As sondagens de prontidão (Startup, Liveness e Readiness) são inadequadas para verificações mais profundas Algumas limitações: © 2023 - Code Island Summit - Palhoça / SC
  13. Poucos controles sobre a velocidade do lançamento Incapacidade de controlar

    o fluxo de tráfego para a nova versão As sondagens de prontidão (Startup, Liveness e Readiness) são inadequadas para verificações mais profundas Não é possível consultar métricas externas para verificar o sucesso de uma atualização Algumas limitações: © 2023 - Code Island Summit - Palhoça / SC
  14. Poucos controles sobre a velocidade do lançamento Incapacidade de controlar

    o fluxo de tráfego para a nova versão As sondagens de prontidão (Startup, Liveness e Readiness) são inadequadas para verificações mais profundas Não é possível consultar métricas externas para verificar o sucesso de uma atualização Pode interromper a progressão, mas não consegue abortar e reverter automaticamente a atualização Algumas limitações: © 2023 - Code Island Summit - Palhoça / SC
  15. Poucos controles sobre a velocidade do lançamento Incapacidade de controlar

    o fluxo de tráfego para a nova versão As sondagens de prontidão (Startup, Liveness e Readiness) são inadequadas para verificações mais profundas Não é possível consultar métricas externas para verificar o sucesso de uma atualização Pode interromper a progressão, mas não consegue abortar e reverter automaticamente a atualização Não fornece controle sobre o blast radius Algumas limitações: © 2023 - Code Island Summit - Palhoça / SC
  16. Argo Rollouts é um controlador Kubernetes que permite executar métodos

    avançados de implantação em um cluster Kubernetes. © 2023 - Code Island Summit - Palhoça / SC Implantações Progressivas com Argo Rollouts
  17. Blue / Green Release © 2023 - Code Island Summit

    - Palhoça / SC 100% App v1 Usuários recebem v1 Tráfego atual Versão inicial
  18. 100% Blue / Green Release © 2023 - Code Island

    Summit - Palhoça / SC App v1 Usuários ainda recebem v1 App v2 tests Tráfego atual Nova versão implantada
  19. Blue / Green Release © 2023 - Code Island Summit

    - Palhoça / SC App v1 Usuários agora recebem v2 App v2 Tráfego atual Mudança de tráfego promote
  20. Blue / Green Release © 2023 - Code Island Summit

    - Palhoça / SC Usuários recebem a v2 App v2 Tráfego atual Estado final
  21. Canary Release © 2023 - Code Island Summit - Palhoça

    / SC App:v1 Usuários recebem a v1 Tráfego atual Versão inicial
  22. Canary Release © 2023 - Code Island Summit - Palhoça

    / SC App:v1 Tráfego atual v2 para 10% dos usuários 90% App v2 10% tests
  23. Canary Release © 2023 - Code Island Summit - Palhoça

    / SC App:v1 Tráfego atual v2 para 30% dos usuários 70% App v2 30% tests
  24. Canary Release © 2023 - Code Island Summit - Palhoça

    / SC App:v1 Tráfego atual v2 para 70% dos usuários 30% App v2 70% tests
  25. Canary Release © 2023 - Code Island Summit - Palhoça

    / SC App:v1 Tráfego atual v2 para 100% dos usuários 0% App v2 100% promote
  26. Canary Release © 2023 - Code Island Summit - Palhoça

    / SC Tráfego atual Estado final App v2 100%
  27. © 2023 - Code Island Summit - Palhoça / SC

    Nem tudo são flores! Muitos serviços não são simples!
  28. Backend v2 Versões distintas e integradas © 2023 - Code

    Island Summit - Palhoça / SC Frontend v1 App cadastro Frontend v2 Tráfego estável Nova versão implantada Backend v1 Backend v1 Tráfego de preview App pedidos
  29. App cadastro App pedidos Backend v2 Versões distintas e integradas

    © 2023 - Code Island Summit - Palhoça / SC Frontend v1 Frontend v2 Tráfego estável Dependência quebrada Backend v1 Backend v1 Tráfego de preview
  30. 01 02 Backend primeiro © 2023 - Code Island Summit

    - Palhoça / SC 3 cenários de implantação Frontend primeiro Ao mesmo tempo 03
  31. Frontend v1. 0 v1.0 v1.0 Backend v1 .0 01 1:

    Aplicação moderna, backend primeiro © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem
  32. Frontend v1. 0 v1.0 v1.0 02 v1.0 v1.0 v2.0 Backend

    v1 .0 01 Frontend v1. 0 Backend v1 .0 1: Aplicação moderna, backend primeiro © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego Smoke Testes/QA
  33. Frontend v1. 0 v1.0 v1.0 02 v1.0 v1.0 v2.0 Backend

    v1 .0 01 Frontend v1. 0 Backend v1 .0 03 v1.0 v2.0 Frontend v1. 0 Backend v2 .0 1: Aplicação moderna, backend primeiro © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego Smoke Testes/QA Tráfego
  34. Frontend v1. 0 v1.0 v1.0 02 v1.0 v1.0 v2.0 Backend

    v1 .0 01 Frontend v1. 0 Backend v1 .0 03 v1.0 v2.0 04 v1.0 v2.0 v2.0 Frontend v1. 0 Backend v2 .0 1: Aplicação moderna, backend primeiro © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego Smoke Testes/QA Tráfego Tráfego Smoke Testes/QA Frontend v1. 0 Backend v2 .0
  35. Frontend v1. 0 v1.0 v1.0 02 v1.0 v1.0 v2.0 Backend

    v1 .0 01 Frontend v1. 0 Backend v1 .0 03 v1.0 v2.0 04 v1.0 v2.0 v2.0 Frontend v1. 0 Backend v2 .0 1: Aplicação moderna, backend primeiro © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego Smoke Testes/QA Tráfego Tráfego Smoke Testes/QA Frontend v1. 0 Backend v2 .0 05 v2.0 v2.0 Tráfego Frontend v2. 0 Backend v2 .0
  36. Frontend v2. 0 v2.0 v2.0 Backend v2 .0 01 2:

    Aplicação moderna, frontend primeiro © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem
  37. Frontend v2. 0 v2.0 v2.0 02 v2.0 v2.0 v3.0 Backend

    v2 .0 01 Frontend v2. 0 Backend v2 .0 2: Aplicação moderna, frontend primeiro © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego Smoke Testes/QA
  38. Frontend v2. 0 v2.0 v2.0 02 v2.0 v2.0 v3.0 Backend

    v2 .0 01 Frontend v2. 0 Backend v2 .0 03 v3.0 v2.0 Frontend v3. 0 Backend v2 .0 2: Aplicação moderna, frontend primeiro © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego Smoke Testes/QA Tráfego
  39. Frontend v2. 0 v2.0 v2.0 02 v2.0 v2.0 v3.0 Backend

    v2 .0 01 Frontend v2. 0 Backend v2 .0 03 v3.0 v2.0 04 v3.0 v2.0 Frontend v3. 0 Backend v2 .0 2: Aplicação moderna, frontend primeiro © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego Smoke Testes/QA Tráfego Tráfego Frontend v3. 0 Backend v2 .0 v3.0 Smoke Testes/QA
  40. Frontend v2. 0 v2.0 v2.0 02 v2.0 v2.0 v3.0 Backend

    v2 .0 01 Frontend v2. 0 Backend v2 .0 03 v3.0 v2.0 04 v3.0 v2.0 Frontend v3. 0 Backend v2 .0 2: Aplicação moderna, frontend primeiro © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego Smoke Testes/QA Tráfego Tráfego Frontend v3. 0 Backend v2 .0 05 v2.0 v3.0 Tráfego Frontend v3. 0 Backend v3 .0 v3.0 Smoke Testes/QA
  41. 01 Feature requer mudança em dois ou mais serviços ao

    mesmo tempo © 2023 - Code Island Summit - Palhoça / SC Cenários legados Backend v1 Frontend v1 Backend v2 Frontend v1 Backend v1 Frontend v2
  42. 01 Feature requer mudança em dois ou mais serviços ao

    mesmo tempo © 2023 - Code Island Summit - Palhoça / SC Cenários legados Backend v1 Frontend v1 Backend v2 Frontend v1 Backend v1 Frontend v2 Serviços não possuem versionamento de API (Release) 02
  43. 01 Feature requer mudança em dois ou mais serviços ao

    mesmo tempo © 2023 - Code Island Summit - Palhoça / SC Cenários legados Backend v1 Frontend v1 Backend v2 Frontend v1 Backend v1 Frontend v2 Serviços não possuem versionamento de API (Release) Não há possibilidade de se fazer testes completos de integração entre as dependências 02 03
  44. 01 Feature requer mudança em dois ou mais serviços ao

    mesmo tempo © 2023 - Code Island Summit - Palhoça / SC Cenários legados Backend v1 Frontend v1 Backend v2 Frontend v1 Backend v1 Frontend v2 Serviços não possuem versionamento de API (Release) Não há possibilidade de se fazer testes completos de integração entre as dependências Precisamos somente atualizar configurações, não binários ou imagens 02 03 04
  45. Frontend v1. 0 v1.0 v1.0 Backend v1 .0 01 3:

    Aplicação legada, ao mesmo tempo © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem
  46. Frontend v1. 0 v1.0 v1.0 02 v1.0 v1.0 Backend v1

    .0 01 Frontend v1. 0 Backend v1.0 3: Aplicação legada, ao mesmo tempo © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego v2.0 Smoke Testes/QA
  47. Frontend v1. 0 v1.0 v1.0 02 v1.0 v1.0 Backend v1

    .0 01 Frontend v1. 0 Backend v1.0 03 Frontend v1. 0 Backend v2 .0 3: Aplicação legada, ao mesmo tempo © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego v2.0 Smoke Testes/QA v1.0 v1.0 v2.0 Tráfego Smoke Testes/QA v2.0
  48. Frontend v1. 0 v1.0 v1.0 02 v1.0 v1.0 Backend v1

    .0 01 Frontend v1. 0 Backend v1.0 03 04 v1.0 Frontend v1. 0 Backend v2 .0 3: Aplicação legada, ao mesmo tempo © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego Frontend v2. 0 Backend v2 .0 v2.0 v2.0 Smoke Testes/QA v1.0 v1.0 v2.0 Tráfego Smoke Testes/QA v2.0 v2.0 Tráfego
  49. Frontend v1. 0 v1.0 v1.0 02 v1.0 v1.0 Backend v1

    .0 01 Frontend v1. 0 Backend v1.0 03 04 v1.0 Frontend v1. 0 Backend v2 .0 3: Aplicação legada, ao mesmo tempo © 2023 - Code Island Summit - Palhoça / SC Frontend Backend Tráfego Usuários recebem Tráfego Frontend v2. 0 Backend v2 .0 05 v2.0 v2.0 Tráfego Frontend v2. 0 Backend v2 .0 v2.0 v2.0 Smoke Testes/QA v1.0 v1.0 v2.0 Tráfego Smoke Testes/QA v2.0 v2.0 Tráfego
  50. E se for só mudancá de configuração? Como você atualiza

    um configMap hoje? © 2023 - Code Island Summit - Palhoça / SC
  51. O hack: Kustomize configmap generators © 2023 - Code Island

    Summit - Palhoça / SC https://codefresh.io/blog/multi-service-progressive-delivery-with-argo-rollouts/ Deployment processado Configmap gerado Agora o nome do configmap é único
  52. Mergulhe na entrega de software contínua no K8s com o

    Argo Rollouts e evolua a estabilidade, a resiliência e a confiabilidade das aplicações. Cada implantação se torna uma oportunidade para evoluir sem interrupções. © 2023 - Code Island Summit - Palhoça / SC
  53. © 2023 - Code Island Summit - Palhoça / SC

    Argo Rollouts Artigo Matheus Fidelis Argo Rollouts - Kubernetes Progressive Delivery Controller Progressive delivery for Kubernetes Config Maps using Argo Rollouts