Desafio
Objetivo
Implantar uma aplicação web em um cluster Kubernetes (KIND) usando o Docker e o Helm.
Passos
1. Subir um banco de dados PostgreSQL
- O banco deve possuir um volume para persistência dos dados.
2. Conectar uma aplicação ao banco de dados
- Apos subir o banco Postgres, tente conectar o projeto
djangoque está no diretóriodesafiodeste projeto.
3. Containerize a aplicação
- Containerize sua aplicação Django criando um
Dockerfile.
4. Crie um docker-compose
- Crie um
docker-composecom oserviceda aplicação e do banco de dados; - Certifique-se de adicionar a dependência do banco no service da aplicação;
- Confirme que sua aplicação consegue acessar o banco de dados;
- Remova as variáveis de ambiente sensíveis do código.
5. Crie um cluster Kubernetes
- Configure um cluster Kubernetes local usando
Kindcom no mínimo 3 nodes; - Certifique-se de que o cluster esteja pronto para receber implantações.
6. Realize a instalação do Kubernetes Dashboard no seu cluster
- Você também precisará criar uma
service-accounte umcluster-role-binding; - Crie um token de acesso para a dashboard.
7. Empacote sua aplicação utilizando Helm
- Crie um Chart Helm para o deploy da sua aplicação, e configure os valores padrão no arquivo
values.yaml; - Lembre de manter o
poddo banco de dados separado do pod da aplicação; - utilize o parâmetro
--setao instalar o chart helm para sobrescrever variáveis sensíveis do arquivovalues.yaml; - Persista suas variáveis através de
secretseconfigMaps; - Crie services para sua aplicação e banco;
- Crie um namespace para a sua aplicação
8. Teste sua aplicação usando Helm
- Faça uma pequena alteração na sua aplicação e faça update na implantação usando o Helm
- Faça alguns testes utilizando a estratégia de deployment
RecreateeRollingUpdate
9. Teste a escalabilidade
- Adicione escalabilidade horizontal criando novas replicas e um
(HPA)para sua implantação - Adicione escalabilidade vertical definindo valores de
requestelimitepara osresourcesda sua implantação
10. Execute um Registry localmente
- Crie um registry local utilizando Harbor ou
Distribution - Suba suas imagens para este registry e utilize-as no helm