Skip to content

moa-devops/bancoscope

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

🏦 BancoScope — Portal Comparativo de Bancos Brasileiros

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.


📌 Sobre o Sistema

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

🏗️ Infraestrutura como Código (IaC)

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

🔄 Pipeline CI/CD

A pipeline é dividida em dois estágios executados sequencialmente a cada push na branch main:

[push main] → [build-and-push] → [deploy]

Estágio 1 — Build & Push (Kaniko)

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: latest e $CI_COMMIT_SHORT_SHA

Estágio 2 — Deploy (Helm)

Após o build, realiza o deploy no Kubernetes via Helm:

  • Decodifica o kubeconfig armazenado como variável CI/CD
  • Executa helm upgrade --install com os valores de prod.yml
  • Aguarda os pods ficarem prontos (--wait --timeout 5m)

Estrutura dos arquivos de pipeline

.gitlab-ci.yml           # Definição dos stages e inclusão do production
.gitlab-production.yml   # Jobs de build (Kaniko) e deploy (Helm)

🌐 Variáveis CI/CD necessárias

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_USER e CI_REGISTRY_PASSWORD podem ser preenchidos automaticamente pelo GitLab se o Container Registry do projeto estiver habilitado.


🛠️ Como rodar localmente

# Build da imagem
docker build -t bancoscope .

# Rodar o container
docker run -p 8080:8080 bancoscope

# Acesse: http://localhost:8080

☸️ Deploy manual no Kubernetes

helm upgrade --install bancoscope ./deploy/chart/ \
  --namespace bancoscope \
  --values ./deploy/values/prod.yml \
  --create-namespace

📐 Arquitetura do Ambiente Local

Windows
└── 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)

About

Portal de comparação de bancos brasileiros — CI/CD completo com GitLab, Kaniko e Kubernetes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors