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

Como o Nubank entrega software usando Amazon EKS

Como o Nubank entrega software usando Amazon EKS

Avatar for Julio Turolla

Julio Turolla

August 16, 2022
Tweet

More Decks by Julio Turolla

Other Decks in Technology

Transcript

  1. S Ã O P A U L O | 3

    - 4 A G O S T O
  2. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Como o Nubank entrega software usando Amazon EKS Lucas Duarte C O N 3 0 1 Sr. Containers Specialist Solutions Architect AWS Julio Turolla Lead Software Engineer CICD Nubank Rafael Leal Lead Software Engineer CICD Nubank
  3. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Agenda • Arquitetura do Amazon EKS • Conceitos do Kubernetes • Autoscaling • Segurança • Sobre a Nubank • CICD na Nubank • Gocd e seus problemas de escala • Maior capacidade com o Amazon EKS • Considerações Avançadas de CI/CD no Amazon EKS
  4. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Aplicações modernas na AWS
  5. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. As organizações querem se tornar mais ágeis E construir aplicações modernas é difícil Escalar para milhões de usuários Ter disponibilidade global Responder em milisegundos Lidar com petabytes de dados Mas as aplicações hoje são muito diferentes Padrões de arquitetura modular Modelos operacionais Serverless Processos de desenvolvimento ágeis As empresas estão procurando inovar rapidamente Responder às mudanças mais rapidamente Acelerar o time to market
  6. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Reconsidere a fundação da aplicação Obtenha mais dos dados Melhore a experiência do cliente Modernize com containers Aumente a agilidade do negócio Reduza o custo total de ownership
  7. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. A AWS facilita a criação com contêineres APROFUNDE-SE Serviços de contêiner e migração • Amazon ECS workshop • Amazon EKS workshop ORCHESTRATION REGISTRY COMPUTE Amazon ECR Amazon ECS Amazon EKS Red Hat OpenShift Service on AWS AWS Fargate Amazon EC2 AWS App Runner AWS App Runner
  8. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Amazon EKS Deep Dive
  9. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Princípios do Amazon EKS Workloads Produtivo Nativo e upstream Integrações simples Contribuição Open Source Segurança como prioridade
  10. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Workflow de criação do Cluster EKS Criar EKS Cluster Provisionar Worker Nodes Implantar Add-ons Implantar Workloads • Diversas opções para o provisionamento do cluster. • AWS Console, CloudFormation, Terraform (EKS Blueprints), Amazon EKS CLI, eksctl • eksctl fornece a maneira mais fácil e rápida para criar um novo cluster de EKS com seus worker nodes • https://eksctl.io
  11. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. EKS VPC Customer VPC Internet EKS-Managed Cross-Account ENI Self-Managed Worker Nodes EKS Arquitetura em alto nível API Calls Control Plane Data Plane API Calls Managed Worker Nodes Master to Worker Node Communication kubectl Amazon EKS TLS
  12. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. EKS consegue lidar com o scaling das minhas aplicações? Amazon EKS • Auto scaling das instâncias do Control Plane • Auto Tuning the parâmetros do control plane, maxRequestsInFlight • Tirar vantage das mais recentes melhorias de infraestrutura da AWS • Testar cluster com até 15k Nodes (Mega Clusters) Seu Lado • Monitore as métricas do Prometheus do control plane do Kubernetes • Visualize métricas no Amazon CloudWatch ou Grafana • Habilite os logs de auditoria do control plane para identificar os principais “callers” Sim, mas é uma responsabilidade compartilhada
  13. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. EC2 Opções de Runtime Self-Managed Node Groups Managed Node Groups Groupless Nodes * Karpenter é uma solução open-source, flexível, e com alta performance Kubernetes Cluster Autoscaler.
  14. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. KubeProxy Container Runtime Kubelet CNI Plugin KubeProxy Container Runtime Kubelet CNI Plugin Componentes chave de um Cluster EKS EC2 ELB EC2 Data Plane Control Plane EKS API Server Controller Manager Scheduler Pod Container
  15. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Como faço upgrade do meu cluster? • O Amazon EKS pretende estar de 100 a 150 dias atrás do lançamento upstream. • Você deve planejar a atualização de versão pelo menos anualmente, idealmente 2x- 3x/ano. • Use os recursos gerenciados do EKS para simplificar as atualizações. • Execute o processo de atualização no ambiente de teste primeiro. • Verifique as notas de versão do EKS e do Kubernetes. • Teste os manifestos do seu aplicativo em relação às APIs obsoletas/removidas. Q U A L V E R S Ã O D O K U B E R N E T E S E U U S O ?
  16. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. EKS Portfolio EKS Distro EKS-D é uma distribuição do Kubernetes usada pelo Amazon EKS para criar clusters confiáveis e seguros. EKS in AWS EKS Anywhere Um Control Plane de Kubernetes totalmente gerenciado. Ferramentas para auxiliar a implantação, atualização e operação de clusters Kubernetes na infraestrutura on-prem.
  17. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Conceitos do Kubernetes
  18. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. “Hierarquia” dos Objetos Kubernetes Pod StatefulSet ReplicaSet DaemonSet Job Deployment Cron Job Container Horizontal Pod Autoscaler Service Ingress Volume Persistent Volume Claim Secret ConfigMap Container Container
  19. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Kubernetes Namespace Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 namespace: kube-system my-pod my-pod my-pod my-service my-replicaset namespace: default my-pod my-pod my-pod my-service my-replicaset namespace: my-namespace my-pod my-pod my-pod my-service my-replicaset
  20. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Estratégias de Autoscaling para o Amazon EKS 20
  21. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Gerenciamento de recursos para pods e containers • Ao especificar um Pod, você pode especificar opcionalmente quanto de cada recurso um container precisa. • Os recursos mais comuns para especificar são CPU e memória. • Resource request • Usado pelo kube-scheduler para decidir em qual nó colocar o pod. • Resource limit • Usado pelo kubelet para garantir que o container em execução não tenha permissão para usar mais desse recurso do que o definido pelo limite.
  22. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Horizontal Pod Autoscaling • Horizontal Pod Autoscaling (HPA) é baseado em métricas de recursos • Existem dois tipos de métricas • System metrics – CPU, memory, uso de disco de pods • Service metrics – Definido explicitamente no código do aplicativo e exportado • Número de erros 500 • Número de requisições HTTP
  23. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Cluster Autoscaler • Dimensiona os worker nodes em qualquer Autoscaling group (ASG) especificado. • Adiciona nodes no ASG quando os pods falham a serem lançados devido a falta de recursos. • Faz o reschedule dos pods e “evict” nodes subutilizados no ASG • É executado como um Deployment no seu cluster dentro de um worker node. • É executado em três modos distintos: • One ASG setup • Multi ASG setup • Auto-Discovery setup • Usa RAM e CPU cores disponíveis em instâncias para seus cálculos de dimensionamento • Portanto, é melhor ter tipos de instância com a mesma quantidade de RAM e CPU se você estiver usando ASG com MixedInstancesPolicy
  24. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 24 E se removermos o conceito de node groups? • Escolha os tipos de instância baseado no pod resource requests • Escolha os nodes baseado nos pods scheduling constraints • Provisione a capacidade diretamente - EC2 “Instant” Fleets • Faça track dos nodes utilizando Kubernetes labels nativas • Vincule pods antecipadamente aprovisionados • Comum para cargas de trabalho de integração contínua Karpenter e Flexible Computing 24 economia de até 90% se comparado com
  25. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 25 Pending pods Existing capacity Just-in-time capacity Unschedulable pods Como o Karpenter funciona 25
  26. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 26 Como o Karpenter provisiona os Nodes na AWS Application Scheduler/HPA Pending Pods CA ASG EC2 API EC2 Fleet (Instance) Karpenter
  27. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. K8s action allowed/denied EKS: IAM Authentication + kubectl Authorization of AWS Identity against Kubernetes RBAC K8s API Passes AWS Identity Verifies AWS Identity kubectl AWS IAM Authentication
  28. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Nota: Qualquer usuário/função do IAM que cria o cluster é um administrador completo oculto permanente (não pode ser visto no console da AWS ou via kubectl) no cluster! Idealmente, crie-o com um usuário/função dedicado ao qual você limita o acesso, como faria com sua conta root da AWS.
  29. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. IRSA (IAM-Roles para Service Accounts) • Você pode associar uma IAM-Role a uma service account do Kubernetes. • Essa service account pode fornecer permissões da AWS para os containers em qualquer pod que use essa service account. • As roles do IAM para as service accounts oferecem os seguintes benefícios: • Privilégio mínimo • Isolamento de credenciais • Auditabilidade
  30. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Log e Auditoria do Control Plane Logging do control plane, especialmente em torno de uma trilha de auditoria das ações da API, é um aspecto importante da segurança e da capacidade de descobrir quem fez o quê. Ao usar o EKS, você pode (e deve) habilitar esse registro no CloudWatch Logs.
  31. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Nubank: Crescimento Rápido e Aceleração Internacional Como o crescimento da operação do Brasil e abertura de operações no México e Colômbia influenciaram a arquitetura de entrega de software.
  32. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Nubank 2016 • Cartão de Crédito • Brasil • 1MM • 40 serviços • Testes end-to-end • ~50 deploys por semana
  33. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Nubank 2022 • Cartão de Crédito • NuConta, Débito • Empréstimos • PJ • Investimentos • Seguros • NuPay For Business • Brasil • México • Colômbia • 60MM • 1000+ serviços • 1.6 MM tasks de CI por mês • 6k tasks concorrentes em picos • 5970 deploys por semana em picos
  34. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. GoCD platform (2015-today) • Projeto open source da Thoughtworks • Solução self-hosted • Plataforma relativamente robusta para gerenciar milhares de pipelines de forma centralizada • Rodava os testes end-to-end
  35. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS account Arquitetura do GoCD inicial Region us-east-1 Region sa-east-1 prod-cluster kubernetes Services Instances deploy EC2 Peering connection GoCD Server GoCD Publish Agents GoCD Build Agents GoCD Test Agents
  36. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS account (BR) AWS account Arquitetura do GoCD multi-account Region us-east-1 Region sa-east-1 GoCD Server GoCD Publish Agents GoCD Build Agents GoCD Test Agents prod-cluster Services Instances Peering connection Deploy Agents Config Agents AWS account (MX) Region us-west-1 prod-cluster Services Instances Deploy Agents Config Agents
  37. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Limitações do GoCD • Falta de granularidade das permissões por task, levando a uma complexidade na estrutura das pipelines • É uma solução não-elástica, levando a um grande esforço de manutenção e automação de infraestrutura • Gerenciamento de dependências por tipo de agent, e não por container • Um orquestrador central é um grande gargalo de execuções • A base de código é legada, difícil de estender e contribuir
  38. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Número de deploy de serviços
  39. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Nova geração de CI/CD com o Tekton
  40. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Por que Tekton? • Kubernetes se mostrou uma plataforma robusta e com um ecossistema enorme • Flexibilidade e extensibilidade da plataforma. • Parte da CDF (Continuous Delivery Foundation), comunidade para dar suporte no desenvolvimento de CICD como plataforma
  41. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. “Hierarquia” dos CRDs do Tekton Task TaskRun Pipeline PipelineRun Pod Container Container Container Volume ConfigMap Secret PVC Tekton Controller
  42. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS account (BR) AWS account (CICD) Arquitetura Tekton + Workflows Region sa-east-1 prod-cluster Peering connection EKS Cluster AWS account (MX) Region us-west-1 prod-cluster AWS account (CO) Region us-west-1 prod-cluster Core Applications Runs Workflows Tekton Monitoring Garbage Collector Logs Collector GitHub PipelineRun TaskRun TaskRun PipelineRun manages Spot Instances
  43. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Ficou claro que uma solução gerenciada reduziria a carga de operação em times de infraestrutura. • Nubank já contava com 21 clusters de Kubernetes self-managed. • A carga de trabalho do cluster de CI/CD não impactaria diretamente os clientes finais em caso de uma surpresa operacional. • A oportunidade para testar um novo serviço da AWS • Equipe de CI/CD focada em abstrações e problemas de maior impacto.
  44. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Como o Amazon EKS resolve nossos problemas • IAM Roles com Service Accounts do Kubernetes (IRSA). • Como a carga varia bastante durante o dia, a capacidade de autoscaling é muito importante para reduzir custos. • A possibilidade de usar spot instances para processos idempotentes.
  45. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Número de deploy de serviços
  46. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Resultados • Atingimos 400k tasks e 5900 deploys por semana. • Capacidade escalável para 4 Milhões de tasks por mês com a infra atual. • Confiabilidade da plataforma crescendo, mesmo com maior número de tasks. • Baixo nível de erros da plataforma. • Plataforma responsiva, 2s de latência para iniciar uma task, com enfileiramento raro. • Custo por task decrescente, muito inferior a soluções SaaS.
  47. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Considerações Avançadas da Carga de Trabalho de Integração Contínua no Amazon EKS
  48. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Cluster Warmup • Ao migrar sua carga de trabalho para um novo cluster, é importante dar tempo para o Control Plane escalar, evitando gargalos de processamento em produção. • Nossa estratégia de Blue / Green permite rollback para o cluster antigo em caso de alguma surpresa operacional durante uma migração.
  49. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS account (CICD) Estratégia de Blue/Green para CI/CD EKS Cluster - CICD Prod Blue GitHub EKS Cluster - CICD Prod Green Route53 Runs TaskRuns Application Load Balancer Runs Vazio… Application Load Balancer Escala ao direcionarmos carga
  50. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS account (CICD) Cluster Warmup EKS Cluster - CICD Prod Blue GitHub EKS Cluster - CICD Prod Green Route53 Control Plane Application Load Balancer Control Plane Application Load Balancer 🥶 🔥
  51. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS account (CICD) Cluster Warmup EKS Cluster - CICD Prod Blue GitHub EKS Cluster - CICD Prod Green Route53 Control Plane Application Load Balancer Control Plane Application Load Balancer 🥶 🔥 ⚠
  52. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS account (CICD) Cluster Warmup EKS Cluster - CICD Prod Blue GitHub EKS Cluster - CICD Prod Green Route53 Control Plane Application Load Balancer Control Plane Application Load Balancer 🔥 Fake Load 🔥
  53. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. A cloud é elástica, mas não infinita • Mesmo com a capacidade alta de escalabilidade do nosso cluster, é possível encontrarmos outros gargalos ◦ A performance do ETCD pode ser afetada dependendo do volume e do uso dos controllers. ◦ O ETCD tem um limite de 8Gb para o disco total e 1Mb para um único objeto ◦ CICD depende de outros fornecedores, como o Github, que tem seus rate limits. ◦ A performance dos controllers também podem ser um gargalo
  54. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Sobre garbage collection • O EKS escala bem e é testado para mega clusters, mas temos que assumir responsabilidade por remover recursos não utilizados. • O API Server do Kubernetes não irá escalar para milhares de objetos sendo criados e persistidos para sempre. Isso é mencionado na talk Mike Stefaniak Deep dive on Amazon EKS - Can EKS handle the scale of my applications. Yes but it's a shared responsibility. • Devido a natureza de CICD, a carga é efêmera e deve ser ter recursos como TaskRuns e PipelineRuns removidos para evitar acúmulo. • Um controller de Kubernetes foi criado com a responsabilidade por esse garbage collection.
  55. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Wrap up • EKS funciona bem para cargas de trabalho de integração continua. • O Tekton fornece building blocks para criar uma solução de CICD escalável. • É possível construir aplicações robustas sobre a API do Kubernetes, se utilizando dos recursos de CRDs, extendendo o Tekton. • É importante entender os limites dos serviços e da cloud, e manter- se alinhado seu time da AWS. • Ao migrar uma carga de trabalho para um cluster EKS, atente-se ao monitoramento do control plane, já que isso é uma responsabilidade do cliente.
  56. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 2017 Tema: Control Plane Tema: Data Plane Tema: Cluster Ops 2020 2021 Temos nos mantido ocupados Segurança e Confiabilidade - 99.95% Service Level Agreement (SLA) - CIS Benchmark, FedRAMP Moderate and High - Security Groups for Kubernetes Pods - Secrets encryption with KMS - Secrets Manager CSI driver - Authentication with OIDCS providers Storage and Rede - EBS, EFS, and FSx for Lustre CSI Drivers - IPV6 - VPC CNI increased pod density - Private networking for Managed Node Groups - AWS Load Balancer Controller GA - Multus CNI support - Pod level security groups Ferramentas - CDK for Kubernetes (cdk8s) - AWS Controllers for Kubernetes - Service Quotas Integration - Karpenter - App Mesh GA - Fargate Profiles in Cloudformation - Helm support in Amazon ECR - Amazon EKS Add-Ons Node Groups - Managed Node Groups custom launch templates - AWS Graviton 2 (ARM) - Outpost, Wavelength, and Local Zones - P4d support - Elastic Fabric Adapter - Prefix Assignment Observabilidade - FluentBit for EKS/Fargate - Amazon EKS Console and OTEL add-on Regiões e Versões - AWS GovCloud US (East), AWS GovCloud Us (West), Ningxia, Beijing, Cape Town, Milan, San Francisco, Osaka regions - Fargate region expansion – Frankfurt, Oregon, Singapore, Sydney, Cape Town and Milan - Support for Kubernetes versions 1.16, 1.17, 1.18, 1.19,1.20,1.21 Expansão do ambiente Amazon EKS - EKS Distro - EKS Anywhere (vmware, bare metal preview) 2018 2019
  57. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Onde eu consigo aprender mais? • Guia de boas práticas Open-Source aws.github.io/aws-eks-best-practices EKS Guia de boas práticas
  58. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Onde posso dar feedback e enviar feature requests? • Fique por dentro do que estamos trabalhando • Nos dê feedback e proponha ideias • Seja notificado quando novos recursos forem lançados tinyurl.com/3bp4tnzn Roadmap de Containers
  59. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Skill Builder Treine agora mesmo Acesse novos guias de exame © 2022, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados. Aprenda habilidades da nuvem AWS em alta Acesse mais de 500 cursos digitais e programas de aprendizagem gratuitos Explore os recursos com diversos níveis de habilidade e mais de 16 idiomas para atender as suas necessidades de aprendizagem Melhore suas competências com aprendizagem digital sob demanda Garanta uma credencial reconhecida pelo setor Escolha entre as certificações Foundational, Associate, Professional e Specialty. Junte-se à comunidade certificada da AWS e receba benefícios exclusivos AWS Certifications
  60. © 2022, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Additional resources Generate QR codes AWS speakers only Microsoft PowerPoint Help & Learning site The World of Presentations podcast BrightCarbon events AWS speakers, more resources are on the wiki
  61. Obrigado(a)! © 2022, Amazon Web Services, Inc. or its affiliates.

    All rights reserved. Lucas Duarte Sr. Containers Specialist Solutions Architect AWS Julio Turolla Lead Software Engineer CICD Nubank Rafael Leal Lead Software Engineer CICD Nubank
  62. Por favor, preencha a pesquisa da sessão © 2022, Amazon

    Web Services, Inc. or its affiliates. All rights reserved.