Infraestrutura
OKE, rede e CIDRs, pools de compute (ARM + x86 Karpenter), CNI NPN + Cilium, IAM e storage.
A fundação é provisionada por um Terraform one-shot (oracle-terraform-modules/oke/oci) que cria VCN, OKE ENHANCED_CLUSTER e IAM. Toda a camada de plataforma e tenant é depois gerida por GitOps.
Kubernetes (OKE)
- OKE ENHANCED_CLUSTER (PAYG) em
sa-saopaulo-1, Kubernetes 1.35.2 — control plane gerenciado e sem custo. - Conta convertida para PAYG (Always Free faz downgrade silencioso para BASIC).
Compute — três perfis
| Pool | Shape | Uso |
|---|---|---|
| Plataforma | Ampere A1.Flex ARM (2 nodes × 2 OCPU × 12 GB), estático | ArgoCD, Cilium, Crossplane, Vault, Traefik |
| Prophub | E4.Flex / E5.Flex x86, preemptível (Karpenter) | Workloads de tenant: fsvc, bsvc, resvc/re2svc |
data | A1.Flex on-demand + E4.Flex preemptível (Karpenter) | PostgreSQL primaries (on-demand) + Redis replicas (preemptível) |
Karpenter provisiona/remove nodes x86 sob demanda. Primaries de banco ficam em on-demand; preempção atinge apenas replicas.
Rede (CIDRs)
| Subnet | CIDR | Uso |
|---|---|---|
| VCN | 172.22.0.0/16 | VCN principal |
cp | 172.22.0.0/24 | Endpoint da API Kubernetes (público, restrito por CIDR) |
workers | 172.22.4.0/22 | Worker nodes (privado, NAT egress, 1022 IPs) |
pub_lb | 172.22.2.0/24 | OCI Load Balancers públicos |
pods | 172.22.16.0/20 | IPs reais de pods — NPN (4096 endereços) |
| Services | 10.208.0.0/16 | ClusterIP range (fora do VCN) |
CNI — NPN + Cilium
- NPN (OCI VCN-Native Pod Networking): pods recebem IPs reais do VCN (
172.22.16.0/20) — sem overlay Flannel. - Cilium em chaining mode (
chainingTarget: oci), eBPF, substitui o kube-proxy (kubeProxyReplacement). Instalado pelo ArgoCD, não pelo Terraform. - Limite NPN: 31 pods por node (controlado por VNIC secondary IPs).
IAM (OCI)
- Dynamic Group para os worker nodes.
- 5 policies separadas: Crossplane, tfstate, operador admin, NPN networking, Karpenter.
- IAM vive em
bootstrap/iam.tf, fora do módulo OKE (create_iam_resources = false). - Crossplane e Karpenter usam Workload Identity (
OCI_RESOURCE_PRINCIPAL_VERSION=2.2) — sem API keys no cluster.
Storage
- StorageClass
oci-bv-datacomreclaimPolicy: Retain— deleção acidental não destrói o Block Volume. - PVC PostgreSQL: 20Gi · PVC Redis resvc: 2Gi · Redis bsvc: sem PVC (in-memory).
- OCI Block Volume mínimo é 50Gi — PVCs menores ainda provisionam 50Gi (impacto de custo).
O Terraform é modularizado visando portabilidade cloud-agnostic.