# OCI - Análise de Rede e Compartments (DEV Nexus)

> **Data:** 2026-02-25 | **Responsável:** Tiago Ribeiro
> **Contexto:** Análise realizada para suporte à geração de scripts Terraform via Resource Discovery (demanda: Ana Guadagnin)

---

## 1. Mapa de Compartments

### Estrutura Confirmada

```
invistacloud (root)
├── cmp-top-invista
│   └── cmp-dev-inv
│       └── cmp-dev-nexus  ✅ ATIVO — recursos do ambiente DEV
│
└── OKE
    └── DEV                ← VCNs de rede ficam neste compartment
        └── cmp-dev-nexus  🗑️ DELETADO em 2026-02-25 (estava vazio)
```

### Recursos em `cmp-dev-nexus` (cmp-top-invista > cmp-dev-inv)

> **Verificado via OCI CLI 2026-03-01**

| Recurso | Nome | Estado |
|---|---|---|
| OKE Cluster | `cls-dev-nexus` | ACTIVE — v1.34.1 |
| OKE Cluster | `cls-dev-barramento` | ACTIVE — v1.34.1 |
| OKE Cluster | `cls-dev-observabilidade` | ACTIVE — v1.34.1 |
| Compute (workers) | `oke-*` (9x VM.Standard.E4.Flex) | RUNNING |
| Load Balancers | 5x (OKE-managed) | ACTIVE |
| API Gateway | `api-gateway-nexus-dev` (10.6.0.123, PRIVATE) | ACTIVE — **0 deployments** |

> ⚠️ `api-gateway-nexus-dev` existe e está ativo mas sem nenhum deployment/rota configurada.
> Hostname: `dnqe6ufrommkqxtfp7k2ehrbmu.apigateway.sa-saopaulo-1.oci.customer-oci.com`

### Recursos em `DEV` (OKE > DEV)

| Recurso | Nome | Estado |
|---|---|---|
| VCN | `vcn-oke` (10.110.0.0/16) | AVAILABLE — Terraform ✅ |
| VCN | `vcn-oke` (10.120.0.0/16) | AVAILABLE — legado/orphan ⚠️ |
| API Gateway | `api-gateway-mfe-dev` (147.15.97.158, PUBLIC) | ACTIVE — 1 deployment (mfe-user) |
| Object Storage | `mfe-shell-dev` | AVAILABLE |

---

## 2. Rede — Situação Atual

### VCNs em Uso

| VCN | CIDR | Compartment | Uso | Gerenciada por |
|---|---|---|---|---|
| `vcn-oke` | 10.110.0.0/16 | OKE > DEV | OKE clusters (DEV Nexus) | Terraform (`tf_oci_clusters`) |
| `VCN-DEV` | 10.6.0.0/16 | cmp-dev-inv | API Gateway + outros serviços | Manual |
| `vcn-oke` | 10.120.0.0/16 | OKE > DEV | Clusters legado dev-cls-1/2/3 | Terraform |

### Subnets da `vcn-oke` (10.110.0.0/16) — VCN ativa dos clusters

| Subnet | CIDR | Tipo | Uso |
|---|---|---|---|
| `sbn-workers-1` | 10.110.0.0/20 | Pública | OKE worker nodes |
| `sbn-workers-2` | 10.110.16.0/20 | Pública | OKE worker nodes |
| `sbn-workers-3` | 10.110.32.0/20 | Pública | OKE worker nodes |
| `sbn-lb-1` | 10.110.128.0/20 | Pública | Load Balancers OKE |
| `sbn-lb-2` | 10.110.144.0/20 | Pública | Load Balancers OKE |
| `sbn-api-gateway` | 10.110.192.0/20 | **Privada** | **Criada para API Gateway — não utilizada** |

### Subnets da `VCN-DEV` (10.6.0.0/16)

| Subnet | CIDR | Tipo | Uso atual |
|---|---|---|---|
| `SBNT-DEV` | 10.6.0.0/24 | Privada | **API Gateway `api-gateway-nexus-dev`** |
| `SBNT-DEV-AUTOMATION` | 10.6.1.0/24 | Privada | Automação |
| `SBNT-DEV-LB` | 10.6.3.0/24 | Privada | Load Balancer outros serviços |

### Topologia Atual (cross-VCN via DRG)

```
Internet
    │
    ▼
API Gateway (api-gateway-nexus-dev)
    │
    └── SBNT-DEV (10.6.0.0/24) ── VCN-DEV (10.6.0.0/16)
                                        │
                                       DRG ← comunicação cross-VCN
                                        │
                                   vcn-oke (10.110.0.0/16)
                                        │
                    ┌───────────────────┼───────────────────┐
                    │                   │                   │
              sbn-workers-1/2/3    sbn-lb-1/2        sbn-api-gateway
               (OKE nodes)        (LBs OKE)          (vazia / disponível)
```

