"O verdadeiro sentido da vida não está na partida nem na chegada e sim na trajetória."
A hybrid Kubernetes stack with on-premises infrastructure.
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…
cert-manager + Let's Encrypt
Sealed Secrets (GitOps-friendly)
NFS Server + dynamic provisioning
Arquitetura de alto nível do HomeLab
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;