Skip to content

Automatizar o ciclo de desenvolvimento, build, deploy e execução de uma aplicação FastAPI simples, usando GitHub Actions, Docker e ArgoCD para entrega contínua em Kubernetes

Notifications You must be signed in to change notification settings

debora-oliv/CICD-python-hello-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Objetivo

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.

Aplicação no Argo CD

Pré-requisitos

  • 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

Deployment

Criar os repositórios

├── 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

Configurar o Argo CD

  1. Criar um namespace

    kubectl create namespace argocd
  2. Instalar Argo CD no namespace

    kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
  3. 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

Logar no Argo CD

  1. 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
  2. Port-forward para acessar ArgoCD

    kubectl port-forward svc/argocd-server -n argocd 3080:443
  3. Logar no Argo CD via linha de comando

    argocd login localhost:3080

    Usuário: admin | Senha: sua_senha_inicial

  4. Acessar no seu browser: localhost:3080

Subir a aplicação no ArgoCD

  1. Criar a application

    kubectl apply -f argocd/hello-app-application.yaml
  2. Port-forward para acessar a aplicação

    kubectl port-forward service/hello-app-service 8080:8080 -n hello-python
  3. Conferir pods da aplicação

    kubectl get pods -n hello-python

    Pods

  4. Conferir se a aplicação retorna {"message":"Hello World"}

    curl.exe localhost:8080

    Curl

  5. Acessar no seu browser: localhost:8080

About

Automatizar o ciclo de desenvolvimento, build, deploy e execução de uma aplicação FastAPI simples, usando GitHub Actions, Docker e ArgoCD para entrega contínua em Kubernetes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published