---

## 3. Ações Realizadas em 2026-02-25

### 3.1 ✅ Compartment duplicado vazio — DELETADO

**Problema:** Existiam 2 compartments `cmp-dev-nexus`:
- `OKE > DEV > cmp-dev-nexus` — vazio, sem uso, criado por ciclo anterior do Terraform
- `cmp-top-invista > cmp-dev-inv > cmp-dev-nexus` — com todos os recursos ativos

**Verificação:** 0 VCNs, 0 instâncias, 0 clusters, 0 LBs, 0 API Gateways no vazio.

**Ações:**
- Compartment vazio deletado via OCI CLI
  - OCID deletado: `ocid1.compartment.oc1..aaaaaaaardqptx2truouyqtmj2awx5seh2rorh6xw4fszv2sqq7tmbohglnq`
  - Status final OCI: `DELETED` (renomeado para `cmp-dev-nexus.ebThJ41h`)
- Terraform corrigido: adicionado `create_cluster_compartment = false` em `environments/dev/terraform.ci.tfvars`
  - Repo: `tf_oci_clusters` | Commit: `5a127e3a` | Branch: `main`
  - Motivo: evitar que o Terraform recrie o compartment automaticamente no próximo apply

### 3.2 ✅ 8 VCNs orphans — DELETADAS

**Problema:** 8 VCNs `vcn-oke` (10.110.0.0/16) abandonadas no compartment `OKE > DEV`, geradas por ciclos anteriores de create/destroy de clusters OKE sem destruição dos recursos de rede.

**Verificação:**
- 0 VNICs / instâncias em todas
- 0 DRG attachments em todas
- Nenhuma no Terraform state atual → necessária exclusão manual

**Recursos removidos (por VCN, x8):**

| Recurso | Quantidade total |
|---|---|
| Subnets (sbn-workers-1/2/3, sbn-lb-1/2) | 40 |
| Route Tables (rt-public, rt-workers) | 16 |
| Security Lists (sl-lb, sl-workers) | ~16 |
| DHCP Options (dhcp-oke-dns) | 8 |
| Internet Gateways (igw-oke) | 8 |
| NAT Gateways (nat-oke) | 8 |
| Service Gateways (sgw-oke) | 8 |
| **VCNs** | **8** |

---

## 4. Problema Pendente — Desalinhamento Arquitetural de Rede

### Situação

O `api-gateway-nexus-dev` está em uma VCN diferente dos clusters OKE que ele serve:

| Componente | VCN | Compartment |
|---|---|---|
| `api-gateway-nexus-dev` | `VCN-DEV` (10.6.0.0/16) — subnet `SBNT-DEV` | `cmp-dev-inv` |
| `cls-dev-nexus` / `cls-dev-barramento` / `cls-dev-observabilidade` | `vcn-oke` (10.110.0.0/16) | `OKE > DEV` |

A comunicação entre API Gateway e OKE ocorre via **DRG-Invista-Shared** — **as 3 VCNs têm DRG attachment confirmado via OCI CLI (2026-03-01)**:

| Attachment | VCN | CIDR | Compartment |
|-----------|-----|------|-------------|
| `ATT-VCN-Shared` | VCN-Shared | 10.8.0.0/16 | cmp-shared-inv |
| `ATT-VCN-DEV` | VCN-DEV | 10.6.0.0/16 | cmp-dev-inv |
| `ATT-VCN-OKE-DEV` | vcn-oke | 10.110.0.0/16 | OKE > DEV |

### Por que `VCN-DEV` não é adequada para OKE

| Limitação | Detalhe |
|---|---|
| Sem Internet Gateway | Workers não conseguem puxar imagens de container |
| Sem NAT Gateway | Sem egress para internet em subnets privadas |
| Subnets /24 muito pequenas | 254 IPs por subnet — insuficiente para node pools + pods |
| Não gerenciada pelo Terraform | Criada manualmente, sem padronização |

---

## 5. Opções para Resolução

### Opção A — Migrar API Gateway para `vcn-oke` ⭐ Recomendada

Mover o `api-gateway-nexus-dev` para a subnet `sbn-api-gateway` (10.110.192.0/20) que já existe dentro da `vcn-oke` — criada pelo Terraform especificamente para esse fim (`enable_api_gateway_mfe = true`).

