OCI — Ambiente DEV Nexus (cmp-dev-nexus)
Atualizado: 2026-03-03 | Responsável: Tiago Ribeiro
Foco: Compartment cmp-dev-nexus — o que existe, o que o Terraform sobe e o que se comunica com o quê.
1. Compartments
invistacloud (root)
└── cmp-top-invista
└── cmp-dev-inv (OCID: aaaaaaaa76x3...) ← compartment pai — rede, observabilidade
└── cmp-dev-nexus (OCID: aaaaaaaahycc62za...) ← clusters, API gateways, buckets MFE
| Compartment |
OCID |
Papel |
cmp-dev-inv |
ocid1.compartment.oc1..aaaaaaaa76x3nykkjwvctpr6px34dysu3pbg7p62h2r65fegt7fvbrioll3a |
Rede (vcn-oke), Observabilidade, Bastion |
cmp-dev-nexus |
ocid1.compartment.oc1..aaaaaaaahycc62za6ikthlhauvarvbdixc7xpjjmcrame3cirhu2kz74ddma |
Clusters OKE, API Gateways, Buckets MFE, tfstate |
Regra no Terraform:
local.compartment_id → cmp-dev-inv (variável existing_compartment_id no terraform.ci.tfvars)
local.cluster_compartment_id → cmp-dev-nexus (derivado de cluster_compartment_id_map)
2. O que existe em cmp-dev-nexus
2.1 Clusters OKE — Terraform
| Cluster |
OCID (sufixo) |
K8s |
Node Pool |
Nodes |
cls-dev-nexus |
…cobrewkvc3a |
v1.34.1 |
np-dev-1 |
3× VM.Standard.E4.Flex (2 OCPU / 16 GB) |
cls-dev-barramento |
…cifn2eknv6q |
v1.34.1 |
np-dev-2 |
3× VM.Standard.E4.Flex |
cls-dev-observabilidade |
…crszb62robq |
v1.34.1 |
np-dev-3 |
3× VM.Standard.E4.Flex |
Workers usam subnets em cmp-dev-inv / vcn-oke (sbn-workers-1/2/3). O compartment dos workers é cmp-dev-nexus.
2.2 Load Balancers OKE — OKE-managed
Criados automaticamente pelo Kubernetes (Services do tipo LoadBalancer). Ficam nas subnets sbn-lb-1/2 da vcn-oke.
| IP |
Visibilidade |
Cluster |
10.110.133.131 |
Privado |
cls-dev-barramento |
10.110.135.3 |
Privado |
cls-dev-nexus |
10.110.129.64 |
Privado |
cls-dev-observabilidade |
10.110.143.54 |
Privado |
cls-dev-nexus |
137.131.236.202 |
Público |
cls-dev-nexus |
2.3 API Gateway PUBLIC — Terraform (api-gateway-dev)
Criado pelo módulo modules/api_gateway_mfe. Serve os arquivos estáticos dos MFEs via Object Storage.
| Campo |
Valor |
| Nome |
api-gateway-dev |
| Tipo |
PUBLIC |
| Compartment |
cmp-dev-nexus |
| Subnet |
sbn-lb-1 (10.110.128.0/20) — vcn-oke |
| Módulo TF |
tf_oci_clusters/modules/api_gateway_mfe |
| Hostname |
(gerado pelo pipeline — ver output mfe_gateway_endpoint) |
6 deployments (um por MFE):
| Path prefix |
Display name |
Backend (Object Storage) |
/ |
deploy-mfe-auth-dev |
mfe-auth-dev/o/{path} |
/ |
deploy-mfe-user-dev |
mfe-user-dev/o/{path} |
/ |
deploy-mfe-person-dev |
mfe-person-dev/o/{path} |
/ |
deploy-mfe-poc-dev |
mfe-poc-dev/o/{path} |
/ |
deploy-mfe-shell-dev |
mfe-shell-dev/o/{path} |
/ |
deploy-mfe-formalization-dev |
mfe-formalization-dev/o/{path} |
Cada deployment responde a GET / (→ index.html) e GET /{path*} (→ arquivo estático).
2.4 API Gateway PRIVATE — Manual (api-gateway-nexus-dev)
Serve o backend dos MSes. Não gerenciado pelo Terraform.
| Campo |
Valor |
| Nome |
api-gateway-nexus-dev |
| Tipo |
PRIVATE |
| Compartment |
cmp-dev-nexus |
| Subnet |
SBNT-DEV (10.6.0.0/24) — VCN-DEV (manual) |
| Hostname |
dnqe6ufrommkqxtfp7k2ehrbmu.apigateway.sa-saopaulo-1.oci.customer-oci.com |
| Gerenciado por |
Manual (OCI Console) |
11 deployments ativos:
| Path |
Serviço |
/api/auth |
ms-auth |
/api/user |
ms-user |
/api/user-external |
ms-user (externo) |
/api/user-internal |
ms-user (interno) |
/api/person |
ms-person |
/api/sso |
ms-auth-sso |
/api/role |
ms-role |
/api/poc |
ms-poc |
/api/cache |
ms-cache |
/api/commercial-manager |
ms-commercial-manager |
/mfe-shell |
mfe-shell (legado — substituído pelo api-gateway-dev) |
2.5 Object Storage — Buckets MFE — Terraform
Criados pelo módulo api_gateway_mfe junto com o gateway. Namespace: grbb7qzeuoag.
| Bucket |
Acesso |
Conteúdo |
mfe-auth-dev |
ObjectReadWithoutList |
Build Angular do mfe-auth |
mfe-user-dev |
ObjectReadWithoutList |
Build Angular do mfe-user |
mfe-person-dev |
ObjectReadWithoutList |
Build Angular do mfe-person |
mfe-poc-dev |
ObjectReadWithoutList |
Build Angular do mfe-poc |
mfe-shell-dev |
ObjectReadWithoutList |
Build Angular do mfe-shell |
mfe-formalization-dev |
ObjectReadWithoutList |
Build Angular do mfe-formalization |
O conteúdo dos buckets é publicado pelas pipelines dos repos de MFE (branch devops), usando o template azure-pipelines-templates/mfe/deploy-mfe-oci.yaml.
2.6 Object Storage — Buckets Manuais
| Bucket |
Uso |
tfstate-gqysee |
Terraform remote state |
tfstate-inidhr |
Terraform remote state |
tfstate-terraform |
Terraform remote state principal |
invista-inventcloud-bucket3 |
Uso geral |
3. Rede — O que cmp-dev-nexus usa
Os recursos de rede ficam em cmp-dev-inv mas os clusters e gateways de cmp-dev-nexus se comunicam através delas.
3.1 VCN vcn-oke — Terraform (em cmp-dev-inv)
| Subnet |
CIDR |
Tipo |
Usado por |
sbn-workers-1 |
10.110.0.0/20 |
Pública |
Worker nodes (cls-dev-nexus) |
sbn-workers-2 |
10.110.16.0/20 |
Pública |
Worker nodes (cls-dev-barramento) |
sbn-workers-3 |
10.110.32.0/20 |
Pública |
Worker nodes (cls-dev-observabilidade) |
sbn-lb-1 |
10.110.128.0/20 |
Pública |
OKE LBs + api-gateway-dev (PUBLIC) |
sbn-lb-2 |
10.110.144.0/20 |
Pública |
OKE LBs |
sbn-api-gateway |
10.110.192.0/20 |
Privada |
Disponível — não usada atualmente |
Gateways de rede (vcn-oke):
| Recurso |
Tipo |
Função |
igw-oke |
Internet Gateway |
Saída para internet (workers públicos, LBs, api-gateway) |
nat-oke |
NAT Gateway |
Saída privada (sbn-api-gateway) |
sgw-oke |
Service Gateway |
Acesso a OCI Object Storage (sem internet) |
| DRG |
Dynamic Routing |
Interconexão vcn-oke ↔ VCN-DEV |
3.2 VCN VCN-DEV — Manual (em cmp-dev-inv)
| Campo |
Valor |
| CIDR |
10.6.0.0/16 |
| Subnet relevante |
SBNT-DEV — 10.6.0.0/24 (usada pelo api-gateway-nexus-dev) |
| Conectividade |
DRG ↔ vcn-oke (roteamento para OKE workers) |
4. Diagrama de Comunicação
INTERNET
│
▼ [Cloudflare CNAME proxied]
api-gateway-dev (PUBLIC · sbn-lb-1 · vcn-oke · cmp-dev-nexus)
│
├── GET /mfe-*/index.html → Object Storage (mfe-*-dev buckets · cmp-dev-nexus)
└── GET /mfe-*/{path*} → Object Storage (arquivo estático)
INTERNET
│
▼ [Cloudflare → LB Test_Crivo_Dev (VCN-Shared)]
│ DRG: VCN-Shared → VCN-DEV
▼
api-gateway-nexus-dev (PRIVATE · SBNT-DEV · VCN-DEV · cmp-dev-nexus)
│ DRG: VCN-DEV → vcn-oke
▼
OKE Load Balancers (sbn-lb-1/2 · vcn-oke · cmp-dev-nexus)
│
▼
K8s Services / Ingress (cls-dev-nexus)
│
▼
Pods (sbn-workers-1/2/3 · vcn-oke · cmp-dev-nexus)
5. Terraform vs Manual vs OKE-managed
| Recurso |
Gerenciado por |
Onde criar/alterar |
VCN vcn-oke + subnets + gateways + route tables |
Terraform |
tf_oci_clusters/modules/network |
| 3× OKE clusters + node pools (9 workers) |
Terraform |
tf_oci_clusters/modules/oke_cluster |
api-gateway-dev (PUBLIC) + 6 deployments MFE |
Terraform |
tf_oci_clusters/modules/api_gateway_mfe |
6× buckets mfe-*-dev (Object Storage) |
Terraform |
tf_oci_clusters/modules/api_gateway_mfe |
| ArgoCD (Helm v7.3.0) nos 3 clusters |
Terraform |
tf_oci_clusters/environments/dev/argocd.tf |
Kubeconfigs ~/.kube/config-dev-{1,2,3} |
Terraform (local-exec) |
Gerados no terraform apply |
| Observabilidade (alarms CPU, log group, dashboard) |
Terraform |
tf_oci_clusters/modules/observability |
api-gateway-nexus-dev (PRIVATE) + 11 deployments |
Manual (OCI Console) |
Console OCI |
VCN-DEV (10.6.0.0/16) + SBNT-DEV |
Manual |
Console OCI |
| DRG-Invista-Shared + attachments |
Manual |
Console OCI |
LB Test_Crivo_Dev (10.8.4.127, VCN-Shared) |
Manual |
Console OCI |
DNS Cloudflare (*.invista.com.br) |
Manual |
Cloudflare Dashboard |
| Conteúdo dos buckets MFE (builds Angular) |
Pipeline CI |
Repos mfe-* branch devops |
| 5× OKE Load Balancers |
OKE-managed |
K8s YAML (Services) |
Buckets tfstate-* |
Manual |
Console OCI (criados uma vez) |
6. Terraform — Como executar
6.1 Repositório
| Campo |
Valor |
| Azure DevOps |
CN-Squad / Invista FIDC - Nexus |
| Repo |
tf_oci_clusters |
| Pipeline |
terraform-tf_oci_clusters (ID 51) |
| Variable Group |
oci-terraform (ID 34) |
| Backend (remote state) |
Object Storage OCI — bucket tfstate-terraform em cmp-dev-nexus |
6.2 Estrutura de arquivos
tf_oci_clusters/
├── environments/dev/
│ ├── main.tf # Clusters OKE, rede, bastion, observabilidade
│ ├── api_gateway_mfe.tf # API Gateway PUBLIC + deployments + buckets MFE
│ ├── argocd.tf # ArgoCD Helm install + kubeconfig gerado
│ ├── backend.tf # Remote state (S3-compat Object Storage)
│ ├── providers.tf # OCI provider (região, tenancy, user, key)
│ ├── variables.tf # Declaração de todas as variáveis
│ └── terraform.ci.tfvars # Valores do ambiente DEV (usado pela pipeline)
│
├── modules/
│ ├── network/ # VCN, subnets, IGW, NAT, SGW, route tables, security lists
│ ├── oke_cluster/ # OKE cluster + node pool
│ ├── api_gateway_mfe/ # API Gateway PUBLIC + buckets Object Storage + deployments
│ ├── observability/ # OCI Monitoring alarms, Log Group, dashboards
│ ├── compartment/ # Criação de compartment
│ ├── iam_domain/ # IAM Domain (OIDC/IDCS)
│ └── iam_service_accounts/ # IAM service accounts
│
└── argocd/
├── values.yaml # Helm values do ArgoCD
└── application-dev.yaml # ArgoCD Application GitOps manifest
6.3 terraform.ci.tfvars DEV — Campos obrigatórios e o que significam
# ── Ambiente ────────────────────────────────────────────────
env_name = "dev" # Sufixo em todos os recursos (ex: api-gateway-dev)
# ── Compartments (preencher com OCIDs do Console OCI) ───────
create_compartment = false # cmp-dev-inv já existe — não recriar
create_cluster_compartment = false # cmp-dev-nexus já existe — não recriar
existing_compartment_id = "ocid1.compartment.oc1..aaaaaaaa76x3..." # cmp-dev-inv
cluster_compartment_id_map = {
"1" = "ocid1.compartment.oc1..aaaaaaaahycc62za..." # cmp-dev-nexus
"2" = "ocid1.compartment.oc1..aaaaaaaahycc62za..."
"3" = "ocid1.compartment.oc1..aaaaaaaahycc62za..."
}
# ── Rede ────────────────────────────────────────────────────
vcn_cidr = "10.110.0.0/16" # CIDR da vcn-oke
# ── Clusters OKE ────────────────────────────────────────────
kubernetes_version = "v1.34.1"
node_shape = "VM.Standard.E4.Flex"
ocpus = 2
memory_in_gbs = 16
node_pool_size_up = 3 # Workers ativos
node_pool_size_down = 0 # Workers no scale-down (desliga todos)
scale_mode = "up" # "up" = produtivo, "down" = econômico
# ── Bastion (debug/acesso SSH) ───────────────────────────────
enable_bastion = true
admin_cidr = "SEU_IP_PUBLICO/32" # IP liberado para SSH no bastion
ssh_public_key_path = "../../config/ci_ssh_key.pub"
# ── API Gateway MFE ─────────────────────────────────────────
enable_api_gateway_mfe = true
mfe_object_namespace = "grbb7qzeuoag" # namespace fixo do tenancy
# ── Observabilidade ─────────────────────────────────────────
observability_enable_dashboards = true
observability_dashboard_import_file = "../../dashboards/oke-observability-import.json"
6.4 Variáveis sensíveis — Variable Group oci-terraform (Azure DevOps)
Estas variáveis não ficam no tfvars — são injetadas pela pipeline via Variable Group:
| Variável |
Descrição |
De onde pegar |
TF_VAR_tenancy_ocid |
OCID do tenancy |
Console OCI → Perfil → Tenancy |
TF_VAR_user_ocid |
OCID do usuário de serviço |
Console OCI → IAM → Users |
TF_VAR_fingerprint |
Fingerprint da chave API |
Console OCI → IAM → Users → API Keys |
TF_VAR_private_key_path |
Caminho da chave privada no agent |
Arquivo no Azure DevOps agent |
TF_VAR_oci_region |
Região OCI |
sa-saopaulo-1 |
TF_VAR_compartment_parent_ocid |
OCID do compartment pai (cmp-top-invista) |
Console OCI → IAM → Compartments |
OCI_CLI_KEY_FILE |
Caminho da chave para OCI CLI (kubeconfig) |
Mesmo arquivo da chave privada |
6.5 Fluxo da pipeline
Push para main (tf_oci_clusters)
└─► Stage: Bootstrap
terraform init -backend-config=...
terraform validate
Stage: DEV — Plan
terraform plan -var-file=terraform.ci.tfvars -out=plan.tfplan
Stage: DEV — Approval ← aprovação manual no Azure DevOps
Stage: DEV — Apply
terraform apply plan.tfplan
6.6 O que o terraform apply cria no cmp-dev-nexus
api-gateway-dev (PUBLIC, sbn-lb-1, vcn-oke)
└── 6 deployments: deploy-mfe-{auth,user,person,poc,shell,formalization}-dev
6 buckets Object Storage:
mfe-auth-dev / mfe-user-dev / mfe-person-dev
mfe-poc-dev / mfe-shell-dev / mfe-formalization-dev
(namespace: grbb7qzeuoag · acesso: ObjectReadWithoutList)
3 clusters OKE (em cmp-dev-nexus, usando vcn-oke de cmp-dev-inv):
cls-dev-nexus → np-dev-1 (3× VM.Standard.E4.Flex)
cls-dev-barramento → np-dev-2 (3× VM.Standard.E4.Flex)
cls-dev-observabilidade → np-dev-3 (3× VM.Standard.E4.Flex)
ArgoCD v7.3.0 em cada cluster (Helm, namespace argocd)
Kubeconfigs: ~/.kube/config-dev-{1,2,3}
7. URLs de acesso
7.1 API Gateway PUBLIC (api-gateway-dev) — MFEs
O hostname é gerado pelo OCI após o terraform apply. Ver output mfe_gateway_endpoint na pipeline.
Cada MFE tem um deployment separado mas todos compartilham o mesmo gateway.
O path prefix é / para todos — o roteamento por MFE é feito via DNS (subdomínio diferente por MFE).
| MFE |
DNS (Cloudflare → CNAME → gateway) |
Bucket |
| Shell |
mfe-shell-dev-oci.invista.com.br |
mfe-shell-dev |
| Auth |
mfe-auth-dev-oci.invista.com.br |
mfe-auth-dev |
| User |
mfe-user-dev-oci.invista.com.br |
mfe-user-dev |
| Person |
mfe-person-dev-oci.invista.com.br |
mfe-person-dev |
| PoC |
mfe-poc-dev-oci.invista.com.br |
mfe-poc-dev |
| Formalization |
mfe-formalization-dev-oci.invista.com.br |
mfe-formalization-dev |
DNS: CNAME proxied no Cloudflare → hostname do api-gateway-dev (gerado pelo pipeline).
Após cada terraform apply que recria o gateway, o CNAME precisa ser atualizado.
7.2 API Gateway PRIVATE (api-gateway-nexus-dev) — Backend MS
Acessado via Cloudflare → LB Test_Crivo_Dev → DRG → VCN-DEV → gateway.
| Path |
Serviço |
URL interna |
/api/auth |
ms-auth |
*.invista.com.br/api/auth |
/api/user |
ms-user |
*.invista.com.br/api/user |
/api/person |
ms-person |
*.invista.com.br/api/person |
/api/sso |
ms-auth-sso |
*.invista.com.br/api/sso |
/api/role |
ms-role |
*.invista.com.br/api/role |
/api/poc |
ms-poc |
*.invista.com.br/api/poc |
/api/cache |
ms-cache |
*.invista.com.br/api/cache |
/api/commercial-manager |
ms-commercial-manager |
*.invista.com.br/api/commercial-manager |
/api/user-external |
ms-user-external |
*.invista.com.br/api/user-external |
/api/user-internal |
ms-user-internal |
*.invista.com.br/api/user-internal |
7.3 ArgoCD (somente via VPN/Bastion)
| Cluster |
URL |
cls-dev-nexus |
https://argocd.dev-01.interno.invista.com.br |
cls-dev-barramento |
https://argocd.dev-02.interno.invista.com.br |
cls-dev-observabilidade |
https://argocd.dev-03.interno.invista.com.br |
7.4 OKE público direto
| Recurso |
Endereço |
| OKE LB público (cls-dev-nexus) |
137.131.236.202 |
8. O que é manual e precisa ser preenchido manualmente
| Item |
Onde preencher |
Observação |
admin_cidr no tfvars |
Seu IP público /32 |
Mudar quando IP mudar |
Variable Group oci-terraform no Azure DevOps |
DevOps → Pipelines → Library |
OCIDs, fingerprint, chave privada |
| DNS Cloudflare dos MFEs |
Cloudflare Dashboard |
CNAME → hostname do api-gateway-dev (output do pipeline) |
api-gateway-nexus-dev deployments |
OCI Console |
Adicionar/remover MSes manualmente |
| Conteúdo dos buckets MFE |
Pipeline MFE (branch devops) |
Automático após push no repo do MFE |
| Kubeconfig local |
terraform apply (automático) ou oci ce cluster create-kubeconfig ... |
Precisa de OCI CLI configurado |
9. Referências — OCIDs e Endpoints
| Recurso |
OCID / Valor |
| Tenancy |
ocid1.tenancy.oc1..aaaaaaaasks3yliaqansozrmkfwyi3z2bwlpx6yrd7mxnjukcgxazlqtxurq |
Compartment cmp-dev-inv |
ocid1.compartment.oc1..aaaaaaaa76x3nykkjwvctpr6px34dysu3pbg7p62h2r65fegt7fvbrioll3a |
Compartment cmp-dev-nexus |
ocid1.compartment.oc1..aaaaaaaahycc62za6ikthlhauvarvbdixc7xpjjmcrame3cirhu2kz74ddma |
VCN vcn-oke |
ocid1.vcn.oc1.sa-saopaulo-1.amaaaaaasks3yliapqrmikfzagpgqohuzjqik3hx63w7r2uajiqv5krvxkda |
VCN VCN-DEV |
ocid1.vcn.oc1.sa-saopaulo-1.amaaaaaasks3yliatoq6uvqqak3kax775ksd2jastvgsbiki7mgj6jzue6dq |
API Gateway api-gateway-nexus-dev |
ocid1.apigateway.oc1.sa-saopaulo-1.amaaaaaasks3yliabohvp4fqav5pansi57thnunkyons52idvpfjppyzugeq |
API Gateway api-gateway-dev |
(gerado pelo pipeline — ver output mfe_gateway_endpoint) |
| Object Storage Namespace |
grbb7qzeuoag |
| Região |
sa-saopaulo-1 |
| Pipeline Terraform |
ID 51 — terraform-tf_oci_clusters |
| Variable Group |
ID 34 — oci-terraform |