Skip to content

Instantly share code, notes, and snippets.

@edsoncelio
Last active June 30, 2023 03:17
Show Gist options
  • Save edsoncelio/843ace56f0cca3ae0d5e648f6294f920 to your computer and use it in GitHub Desktop.
Save edsoncelio/843ace56f0cca3ae0d5e648f6294f920 to your computer and use it in GitHub Desktop.
Cenários para labs de DevOps

Cenários para labs de DevOps (foco em Kubernetes e AWS)

Kubernetes

Uso declarativo (com .yamls) Manter tudo em um repositório no GitHub

Setup de cluster

Pode ser com kind/minukube

  1. Configurar metric-server e testar (kubectl top nodes;): https://github.com/kubernetes-sigs/metrics-server
  2. Adicionar label nos nós (environemnt=develop)
  3. Instalar o kyverno pra policy as a code: https://kyverno.io/docs/installation/methods/
  4. Criar uma política do Kyverno para negar imagens com a tag latest: https://kyverno.io/policies/best-practices/disallow-latest-tag/disallow-latest-tag/

Setup de API

Exemplo de API que pode usar: https://github.com/rameshsunkara/go-rest-api-example

  1. Fazer build da API e fazer push pra registry (ECR) - com CI/CD
  2. Criar Namespace com Quotas
  3. Criar um Deployment e um Service (com NodePort e se possível, com Ingress e/ou LoadBalancer) pra fazer o deploy da imagem no cluster
  4. Adicionar Requests e Limits pra aplicação
  5. Adicionar Liveness e Readiness probes
  6. Adicionar NodeSelector para a aplicação executar apenas nos nós onde environment=develop
  7. Adicionar uma persistência pra aplicação (PersistentVolume/PersistentVolume/Claim)
  8. Adicionar variáveis de ambiente via ConfigMap e expõe pra dentro da aplicação

Setup de observabilidade

  1. Instalar o Grafana: https://github.com/grafana/helm-charts/tree/main/charts/grafana.
  2. Via Helm, instalar o chart do Loki: https://github.com/grafana/helm-charts/tree/main/charts/loki-stack e adicionar como datasource do Grafana pra visualizar os logs em uma dashboard.
  3. Por padrão o Loki usa o promtail (como DaemonSet) pra coleta de logs, trocar para fluentbit e ver se tá tudo certo.
  4. Instalar o Prometheus e adicionar como Datasource do Grafana
  5. Criar dashboards para métricas coletas pelo Prometheus.
  6. Criar alertas para a aplicação (pode se basear nos Golden Signals), uma referência: https://sre.google/sre-book/monitoring-distributed-systems/.
  7. Configurar o AlertManager pra enviar notificações dos alertas criados por email.

Setup de CD

  1. Instalar o Argo CD via kubectl (ou Helm se preferir): https://argo-cd.readthedocs.io/en/stable/getting_started/
  2. Configurar o Argo: diminuir o tempo de sync, conectar um repositório do GitHub
  3. Criar um Project de develop e uma Application pra API REST criada
  4. Configurar o Argo Rollouts pra definir um modelo de deployment: https://argo-rollouts.readthedocs.io/en/stable/.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment