Portal informativo com comparação de CDB, benefícios e vantagens dos principais bancos do Brasil.
Este projeto foi desenvolvido com foco em boas práticas de IaC, containerização e pipeline CI/CD.
O BancoScope é um portal estático que centraliza informações dos principais bancos brasileiros, permitindo comparar:
- Rentabilidade de CDB (% CDI)
- Benefícios e diferenciais de cada banco
- Ranking por categoria (melhor app, cashback, crédito imobiliário, etc)
Stack da aplicação:
- Frontend: HTML + CSS + JavaScript puro (sem dependências)
- Servidor web: Nginx Alpine
- Container: Docker
O projeto utiliza Helm Chart para gerenciar todos os recursos Kubernetes de forma declarativa e versionada
deploy/
├── chart/ # Helm Chart da aplicação
│ ├── Chart.yaml # Metadados do chart
│ ├── values.yaml # Valores padrão
│ └── templates/
│ ├── _helpers.tpl # Funções auxiliares do Helm
│ ├── Deployment.yaml # Deployment do pod
│ ├── service.yaml # Exposição interna do serviço
│ ├── ingress.yaml # Roteamento externo via Nginx Ingress
│ └── pvc.yaml # Persistência (desabilitado, pronto para uso futuro)
└── values/
└── prod.yml # Valores específicos do ambiente de produção
Os recursos criados no Kubernetes são:
- Deployment — gerencia os pods da aplicação com rolling update automático
- Service — expõe a aplicação internamente no cluster (ClusterIP)
- Ingress — roteamento externo via Nginx Ingress Controller
A pipeline é dividida em dois estágios executados sequencialmente a cada push na branch main:
[push main] → [build-and-push] → [deploy]
Utiliza Kaniko para construir a imagem Docker dentro do Kubernetes, sem necessidade de Docker daemon (mais seguro para ambientes containerizados).
- Constrói a imagem a partir do
Dockerfile - Publica no registry interno do GitLab com duas tags:
lateste$CI_COMMIT_SHORT_SHA
Após o build, realiza o deploy no Kubernetes via Helm:
- Decodifica o kubeconfig armazenado como variável CI/CD
- Executa
helm upgrade --installcom os valores deprod.yml - Aguarda os pods ficarem prontos (
--wait --timeout 5m)
.gitlab-ci.yml # Definição dos stages e inclusão do production
.gitlab-production.yml # Jobs de build (Kaniko) e deploy (Helm)
Configure em Settings → CI/CD → Variables:
| Variável | Descrição | Masked |
|---|---|---|
CI_KUBE_CONFIG |
kubeconfig do cluster em base64 | ✅ |
CI_REGISTRY_USER |
Usuário do registry GitLab | ❌ |
CI_REGISTRY_PASSWORD |
Senha do registry GitLab | ✅ |
CI_REGISTRY |
URL do registry (ex: registry.gitlab.local) | ❌ |
CI_REGISTRY,CI_REGISTRY_USEReCI_REGISTRY_PASSWORDpodem ser preenchidos automaticamente pelo GitLab se o Container Registry do projeto estiver habilitado.
# Build da imagem
docker build -t bancoscope .
# Rodar o container
docker run -p 8080:8080 bancoscope
# Acesse: http://localhost:8080helm upgrade --install bancoscope ./deploy/chart/ \
--namespace bancoscope \
--values ./deploy/values/prod.yml \
--create-namespaceWindows
└── Multipass VM (Ubuntu 22.04 — 8GB RAM / 4 CPUs)
└── Microk8s
├── Namespace: gitlab
│ ├── GitLab (Helm)
│ ├── GitLab Registry
│ └── GitLab Runner (Kubernetes executor)
└── Namespace: bancoscope
├── Deployment (bancoscope)
├── Service (ClusterIP)
└── Ingress (bancoscope.local)