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

Git all the things!

Marcelo Andrade
September 01, 2020
42

Git all the things!

Ops via pull request com Flux em clusters Kubernetes.

Marcelo Andrade

September 01, 2020
Tweet

Transcript

  1. GIT ALL THE THINGS! Ops via pull request com Flux

    em clusters Kubernetes https://xkcd.com/1296/ [email protected] Marcelo Andrade www.meetup.com/pt-BR/Cloud-Native-Recife
  2. Kubernetes desde 2016; v1.4 OnPrem (cloud? pfff) "The hardest way"

    DevOps meter: 0------*-10 POR QUE ME OUVIR?
  3. KUBERNETES "Framework de infraestrutura" Compartimentalização lógica de várias aplicações (namespaces)

    Múltiplas réplicas e balanceamento; Auto scaling (up and down) com métricas pré determinadas; Instâncias não operacionais finalizadas automaticamente; ORQUESTRAÇÃO ESCALÁVEL DE CONTAINERS yaml, json deployments, configmaps, secrets DEPLOY PARAMETRIZADO DE APLICAÇÕES B E G I N N E R B E G I N N E R B E G I N N E R M E D I U M M E D I U M M E D I U M H A R D C O R E H A R D C O R E H A R D C O R E
  4. FIRST WORLD PROBLEMS Versões dos softwares; Mudança de parâmetros de

    configuração (env, volumes, secrets, configmaps) VERSIONAMENTO DOS MANIFESTS (YAMLS) Dezenas de aplicações; Qual o estado do cluster em um dado momento? Como manter um site reserva caso o primeiro falhe? DEPLOY E ROLLBACK
  5. FLUXCD Retomar o controle da infra; Domar explosão combinatória de

    configurações; Atender a necessidade moderna de entrega contínua; GIT + FLUX
  6. #GITOPS: OPS VIA PULL REQUEST Manifests (yamls) simples; Helm charts

    (Helm Operator); Programas que gerem Manifests (Kustomize, sops, ou o seu!) DEPLOY AUTOMÁTICO: GIT -> CLUSTER APÓS MUDANÇAS Monitora Container Registry por novas versões de containers usados; Atualiza o cluster; depois faz commit no Git; Desligável completamente ou "travado" no deployment; DEPLOY AUTOMÁTICO DE NOVAS IMAGENS Exclui objetos cujos manifests foram removidos do Git; Detecta divergências no estado dos objetos e reaplica o estado desejável; Desligável completamente (default) ou "travado" nos manifests; "GARBAGE COLLECTION" E "DRIFT DETECTION": B E G I N N E R B E G I N N E R B E G I N N E R M E D I U M M E D I U M M E D I U M H A R D C O R E H A R D C O R E H A R D C O R E
  7. FLUXCD DOWNSIDES Limitação técnica, pode mudar no futuro; Workaround: múltiplas

    instâncias; cada um com seu repositório/RBAC; FluxV2 vem aí! MONOREPO / MULTITENANCY Pouco espaço para melhora sem um "overhaul" "E essas secrets aqui no Git?" Workaround: suporte a SOPS nativo, Sealed Secrets SIMPLICIDADE Poucas métricas Debug de falhas de sync exige acompanhamento dos logs; FluxV2 vem aí! OBSERVABILIDADE
  8. CI/CD > FLUX Pipeline multistage faz commit, build e deploy

    automaticamente; "MEU CD JÁ FAZ ISSO." ArgoCD, JenkinsX > Flux "SIMPLES DEMAIS" B E G I N N E R B E G I N N E R B E G I N N E R M E D I U M M E D I U M M E D I U M H A R D C O R E H A R D C O R E H A R D C O R E
  9. O QUE É #GITOPS? Git como "Single Source of Truth"

    "Everything as a Code" "CD Revisited" 1. 2. 3.
  10. Desacopla CI da CD - abstração do destino final; CI:

    atualiza a aplicação; código; "push"; CD: atualiza a operação; infra; "pull" Auditabilidade e compliance; “When’s the last time someone made an unauthorized change to your system files?” "MEU CD JÁ FAZ ISSO": CIOPS X GITOPS GITOPS
  11. “Limit the scope of access to a Kubernetes cluster to

    automation tools and cluster administrators who may have to debug it or keep it running.” (Kelsey Hightower) "MEU CD JÁ FAZ ISSO": CIOPS X GITOPS "CIOPS": ANTIPATTERN https://www.weave.works/blog/kubernetes-anti-patterns-let-s-do-gitops-not-ciops
  12. "SIMPLES DEMAIS": O MEU É MELHOR Funcionalidades mais complexas; "Alicerce"

    comum (https://github.com/argoproj/gitops-engine) https://argoproj.github.io/argo-cd/ ARGOCD GitOps via 2 pipelines separados JENKINS CI/CD com a mesma ferramenta; JENKINSX Muitas outras alternativas ...