Exemplo de aplicação web utilizando Flask, PostgreSQL e Kubernetes. Este projeto foi configurado e implementado com AWS CloudFormation, EKS e ECR para demonstrar práticas modernas de DevOps e implantação em nuvem.
Criar arquivo .env
# Server
DB_HOST=Host do banco de dados PostgreSQL.
DB_USER=Nome do usuário do banco de dados PostgreSQL.
DB_PASSWORD=Senha do usuário do banco de dados PostgreSQL.
DB_NAME=Nome do banco de dados PostgreSQL.
DB_PORT=Porta de conexão com o banco de dados PostgreSQL.
# Postgre
POSTGRES_DB=Nome do banco de dados PostgreSQL.
POSTGRES_USER=Nome do usuário do banco de dados PostgreSQL.
POSTGRES_PASSWORD=Senha do usuário do banco de dados PostgreSQL.
#Grafana
GF_SECURITY_ADMIN_USER=Nome do usuário do Grafana. String ou Base64
GF_SECURITY_ADMIN_PASSWORD=Senha do usuário do Grafana. String ou Base64
aws configure
aws cloudformation create-stack --stack-name <stack-name> --template-body file://<path-to-your-yaml-file> --region <your-region>
aws cloudformation update-stack --stack-name <stack-name> --template-body file://<path-to-your-yaml-file> --region <your-region>
aws cloudformation delete-stack --stack-name <stack-name> --region <your-region>
Rodas o comando após criar o EKS Cluster.
aws eks update-kubeconfig --name <cluster-name> --region us-east-1
aws eks create-nodegroup \
--cluster-name <cluster-name> \
--nodegroup-name <nodegroup-name> \
--subnets <private:subnet-123> <private:subnet-321> \
# t3a.small | t3a.medium | t3.small | t3.medium
--instance-types t3a.medium \
--scaling-config minSize=2,maxSize=4,desiredSize=2 \
--capacity-type ON_DEMAND \
--ami-type AL2_x86_64 \
--node-role <arn:aws:iam::123:role/my-role> \
# N. Virginia
--region us-east-1
aws eks delete-nodegroup --cluster-name <cluster-name> --nodegroup-name <nodegroup-name>
aws eks delete-cluster --name <cluster-name>
aws ecr create-repository --repository-name <repository-name> --region <your-region>
aws ecr get-login-password --region <your-region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<your-region>.amazonaws.com
docker build -t <repository-name> .
docker tag <repository-name>:latest <aws_account_id>.dkr.ecr.<your-region>.amazonaws.com/<repository-name>:latest
docker push <aws_account_id>.dkr.ecr.<your-region>.amazonaws.com/<repository-name>:latest
aws ecr delete-repository --repository-name <repository-name> --region <your-region> --force
Caso retorne uma mensagem de falha como ... The security token included in the request is invalid.
, execute:
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
Depois, refaça o passo de configuração da AWS.
Os itens a seguir podem gerar cobranças caso permaneçam ativos: CloudFormation, EKS e ECR. Siga o passo a passo para removê-los.
- Delete o EKS Node Group.
- Delete o EKS Cluster.
- Delete o CloudFormation stack.
- Delete o ECR Registry. *Caso esteja usando o Repositório
ECR
da AWS
albuquerquefabio/kubedev-fake-shop
kubectl create secret generic aula-secrets --from-env-file=.env
kubectl create secret generic grafana-secrets --from-env-file=.env
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/deploy-prometheus.yaml
kubectl get all
kubectl get service
kubectl delete deployment fake-shop
kubectl delete deployment postgre
kubectl delete service fake-shop
kubectl delete service postgre
kubectl delete secret aula-secrets