Automatizar o ciclo completo de desenvolvimento, build, deploy e execução de uma aplicação FastAPI simples, usando GitHub Actions para CI/CD, Docker Hub como registry, e ArgoCD para entrega contínua em Kubernetes local com Rancher Desktop.
- Conta no GitHub com repositórios públicos
- Conta no Docker Hub com token de acesso
- Rancher Desktop com Kubernetes habilitado
- kubectl configurado corretamente
- ArgoCD instalado no cluster local
- Python 3, Docker e Git instalados
├── python-hello-app
│ ├── .github
│ │ ├── workflows
│ │ │ ├── deploy.yaml
│ ├── argocd
│ │ ├── hello-app-application.yaml
│ ├── src
│ │ ├── main.py
│ │ ├── requirements.txt
│ │ ├── Dockerfile
│ ├── README.md
deploy.yaml: builda a imagem docker, faz push para o registry (Docker Hub), altera o manifesto de deployment e abre um pull request
hello-app-application.yaml: automatiza a criação da application no Argo CD
├── python-hello-manifests
│ ├── k8s
│ │ ├── deployment.yaml
│ │ ├── service.yaml
-
Criar um namespace
kubectl create namespace argocd
-
Instalar Argo CD no namespace
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
-
Instalar o Argo CD CLI
3.1 Instalar em ambiente Windows
choco install argocd-cli
3.2 Instalar em ambiente Linux
curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd rm argocd-linux-amd64
-
Pegar senha inicial do Argo CD
1.1 Pegar senha em ambiente Windows
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($(kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}")))1.2 Pegar senha em ambiente Linux
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d
-
Port-forward para acessar ArgoCD
kubectl port-forward svc/argocd-server -n argocd 3080:443
-
Logar no Argo CD via linha de comando
argocd login localhost:3080
Usuário:
admin| Senha:sua_senha_inicial -
Acessar no seu browser:
localhost:3080
-
Criar a application
kubectl apply -f argocd/hello-app-application.yaml
-
Port-forward para acessar a aplicação
kubectl port-forward service/hello-app-service 8080:8080 -n hello-python
-
Conferir pods da aplicação
kubectl get pods -n hello-python
-
Conferir se a aplicação retorna {"message":"Hello World"}
curl.exe localhost:8080
-
Acessar no seu browser:
localhost:8080