HomeLab – Development & Staging

"O verdadeiro sentido da vida não está na partida nem na chegada e sim na trajetória."

Cloud environment for Development and Staging.

A hybrid Kubernetes stack with on-premises infrastructure.

Kubernetes OCI NGINX Ingress MetalLB Calico NFS Sealed Secrets cert-manager Let's Encrypt
kubectl get pods -A
  NAMESPACE    NAME                        READY STATUS  RESTARTS AGE
  default      webapp-5ddf8d7c6b-2j7lm     3/3   Running 0        5m
  kube-system  coredns-6d4b75cb6d-v6mrl    1/1   Running 0        15m
  nfs-system   nfs-provisioner-0           1/1   Running 0        8m
  cert-manager cert-manager-5b6f7ccbf6-mzd 1/1   Running 0        6m

  > ready to deploy…

Hostname

Certificados

cert-manager + Let's Encrypt

Segredos

Sealed Secrets (GitOps-friendly)

Persistência

NFS Server + dynamic provisioning

Ver Diagrama

Arquitetura de alto nível do HomeLab

Arquitetura (alto nível)

Diagrama renderizado no browser com Mermaid.

          flowchart TB
            %% ===== Entrada =====
            U["Usuários / Navegadores"] -->|HTTP/HTTPS| LB["MetalLB\nLoadBalancer IP"]

            %% ===== Ingress =====
            subgraph ingress["NGINX Ingress Controller"]
              IC1["Controller (HA)"]:::comp
            end
            LB --> IC1

            %% ===== TLS / Segredos =====
            subgraph tls["TLS & Segredos"]
              CM["cert-manager"]:::comp --> LE["Let's Encrypt (ACME)"]:::ext
              SS["Sealed Secrets Controller"]:::comp
            end
            IC1 -. "solicita/renova" .-> CM
            SS -. "desencripta → Secret" .-> NS["Namespaces/Apps"]

            %% ===== Plano de Controle (HA) =====
            subgraph cp["Plano de Controle (4 nós)"]
              direction LR
              CP1["control-plane-1"]:::node
              CP2["control-plane-2"]:::node
              CP3["control-plane-3"]:::node
              CP4["control-plane-4"]:::node
            end

            %% ===== Plano de Dados (10 workers) =====
            subgraph wk["Plano de Dados (10 workers)"]
              direction LR
              W1["worker-1"]:::node
              W2["worker-2"]:::node
              W3["worker-3"]:::node
              W4["worker-4"]:::node
              W5["worker-5"]:::node
              W6["worker-6"]:::node
              W7["worker-7"]:::node
              W8["worker-8"]:::node
              W9["worker-9"]:::node
              W10["worker-10"]:::node
            end

            %% ===== Rede / DNS =====
            subgraph net["Rede e DNS"]
              CAL["Calico (CNI)"]:::comp
              DNS["CoreDNS"]:::comp
            end

            %% ===== Storage (NFS) =====
            subgraph stg["Armazenamento"]
              SC["StorageClass: nfs-storage"]:::comp --> NFS["NFS Subdir External Provisioner"]:::dep
            end

            %% ===== Aplicações =====
            subgraph apps["Aplicações / Services"]
              APP1["homelab (NGINX estático)"]:::app
              SVC1["Service ClusterIP :80"]:::svc
            end

            %% ===== Ligações =====
            IC1 -->|"/"| SVC1 --> APP1
            apps --- stg
            wk --- apps
            wk --- net
            cp --- net
            IC1 --- net

            %% ===== Estilos =====
            classDef node fill:#1f2937,stroke:#64748b,color:#e5e7eb,rx:6,ry:6;
            classDef comp fill:#0f172a,stroke:#475569,color:#e5e7eb,rx:6,ry:6;
            classDef dep fill:#111827,stroke:#6b7280,color:#e5e7eb,rx:6,ry:6,stroke-dasharray:4 2;
            classDef svc fill:#111827,stroke:#22d3ee,color:#e5e7eb,rx:6,ry:6;
            classDef app fill:#111827,stroke:#34d399,color:#e5e7eb,rx:6,ry:6;
            classDef ext fill:#111827,stroke:#a78bfa,color:#e5e7eb,rx:6,ry:6;
        

Tecnologias Envolvidas

Kubernetes
NGINX
MetalLB
Calico
NFS
Sealed Secrets
cert-manager
MinIO
Docker
OCI
SonarQube
ArgoCD

Atividade de Desenvolvimento

Contribuições GitHub

@erivandosena
GitHub Contributions
Carregando...
Repositórios
Stars
Linguagens

Linguagens Principais

Analisando...