| .. | ||
| modules | ||
| all-services.tf | ||
| locals.tf | ||
| output.tf | ||
| providers.tf | ||
| readme.md | ||
| schame.yaml | ||
| variables.tf | ||
| variables_autonomous_json.tf | ||
| variables_bucket.tf | ||
| variables_oke_bus.tf | ||
| variables_oke_nexus.tf | ||
| variables_oke_observability.tf | ||
| variables_postgresql.tf | ||
| variables_redis.tf | ||
| variables_vault.tf | ||
| VENDOR.md | ||
Nexus Infrastructure Framework: Multi-Cluster OKE & Data Services
1. Overview e Propósito
Este framework de Infraestrutura como Código (IaC) foi desenvolvido para provisionar e gerir um ecossistema complexo na Oracle Cloud Infrastructure (OCI). O seu propósito central é a orquestração de múltiplos clusters de Kubernetes (OKE) — denominados Nexus, Bus e Observability — de forma modular e altamente automatizada.
O projeto elimina a configuração manual ao integrar nativamente serviços de base de dados (SQL, NoSQL e Cache) com uma camada de segurança centralizada em OCI Vault, garantindo que a infraestrutura seja entregue em estado "ready-to-use" para equipes de desenvolvimento.
2. Resumo de Funcionamento (Workflow)
O funcionamento da stack baseia-se num ciclo de vida de quatro fases de execução, garantindo que as dependências de rede e segurança sejam resolvidas antes do provisionamento das aplicações:
-
Fase de Descoberta e Rede: O script consome uma VCN existente e utiliza funções de manipulação de strings e regex para validar e provisionar subnets regionais segregadas (API, Nodes, Pods e Load Balancers) para cada cluster ativado.
-
Provisionamento de Hardware: O módulo
oke_clusterutiliza a arquitetura Enhanced Cluster. A lógica interna (locals.tf) identifica automaticamente a imagem de SO mais recente e compatível com o processador escolhido (AMD x86_64 ou ARM aarch64). -
Bootstrap de Identidade (Mecanismo de Escada): Para evitar erros de sincronização (Race Conditions), o script implementa um timer de estabilização. Após este período, o provedor Kubernetes configura o RBAC e gera os tokens de acesso.
-
Consolidação de Segredos: Todas as credenciais geradas (senhas de DB, tokens K8s, endpoints) são injetadas no OCI Vault (KMS), protegendo os dados sensíveis contra exposição em logs ou no estado do Terraform.
3. Processos, Funções e Módulos Detalhados
📦 Módulo: oke_cluster (Infraestrutura de Base)
- Função: Abstrair a complexidade da rede nativa e provisionamento de nós.
- Mecanismo: Implementa o CNI
OCI_VCN_IP_NATIVE. Isto permite que cada Pod receba um IP real da VCN, eliminando a sobrecarga de NAT e garantindo performance de rede idêntica a instâncias Bare Metal. - Gestão de Imagens: Utiliza filtros dinâmicos que cruzam a versão do Kubernetes desejada com a disponibilidade de imagens na região, garantindo sempre o uso de patches de segurança atualizados.
🛡️ Módulo: oke_bootstrap (Configuração de Identidade)
- Função: Configurar o acesso administrativo interno e integração de CI/CD.
- Mecanismo de Escada: Utiliza o recurso
time_sleeppara aguardar 120 segundos após a criação do cluster. Só então procede à criação daServiceAccount(cicd-admin-sa) e doClusterRoleBinding. - Saída Segura: Extrai o token de autenticação do Kubernetes e armazena-o no Vault, permitindo que ferramentas externas consumam o cluster sem necessidade de intervenção manual.
🗄️ Camada de Serviços de Dados (postgresql, redis, autonomous)
- Função: Provisionar persistência com isolamento de rede.
- Roteamento: Configura Service Gateways e NAT Gateways dedicados. Os bancos de dados residem em subnets privadas, comunicando-se com o Object Storage da Oracle para backups através da rede interna da Oracle, sem exposição à internet.
4. UI do Resource Manager (ORM): Flexibilidade e Controle
A interface visual definida no schema.yaml atua como um motor de validação e governação para o utilizador final.
Funcionalidades da Interface:
- Visibilidade Dinâmica: Através de regras
visible: eq:, a interface oculta automaticamente grupos de variáveis de clusters que não foram marcados como ativos, reduzindo a complexidade do formulário. - Validação de CIDR e OCID: Implementação de
pattern(Regex) em campos críticos. Isto garante que o utilizador não submeta a stack com erros de sintaxe em endereços de rede ou IDs de compartimento, prevenindo falhas tardias no deploy. - Controlo Flexível de Shapes (AMD vs Intel):
- O formulário deteta a arquitetura do shape escolhido.
- Limites Adaptativos: Se o utilizador selecionar um shape Intel (Standard3), a UI ajusta o mínimo de oCPUs para 2. Se selecionar AMD (E5/E6), permite o mínimo de 1 oCPU, respeitando as restrições físicas do hardware Oracle.
- Segurança de Confirmação: Atributos de
confirmation: trueem campos de rede e passwords obrigam à dupla digitação, mitigando erros humanos em infraestruturas críticas.
5. Resumo Técnico de Serviços e Ficheiros
| Serviço | Ficheiro | Função Técnica Principal |
|---|---|---|
| KMS / Vault | vault.tf |
Gestão de chaves AES-256 e encriptação de segredos. |
| PostgreSQL | postgresql.tf |
DB Gerenciado com rotação de passwords via random_password. |
| Redis | redis.tf |
Cache distribuído em cluster com persistência privada. |
| Object Storage | bucket.tf |
Buckets com versionamento para armazenamento de logs e artefatos. |
| OKE | oke_cluster.tf |
Orquestração de containers com suporte a IP Native e Auto-scaling. |
🛠️ Como Utilizar
- Comprima todos os ficheiros
.tfe o.yamlnum arquivo.zip. - No console OCI, aceda a Developer Services > Resource Manager > Stacks.
- Faça o upload do arquivo zip.
- Configure os parâmetros através da UI customizada e execute Plan & Apply.
- Documentação gerada para a Nexus Infrastructure Stack - Março 2026*