**Benefícios:**
- API Gateway e OKE na mesma VCN — comunicação direta sem DRG
- `sbn-api-gateway` já provisionada e disponível
- Alinha com a arquitetura gerenciada pelo Terraform
- Reduz custo (sem tráfego cross-VCN pelo DRG)
- Simplifica troubleshooting

**Limitação:** API Gateway no OCI **não permite troca de subnet in-place** — é necessário recriar.

**Passos para migração:**
1. Criar novo API Gateway em `sbn-api-gateway` (vcn-oke)
   ```bash
   oci api-gateway gateway create \
     --compartment-id "ocid1.compartment.oc1..aaaaaaaahycc62za6ikthlhauvarvbdixc7xpjjmcrame3cirhu2kz74ddma" \
     --display-name "api-gateway-nexus-dev" \
     --subnet-id "<ocid-sbn-api-gateway>" \
     --endpoint-type "PUBLIC"
   ```
2. Reconfigurar todos os Deployments e Routes no novo gateway
3. Atualizar DNS (Cloudflare) apontando para o novo endpoint hostname
4. Validar funcionamento de todas as rotas
5. Remover o gateway antigo (`api-gateway-nexus-dev` em VCN-DEV)

**Referência subnet destino:**
```
Nome: sbn-api-gateway
CIDR: 10.110.192.0/20
VCN:  vcn-oke (10.110.0.0/16) — compartment OKE > DEV
```

---

### Opção B — Manter situação atual (DRG)

Manter API Gateway na `VCN-DEV` conectado via DRG à `vcn-oke`. Funcional, sem risco imediato.

**Prós:** Zero impacto — nenhuma mudança necessária
**Contras:** Latência adicional via DRG, custo de tráfego inter-VCN, maior complexidade de troubleshooting

---

### Opção C — Migrar toda a rede OKE para `VCN-DEV` ❌ Não recomendada

Recriar os clusters OKE usando a `VCN-DEV` como base.

**Por que não:** Exigiria adicionar IGW + NAT à VCN-DEV, expandir subnets para /20, recriar 3 clusters com downtime — alto risco e esforço sem benefício claro sobre a Opção A.

---

## 6. Recomendação Final (atualizada 2026-03-01)

### Recomendação recebida: usar gateway compartilhado (VCN-DEV)

Foi recebida recomendação de **NÃO criar um gateway dedicado em vcn-oke** e sim usar o `api-gateway-nexus-dev` (gateway compartilhado na rede VCN-DEV) para ambos os fluxos — backend MSs e MFEs frontend.

**Arquitetura alvo:**
```
Internet → Cloudflare → LB Test_Crivo_Dev (VCN-Shared)
              │ DRG-Invista-Shared
              ▼
     VCN-DEV (rede compartilhada, cmp-dev-inv)
              ▼
     api-gateway-nexus-dev (10.6.0.123, PRIVATE)
     ├─► /api/* → OKE Internal LB → Ingress NGINX → Pods
     └─► /mfe-*/* → Object Storage (mfe-*-dev buckets)
```

**O que precisa ser feito:**
1. Criar deployments no `api-gateway-nexus-dev` para os MSs (/api/auth, /api/user, etc.)
2. Criar deployments no `api-gateway-nexus-dev` para os MFEs (rotas SPA)
3. Configurar DNS Cloudflare com hostname `dnqe6ufrommkqxtfp7k2ehrbmu.apigateway...`
4. Avaliar manter ou remover o `api-gateway-mfe-dev` (PUBLIC, vcn-oke)

### Opção A original — ainda válida como alternativa

A opção de migrar `api-gateway-nexus-dev` para `sbn-api-gateway` (vcn-oke) continua válida se a preferência for centralizar tudo em vcn-oke. Mas a recomendação recebida é o oposto: centralizar em VCN-DEV.

---

## Referências

- Repo Terraform: `tf_oci_clusters` (Azure DevOps — CN-Squad / Invista FIDC - Nexus)
- Compartment DEV Nexus OCID: `ocid1.compartment.oc1..aaaaaaaahycc62za6ikthlhauvarvbdixc7xpjjmcrame3cirhu2kz74ddma`
- VCN oke OCID: `ocid1.vcn.oc1.sa-saopaulo-1.amaaaaaasks3yliapqrmikfzagpgqohuzjqik3hx63w7r2uajiqv5krvxkda`
- VCN-DEV OCID: `ocid1.vcn.oc1.sa-saopaulo-1.amaaaaaasks3yliatoq6uvqqak3kax775ksd2jastvgsbiki7mgj6jzue6dq`

---

*Atualizado em: 2026-03-01 — Double-check completo via OCI CLI*
