docs(nexus): documentação completa do ambiente DEV Nexus (OCI + Terraform)
Cobre: compartments, 3x OKE clusters, node pools, VCN/subnets, 5x Load Balancers, API Gateways, Object Storage, ArgoCD, Observabilidade e estrutura completa do Terraform (tf_oci_clusters). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
302e56baef
commit
4ff252b43d
1 changed files with 357 additions and 0 deletions
357
inventcloud/invista/nexus/OCI-DEV-NEXUS.md
Normal file
357
inventcloud/invista/nexus/OCI-DEV-NEXUS.md
Normal file
|
|
@ -0,0 +1,357 @@
|
|||
# OCI — Ambiente DEV Nexus (cmp-dev-nexus)
|
||||
|
||||
> **Data:** 2026-02-25 | **Responsável:** Tiago Ribeiro
|
||||
> **Contexto:** Documentação completa do ambiente DEV Nexus — recursos OCI e Terraform (`tf_oci_clusters`)
|
||||
|
||||
---
|
||||
|
||||
## 1. Compartments
|
||||
|
||||
### Hierarquia
|
||||
|
||||
```
|
||||
invistacloud (root)
|
||||
└── cmp-top-invista
|
||||
└── cmp-dev-inv ← compartment pai (local.compartment_id no Terraform)
|
||||
└── cmp-dev-nexus ← clusters OKE, node pools, LBs
|
||||
```
|
||||
|
||||
| Compartment | OCID | Uso |
|
||||
|---|---|---|
|
||||
| `cmp-dev-inv` | `ocid1.compartment.oc1..aaaaaaaa76x3nykkjwvctpr6px34dysu3pbg7p62h2r65fegt7fvbrioll3a` | VCN, API Gateway, Object Storage, Observabilidade |
|
||||
| `cmp-dev-nexus` | `ocid1.compartment.oc1..aaaaaaaahycc62za6ikthlhauvarvbdixc7xpjjmcrame3cirhu2kz74ddma` | Clusters OKE, Node Pools, Load Balancers |
|
||||
|
||||
> **Nota:** O Terraform usa `cmp-dev-inv` como compartment raiz do ambiente (`existing_compartment_id`) e `cmp-dev-nexus` como compartment dos clusters (`cluster_compartment_id_map`).
|
||||
|
||||
---
|
||||
|
||||
## 2. OKE Clusters
|
||||
|
||||
### Clusters Ativos
|
||||
|
||||
| # | Cluster | OCID (sufixo) | Versão K8s | Node Pool | Nodes |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | `cls-dev-nexus` | `…cobrewkvc3a` | v1.34.1 | `np-dev-1` | 3x VM.Standard.E4.Flex |
|
||||
| 2 | `cls-dev-barramento` | `…cifn2eknv6q` | v1.34.1 | `np-dev-2` | 3x VM.Standard.E4.Flex |
|
||||
| 3 | `cls-dev-observabilidade` | `…crszb62robq` | v1.34.1 | `np-dev-3` | 3x VM.Standard.E4.Flex |
|
||||
|
||||
### Configuração dos Node Pools
|
||||
|
||||
| Parâmetro | Valor |
|
||||
|---|---|
|
||||
| Shape | `VM.Standard.E4.Flex` |
|
||||
| OCPUs | 2 |
|
||||
| Memória | 16 GB |
|
||||
| Nodes por pool | 3 (`node_pool_size_up = 3`) |
|
||||
| Modo de escala | `up` (escala zero: `node_pool_size_down = 0`) |
|
||||
| Autoscaler | Desabilitado |
|
||||
| Pods CIDR | `10.244.0.0/16` |
|
||||
| Services CIDR | `10.96.0.0/16` |
|
||||
|
||||
### Worker Nodes (Compute Instances)
|
||||
|
||||
| Instância | Cluster | Shape | Estado |
|
||||
|---|---|---|---|
|
||||
| `oke-cifn2eknv6q-*` (x3) | cls-dev-barramento | VM.Standard.E4.Flex | RUNNING |
|
||||
| `oke-cobrewkvc3a-*` (x3) | cls-dev-nexus | VM.Standard.E4.Flex | RUNNING |
|
||||
| `oke-crszb62robq-*` (x3) | cls-dev-observabilidade | VM.Standard.E4.Flex | RUNNING |
|
||||
|
||||
### Kubeconfig
|
||||
|
||||
Os kubeconfigs são gerados automaticamente pelo Terraform via `null_resource.kubeconfig`:
|
||||
|
||||
```
|
||||
~/.kube/config-dev-1 → cls-dev-nexus
|
||||
~/.kube/config-dev-2 → cls-dev-barramento
|
||||
~/.kube/config-dev-3 → cls-dev-observabilidade
|
||||
```
|
||||
|
||||
Gerar manualmente:
|
||||
```bash
|
||||
oci ce cluster create-kubeconfig \
|
||||
--cluster-id <CLUSTER_OCID> \
|
||||
--file ~/.kube/config-dev-<N> \
|
||||
--token-version 2.0.0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Rede
|
||||
|
||||
### VCN
|
||||
|
||||
| VCN | CIDR | Compartment | Gerenciada por |
|
||||
|---|---|---|---|
|
||||
| `vcn-oke` | `10.110.0.0/16` | `cmp-dev-inv` / OKE > DEV | Terraform (`tf_oci_clusters`) |
|
||||
| `VCN-DEV` | `10.6.0.0/16` | `cmp-dev-inv` | Manual |
|
||||
|
||||
### Subnets `vcn-oke` (10.110.0.0/16)
|
||||
|
||||
| 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 + API Gateway MFE |
|
||||
| `sbn-lb-2` | `10.110.144.0/20` | Pública | Load Balancers OKE |
|
||||
| `sbn-api-gateway` | `10.110.192.0/20` | **Privada** | Criada pelo Terraform (disponível — não usada atualmente) |
|
||||
|
||||
### Gateways de Rede
|
||||
|
||||
| Gateway | Tipo | Uso |
|
||||
|---|---|---|
|
||||
| `igw-oke` | Internet Gateway | Egress público para workers e LBs |
|
||||
| `nat-oke` | NAT Gateway | Egress privado para `sbn-api-gateway` |
|
||||
| `sgw-oke` | Service Gateway | Acesso a serviços OCI (Object Storage, etc.) |
|
||||
| DRG | Dynamic Routing Gateway | Cross-VCN: `vcn-oke` ↔ `VCN-DEV` |
|
||||
|
||||
---
|
||||
|
||||
## 4. Load Balancers
|
||||
|
||||
Todos os LBs são criados e gerenciados pelo OKE (via Services do tipo LoadBalancer no Kubernetes):
|
||||
|
||||
| Display Name (ID OKE) | IP | Shape | Cluster | Criado em |
|
||||
|---|---|---|---|---|
|
||||
| `35adee2d-…` | `10.110.133.131` | 100Mbps | cls-dev-barramento | 2026-01-26 |
|
||||
| `b8344bb7-…` | `10.110.135.3` | 100Mbps | cls-dev-nexus | 2026-01-26 |
|
||||
| `bc0548de-…` | `10.110.129.64` | 100Mbps | cls-dev-observabilidade | 2026-01-26 |
|
||||
| `177c06f0-…` | `10.110.143.54` | 100Mbps | cls-dev-nexus | 2026-01-29 |
|
||||
| `029cfee6-…` | `137.131.236.202` *(público)* | 100Mbps | cls-dev-nexus | 2026-02-09 |
|
||||
|
||||
> Os IPs privados (`10.110.x`) estão na subnet `sbn-lb-1` ou `sbn-lb-2`.
|
||||
> O único IP público (`137.131.236.202`) pertence a um Service exposto externamente no `cls-dev-nexus`.
|
||||
|
||||
---
|
||||
|
||||
## 5. API Gateways
|
||||
|
||||
### `api-gateway-mfe-dev` — Terraform-managed
|
||||
|
||||
| Campo | Valor |
|
||||
|---|---|
|
||||
| Nome | `api-gateway-mfe-dev` |
|
||||
| Compartment | `cmp-dev-inv` |
|
||||
| Tipo | PUBLIC |
|
||||
| Subnet | `sbn-lb-1` (10.110.128.0/20) — vcn-oke |
|
||||
| Gerenciado por | Terraform (`modules/api_gateway_mfe`) |
|
||||
| Hostname | `guhal72tzyekzchzamhhi3lvgi.apigateway.sa-saopaulo-1.oci.customer-oci.com` |
|
||||
|
||||
**Deployments configurados:**
|
||||
|
||||
| MFE | Bucket | Path | Backend |
|
||||
|---|---|---|---|
|
||||
| `mfe-user` | `mfe-user-dev` | `/{path*}` | Object Storage `grbb7qzeuoag` |
|
||||
| `mfe-user` | `mfe-user-dev` | `/` (fallback SPA) | `index.html` no bucket |
|
||||
|
||||
### `api-gateway-nexus-dev` — Manual
|
||||
|
||||
| Campo | Valor |
|
||||
|---|---|
|
||||
| Nome | `api-gateway-nexus-dev` |
|
||||
| Compartment | `cmp-dev-inv` |
|
||||
| Subnet | `SBNT-DEV` (10.6.0.0/24) — VCN-DEV |
|
||||
| Gerenciado por | Manual |
|
||||
| Conectividade OKE | Via DRG (cross-VCN: VCN-DEV ↔ vcn-oke) |
|
||||
|
||||
> **Pendência:** Migrar `api-gateway-nexus-dev` para `sbn-api-gateway` na `vcn-oke` (ver `OCI-NETWORK-ANALYSIS.md` — Opção A).
|
||||
|
||||
---
|
||||
|
||||
## 6. Object Storage
|
||||
|
||||
### Buckets em `cmp-dev-nexus`
|
||||
|
||||
| Bucket | Uso | Criado em |
|
||||
|---|---|---|
|
||||
| `invista-inventcloud-bucket3` | Uso geral | 2026-02-06 |
|
||||
| `tfstate-gqysee` | Terraform remote state | 2025-12-30 |
|
||||
| `tfstate-inidhr` | Terraform remote state | 2025-12-30 |
|
||||
| `tfstate-terraform` | Terraform remote state | 2025-12-30 |
|
||||
|
||||
### Buckets em `cmp-dev-inv`
|
||||
|
||||
| Bucket | Uso | Criado em |
|
||||
|---|---|---|
|
||||
| `mfe-shell-dev` | MFE Shell (frontend) | 2026-02-24 |
|
||||
|
||||
> **Namespace do Object Storage:** `grbb7qzeuoag`
|
||||
|
||||
---
|
||||
|
||||
## 7. ArgoCD
|
||||
|
||||
ArgoCD instalado em todos os 3 clusters via Helm pelo Terraform:
|
||||
|
||||
| Parâmetro | Valor |
|
||||
|---|---|
|
||||
| Chart Version | `7.3.0` (argo/argo-cd) |
|
||||
| Namespace | `argocd` |
|
||||
| LB tipo | Interno (annotation `oci-load-balancer-internal=true`) |
|
||||
| OIDC | OCI IDCS (integrado via outputs do módulo `identity`) |
|
||||
|
||||
**URLs internas (somente acesso via VCN):**
|
||||
|
||||
| Cluster | URL |
|
||||
|---|---|
|
||||
| `cls-dev-nexus` (1) | `https://argocd.dev-01.interno.invista.com.br` |
|
||||
| `cls-dev-barramento` (2) | `https://argocd.dev-02.interno.invista.com.br` |
|
||||
| `cls-dev-observabilidade` (3) | `https://argocd.dev-03.interno.invista.com.br` |
|
||||
|
||||
**RBAC OCI IDCS:**
|
||||
|
||||
| Grupo OCI | Role ArgoCD |
|
||||
|---|---|
|
||||
| `invista-oke-admin` | `admin` |
|
||||
| `invista-oke-dev` | `readonly` |
|
||||
| `invista-oke-readonly` | `readonly` |
|
||||
|
||||
---
|
||||
|
||||
## 8. Observabilidade
|
||||
|
||||
Gerenciada pelo módulo `modules/observability` em `cmp-dev-inv`:
|
||||
|
||||
| Recurso | Tipo | Configuração |
|
||||
|---|---|---|
|
||||
| Alarmes OCI Monitoring | `oci_computeagent` | CPU > 90% (PT10M) → CRITICAL; CPU > 75% (PT15M) → WARNING |
|
||||
| Log Group | OCI Logging | — |
|
||||
| Dashboard | OCI Management Dashboard | Import de `dashboards/oke-observability-import.json` |
|
||||
|
||||
---
|
||||
|
||||
## 9. Terraform — `tf_oci_clusters`
|
||||
|
||||
### Repositório
|
||||
|
||||
| Campo | Valor |
|
||||
|---|---|
|
||||
| Organização | Azure DevOps — CN-Squad |
|
||||
| Projeto | Invista FIDC - Nexus |
|
||||
| Repositório | `tf_oci_clusters` |
|
||||
| Pipeline | `terraform-tf_oci_clusters` (ID 51) |
|
||||
| Variable Group | `oci-terraform` (ID 34) |
|
||||
| Backend | Object Storage OCI (S3-compatible) — bucket `tfstate-*` em `cmp-dev-nexus` |
|
||||
|
||||
### Estrutura de Arquivos
|
||||
|
||||
```
|
||||
tf_oci_clusters/
|
||||
├── environments/
|
||||
│ ├── dev/
|
||||
│ │ ├── main.tf # Clusters, rede, bastion, observabilidade
|
||||
│ │ ├── api_gateway_mfe.tf # API Gateway MFE + deployments
|
||||
│ │ ├── argocd.tf # ArgoCD Helm install + kubeconfig
|
||||
│ │ ├── backend.tf # Remote state config
|
||||
│ │ ├── providers.tf # OCI provider
|
||||
│ │ ├── variables.tf # Todas as variáveis
|
||||
│ │ └── terraform.ci.tfvars # Valores do ambiente DEV (pipeline CI)
|
||||
│ ├── hml/ # Ambiente HML (estrutura similar)
|
||||
│ └── prod/ # Ambiente PROD (estrutura similar)
|
||||
│
|
||||
├── modules/
|
||||
│ ├── oke_cluster/ # OKE cluster + node pool
|
||||
│ │ ├── main.tf # oci_containerengine_cluster + node_pool
|
||||
│ │ └── variables.tf
|
||||
│ ├── network/ # VCN, subnets, gateways, route tables, security lists
|
||||
│ │ ├── main.tf
|
||||
│ │ └── variables.tf
|
||||
│ ├── api_gateway_mfe/ # API Gateway PUBLIC para MFEs estáticos
|
||||
│ │ ├── main.tf # oci_apigateway_gateway + deployments por MFE
|
||||
│ │ └── variables.tf
|
||||
│ ├── compartment/ # Criação de compartment
|
||||
│ ├── observability/ # ONS + OCI Logging + Alarms + Dashboards
|
||||
│ └── iam_service_accounts/ # IAM para service accounts
|
||||
│
|
||||
├── compartments/ # Gerenciamento top-level de compartments
|
||||
├── dns/ # DNS OCI
|
||||
├── iam/ # IAM policies
|
||||
├── identity/ # OIDC / IDCS (usado pelo ArgoCD)
|
||||
├── argocd/
|
||||
│ ├── values.yaml # Helm values do ArgoCD
|
||||
│ └── application-dev.yaml # ArgoCD Application manifest (GitOps)
|
||||
└── dashboards/
|
||||
└── oke-observability-import.json
|
||||
```
|
||||
|
||||
### terraform.ci.tfvars DEV — Valores Principais
|
||||
|
||||
```hcl
|
||||
env_name = "dev"
|
||||
create_compartment = false
|
||||
create_cluster_compartment = false # removido manualmente 2026-02-25
|
||||
existing_compartment_id = "ocid1.compartment.oc1..aaaaaaaa76x3nykkjwvctpr6px34dysu3pbg7p62h2r65fegt7fvbrioll3a" # cmp-dev-inv
|
||||
|
||||
cluster_compartment_id_map = {
|
||||
"1" = "ocid1.compartment.oc1..aaaaaaaahycc62za6ikthlhauvarvbdixc7xpjjmcrame3cirhu2kz74ddma" # cmp-dev-nexus
|
||||
"2" = "ocid1.compartment.oc1..aaaaaaaahycc62za6ikthlhauvarvbdixc7xpjjmcrame3cirhu2kz74ddma"
|
||||
"3" = "ocid1.compartment.oc1..aaaaaaaahycc62za6ikthlhauvarvbdixc7xpjjmcrame3cirhu2kz74ddma"
|
||||
}
|
||||
|
||||
kubernetes_version = "v1.34.1"
|
||||
node_shape = "VM.Standard.E4.Flex"
|
||||
ocpus = 2
|
||||
memory_in_gbs = 16
|
||||
vcn_cidr = "10.110.0.0/16"
|
||||
|
||||
scale_mode = "up"
|
||||
node_pool_size_up = 3
|
||||
node_pool_size_down = 0
|
||||
|
||||
enable_bastion = true
|
||||
admin_cidr = "187.65.249.125/32"
|
||||
enable_api_gateway_mfe = true
|
||||
```
|
||||
|
||||
### Pipeline CI/CD
|
||||
|
||||
```
|
||||
Push to main (tf_oci_clusters)
|
||||
→ Bootstrap (init + validate)
|
||||
→ Detect Changes (diff por environment)
|
||||
→ Plan (terraform plan -var-file=terraform.ci.tfvars)
|
||||
→ Aprovação Manual
|
||||
→ Apply (terraform apply)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 10. Fluxo de Dependências
|
||||
|
||||
```
|
||||
tf_oci_clusters (pipeline ID 51)
|
||||
│
|
||||
├── module.network → VCN vcn-oke (10.110.0.0/16)
|
||||
│ └── subnets, IGW, NAT, SGW, route tables, security lists
|
||||
│
|
||||
├── module.cluster[1,2,3] → cls-dev-nexus / cls-dev-barramento / cls-dev-observabilidade
|
||||
│ └── node_pool → np-dev-1/2/3 (VM.Standard.E4.Flex 2cpu/16gb x3)
|
||||
│
|
||||
├── module.api_gateway_mfe → api-gateway-mfe-dev (PUBLIC, sbn-lb-1)
|
||||
│ └── deployment mfe-user → bucket mfe-user-dev
|
||||
│
|
||||
├── null_resource.kubeconfig → ~/.kube/config-dev-{1,2,3}
|
||||
│
|
||||
├── null_resource.argocd_setup → ArgoCD v7.3.0 em cada cluster
|
||||
│
|
||||
└── module.observability → Alarms + Log Group + Dashboards
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Referências
|
||||
|
||||
| Recurso | OCID / URL |
|
||||
|---|---|
|
||||
| Compartment `cmp-dev-nexus` | `ocid1.compartment.oc1..aaaaaaaahycc62za6ikthlhauvarvbdixc7xpjjmcrame3cirhu2kz74ddma` |
|
||||
| Compartment `cmp-dev-inv` | `ocid1.compartment.oc1..aaaaaaaa76x3nykkjwvctpr6px34dysu3pbg7p62h2r65fegt7fvbrioll3a` |
|
||||
| VCN `vcn-oke` | `ocid1.vcn.oc1.sa-saopaulo-1.amaaaaaasks3yliapqrmikfzagpgqohuzjqik3hx63w7r2uajiqv5krvxkda` |
|
||||
| VCN `VCN-DEV` | `ocid1.vcn.oc1.sa-saopaulo-1.amaaaaaasks3yliatoq6uvqqak3kax775ksd2jastvgsbiki7mgj6jzue6dq` |
|
||||
| API Gateway MFE hostname | `guhal72tzyekzchzamhhi3lvgi.apigateway.sa-saopaulo-1.oci.customer-oci.com` |
|
||||
| Repo Terraform | Azure DevOps — CN-Squad / Invista FIDC - Nexus / tf_oci_clusters |
|
||||
| Região | `sa-saopaulo-1` |
|
||||
| Object Storage Namespace | `grbb7qzeuoag` |
|
||||
|
||||
---
|
||||
|
||||
*Atualizado em: 2026-02-25*
|
||||
Loading…
Reference in a new issue