Projeto DevOps: Flask API - Do código ao deploy!
What you'll learn
- Desenvolver uma API básica (CRUD) utilizando o framework Flask
- Integrar a API com banco de dados NoSQL (MongoDB)
- Escrever Dockerfile para containerizar a aplicação
- Construir um Docker Compose para subir toda a stack localmente
- Automatizar passos de testes e deploy com Makefile
- Entender o conceito de Application Factory no Flask
- Escrever testes unitários com pytest
- Deploy da aplicação em PaaS (Heroku) juntamente com MongoDB Atlas
- Utilização de branches para merge de código no GitHub
- Entender e escrever healthchecks para integrar com Probes do Kubernetes
- Garantir a qualidade e segurança de código por meio de ferramentas auxiliares como Black, Flake8 e Bandit
- Criar um cluster Kubernetes localmente com Kind
- Fazer deploy de Helm Charts
- Fazer deploy de toda a stack da aplicação no Kubernetes
- Expor a aplicação para o mundo usando Ingress no Kubernetes
- Criar um cluster Kubernetes na AWS com Amazon EKS com Terraform
- Criar um repositório no ECR para armazenar suas imagens Docker
- Gerenciar Secrets no Kubernetes de forma segura com Sealed Secrets
- Estender o módulo do Terraform para incluir add-ons e Bastion Host na AWS
- Utilizar o Vagrant para testar código Ansible
- Reusar Ansible Roles para configurar o MongoDB
- Configurar e expôr a aplicação no Amazon EKS usando AWS Load Balancer Controller
- Integrar o Amazon EKS e Route 53 com External DNS
- Adicionar certificado TLS do ACM no Ingress do AWS Load Balancer Controller
- Criar uma esteira de CI/CD no GitHub Actions
- Integrar IDP do GitHub com AWS para autenticação via roles e credenciais temporárias
- Ajustar RBAC do Kubernetes com aws-auth para permitir novos usários a interagir com o cluster
Requirements
- Todos os conhecimentos utilizados são explicados de forma didática, mas ajudaria se você já tivesse conhecimentos básicos em Linux, Docker, Kubernetes e Terraform
Description
Você se sente perdido nessa "sopa de letrinhas" de tecnologias no mundo de DevOps?
Não sabe como todas essas pontas se conectam, e qual valor agregam para o nosso dia a dia?
Se sua resposta foi sim, chances são de que este curso vai te ajudar... e muito!
Estruturei este treinamento de forma 100% prática, divididas em dois projetos, que efetivamente entregam algo real. Dessa forma, você vai aprendendo as tecnologias e já compreendendo onde cada uma se encaixa, facilitando para "gravar" o conhecimento na sua cabeça.
Deixa eu explicar um pouco sobre os módulos do treinamento:
Módulo 1 - (Projeto 1 - PaaS) - Setup do ambiente: Configuração inicial no repositório e criando a nossa primeira API com Flask.
Módulo 2 - (Projeto 1 - PaaS) - Docker: Configuração da nossa aplicação para rodar em containers. Vamos escrever o Dockerfile e docker-compose para subir toda a stack de desenvolvimento localmente.
Módulo 3 - (Projeto 1 - PaaS) - Flask / Codando: Aqui é onde a gente escreve código. É uma API básica para praticar um pouco de programação. Não é relevante para desenvolvedores, mas para profissionais de infraestrutura que não escrevem muito código, vai ser bem desafiador.
Módulo 4 - (Projeto 1 - PaaS) - Flask / Testes unitários: Muito se fala de testes unitários, mas geralmente não está claro para profissionais de infraestrutura. Aqui nós mesmos vamos escrever os testes da nossa aplicação. Com isso fica mais fácil jogar para o CI.
Módulo 5 - (Projeto 1 - PaaS) - Heroku, MongoDB Atlas & GitHub Actions: Finalização do primeiro projeto. Vamos fazer o deploy via Heroku (Paas), usando o banco do MongoDB Atlas (cloud do Mongo) e uma pipeline de CI/CD no GitHub Actions.
Módulo 6 - (Projeto 2 - k8s) - Flask / Codando: Vamos estender nossa API com operações de DELETE e PATCH.
Módulo 7 - (Projeto 2 - k8s) - Health Checks / Probes: Adicionamos healthchecks na nossa aplicação que será necessário para rodar em Kubernetes. Isso fará a integração com o conceito de Probes no Kubernetes.
Módulo 8 - (Projeto 2 - k8s) - Scans de Qualidade: Utilização de ferramentas terceiras para melhorar a qualidade do nosso projeto, tanto esteticamente quanto em segurança.
Módulo 9 - (Projeto 2 - k8s) - Kubernetes (desenvolvimento): Faremos a adaptação da aplicação para rodar em um cluster Kubernetes localmente. Isso envolve cluster KinD, Helm Charts, manifestos, probes, ingress, service e muito mais.
Módulo 10 - (Projeto 2 - k8s) - Helm (produção): Aqui levamos o projeto um pouco mais a sério. Vamos subir um cluster Kubernetes na AWS e deployar a aplicação com Helm, além de gerenciar Secrets de forma encriptada com Sealed Secrets.
Módulo 11 - (Projeto 2 - k8s) - Terraform: Vamos estender o nosso Terraform, adicionando outros recursos como bastion host, instância do MongoDB e add-ons do Helm.
Módulo 12 - (Projeto 2 - k8s) - Ansible: Para configurar o banco de dados, vamos usar o Ansible. Aqui aprendemos a reusar uma role existente, e ter toda a configuração do banco como código.
Módulo 13 - (Projeto 2 - k8s) - DNS (Route 53 & External DNS): Para deixar o projeto 100%, vamos usar uma URL de DNS pública. Usaremos um add-on para fazer a ponte entre o cluster e o Route 53, além de adicionar um certificado TLS.
Módulo 14 - (Projeto 2 - k8s) - GitHub Actions (CI/CD): Finalização do projeto com deploy no Kubernetes com GitHub Actions. Usaremos boas práticas de segurança com credenciais temporárias via OIDC, edição no RBAC do Kubernetes e Helm.
Sim, é um bombardeio de conhecimento. E não, não foi feito para ser fácil.
Eu quero que você realmente passe trabalho, pois é na dificuldade que a gente constrói o conhecimento de verdade.
Então, se você acredita que esse conhecimento pode te ajudar, ficarei muito feliz em ser seu instrutor aqui na Udemy! Conte comigo ao longo do curso em caso de dúvidas.
Te espero do outro lado.
Who this course is for:
- DevOps Engineers ou SREs
- Estudantes ou profissionais Juniors buscando aumentar sua gama de conhecimentos
Instructor
Entusiasta Linux e autodidata, com o objetivo de transformar assuntos complexos em explicações simples.
Já passei pelo maior Cloud Provider do mundo quando trabalhei e morei na Irlanda. Hoje, atuo como Lead DevOps Engineer de forma totalmente remota para o exterior.
CERTIFICAÇÕES LINUX:
Linux Professional Institute Certified, Level 3 - Linux Enterprise Professional
Linux Professional Institute Certified, Level 2 - Linux Engineer
Linux Professional Institute Certified, Level 1 - Linux Administrator
Linux Foundation Certified Engineer
Linux Foundation Certified Systems Administrator
CompTIA Linux+
Suse Certified Linux Administrator
OUTRAS CERTIFICAÇÕES:
Certified Kubernetes Administrator
OpenStack Foundation Certified OpenStack Administrator
Hashicorp Terraform Associate
AWS Solutions Architect Associate
AWS Developer Associate
CompTIA A+
ITIL Foundation
MCP Windows 8.1
GRADUAÇÃO:
Tecnólogo em Análise e Desenvolvimento de Sistemas