docs(nexus): registra migração API Gateway MFE e fixes de pipeline (2026-03-03)

- OPERATIONS.md: entrada completa com 4 fixes realizados:
  * modules/iam_domain/versions.tf (provider hashicorp vs oracle/oci)
  * ssh_public_key_path em hml/prod (../../config/ssh/ correto)
  * var.region -> var.oci_region e client_id -> name
  * migração API Gateways MFE para cmp-dev-nexus (PUBLIC, sbn-lb-1)
- OCI-DEV-NEXUS.md: corrige ssh_public_key_path na seção de tfvars
- PIPELINE-ANALISE.md: marca P6/P7 como resolvidos; atualiza tabela TF vs manual
This commit is contained in:
Tiago Ribeiro 2026-03-03 18:29:34 -03:00
parent a9202e8004
commit ab9ae3f160
3 changed files with 158 additions and 5 deletions

View file

@ -1,6 +1,6 @@
# OCI — Ambiente DEV Nexus (cmp-dev-nexus) # OCI — Ambiente DEV Nexus (cmp-dev-nexus)
> **Atualizado:** 2026-03-03 | **Responsável:** Tiago Ribeiro > **Atualizado:** 2026-03-03 (sessão 2) | **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ê. > **Foco:** Compartment `cmp-dev-nexus` — o que existe, o que o Terraform sobe e o que se comunica com o quê.
--- ---
@ -286,7 +286,7 @@ scale_mode = "up" # "up" = produtivo, "down" = econômico
# ── Bastion (debug/acesso SSH) ─────────────────────────────── # ── Bastion (debug/acesso SSH) ───────────────────────────────
enable_bastion = true enable_bastion = true
admin_cidr = "SEU_IP_PUBLICO/32" # IP liberado para SSH no bastion admin_cidr = "SEU_IP_PUBLICO/32" # IP liberado para SSH no bastion
ssh_public_key_path = "../../config/ci_ssh_key.pub" ssh_public_key_path = "../../config/ssh/ci_ssh_key.pub" # arquivo em config/ssh/
# ── API Gateway MFE ───────────────────────────────────────── # ── API Gateway MFE ─────────────────────────────────────────
enable_api_gateway_mfe = true enable_api_gateway_mfe = true

View file

@ -4,6 +4,140 @@ Registro de operacoes e incidentes na infraestrutura.
--- ---
## 2026-03-03 — Pipeline Terraform: correção de providers e migração API Gateway MFE
### Contexto
Duas sessões de trabalho nesta data. Objetivos principais:
1. Identificar e corrigir pipeline Terraform falhando desde 2026-02-25
2. Migrar recursos MFE (API Gateways + buckets) do compartment `cmp-dev-inv` para `cmp-dev-nexus`
3. Renomear gateway de `api-gateway-mfe``api-gateway` (serve MFE + MS)
4. Corrigir caminhos SSH incorretos em HML e PROD
---
### Fix 1 — Pipeline falhando desde 2026-02-25: `hashicorp/oci` vs `oracle/oci`
**Sintoma:** Pipeline `terraform-tf_oci_clusters` falhava no `terraform init` com:
```
did not find a proper configuration for private key
with provider["registry.terraform.io/hashicorp/oci"]
```
**Causa raiz:** O módulo `modules/iam_domain/` era o único sem `versions.tf`. Sem essa declaração, o Terraform resolvia o provider `oci` para o alias legado `hashicorp/oci` (em vez de `oracle/oci`). O provider legado não aceitava a chave privada do Variable Group.
**Fix:** Criado `modules/iam_domain/versions.tf`:
```hcl
terraform {
required_providers {
oci = {
source = "oracle/oci"
version = "~> 7.0"
}
time = {
source = "hashicorp/time"
version = "~> 0.11"
}
}
}
```
**Commit:** `fix(iam_domain): adiciona versions.tf com oracle/oci como provider`
**Resultado:** Pipeline run 6270 — Bootstrap e Detect Changes passaram.
---
### Fix 2 — ssh_public_key_path incorreto em HML e PROD
**Sintoma:** HML e PROD Plans falhavam com:
```
Invalid value for "path" parameter: no file exists at "../../config/ci_ssh_key.pub"
```
**Causa:** `terraform.ci.tfvars` de HML e PROD apontavam para `../../config/ci_ssh_key.pub`, mas o arquivo está em `../../config/ssh/ci_ssh_key.pub` (subdiretório `ssh/`). DEV já usava o caminho correto.
**Fix:**
- `environments/hml/terraform.ci.tfvars`: `../../config/ci_ssh_key.pub``../../config/ssh/ci_ssh_key.pub`
- `environments/prod/terraform.ci.tfvars`: mesma correção
**Commit:** `fix(ci): corrige caminho ssh_public_key_path em hml e prod`
---
### Fix 3 — Variável `var.region` e atributo `client_id` (sessão anterior)
**Corrigido em sessão anterior (2026-03-03 manhã):**
- `api_gateway_mfe.tf`: `var.region``var.oci_region` (variável não declarada)
- `modules/iam_domain/main.tf`: `.client_id``.name` (atributo não suportado no provider v7)
---
### Migração — API Gateway MFE para cmp-dev-nexus
**Situação anterior:**
- 2 API Gateways PUBLIC em `cmp-dev-inv` (criados manualmente)
- 1 API Gateway PRIVATE em `cmp-dev-nexus` (criado manualmente, mfe-shell-dev)
- Bucket `mfe-shell-dev` em `cmp-dev-inv`
- Os outros 5 buckets MFE também estavam espalhados
**Ação:** Deletar todos os gateways MFE manuais via OCI CLI, recriar via Terraform em `cmp-dev-nexus`.
**Recursos deletados via OCI CLI:**
| Recurso | OCID (sufixo) | Compartment |
|---------|--------------|-------------|
| api-gateway-mfe-shell-dev (PUBLIC) | `…bdiquogy2pqy…` | cmp-dev-inv |
| api-gateway-mfe-dev (PUBLIC) | `…bjlibdhd5wqhf7…` | cmp-dev-inv |
| api-gateway-mfe-shell-dev (PRIVATE) | `…pkj6keuum…` | cmp-dev-nexus |
| Bucket mfe-shell-dev | (objetos bulk-deletados antes) | cmp-dev-inv |
> **PRESERVADO:** `api-gateway-nexus-dev` (PRIVATE, 11 deployments para backend MSes) — NÃO foi deletado.
**Mudanças no Terraform (`environments/dev/api_gateway_mfe.tf`):**
```hcl
# Antes:
compartment_id = local.compartment_id # cmp-dev-inv
subnet_id = module.network.api_gateway_subnet_id # sbn-api-gateway (PRIVADA)
display_name = "api-gateway-mfe" # nome: api-gateway-mfe-dev
# endpoint_type não definido (default PRIVATE)
# Depois:
compartment_id = local.cluster_compartment_id # cmp-dev-nexus
subnet_id = module.network.lb_subnet_ids[0] # sbn-lb-1 (PÚBLICA, obrigatória para PUBLIC GW)
endpoint_type = "PUBLIC"
display_name = "api-gateway" # nome: api-gateway-dev (genérico, serve MFE + MS)
```
**Mudanças no módulo (`modules/api_gateway_mfe/variables.tf`):**
- Removido atributo `hostname` do tipo `mfe_deployments` (não usado no main.tf, não fornecido pelos callers)
**Resultado esperado após apply (pipeline 6270 DEV Apply):**
- `api-gateway-dev` (PUBLIC) em `cmp-dev-nexus`, subnet `sbn-lb-1`
- 6 buckets `mfe-*-dev` em `cmp-dev-nexus`
- 6 deployments no gateway (um por MFE)
**Aprovação do DEV Apply:** Aprovada via API Azure DevOps em 2026-03-03T21:25:42Z.
---
### Por que PUBLIC Gateway requer subnet PÚBLICA
A subnet `sbn-api-gateway` (10.110.192.0/20) tem `prohibit_public_ip_on_vnic = true` — não pode hospedar API Gateway PUBLIC. A única opção é a `sbn-lb-1` (10.110.128.0/20), que é pública (mesma subnet dos OKE Load Balancers).
---
### Estado dos pipelines em 2026-03-03 (fim do dia)
| Pipeline run | Status | Motivo |
|-------------|--------|--------|
| 6270 Bootstrap | ✅ succeeded | — |
| 6270 DEV Plan | ✅ succeeded | — |
| 6270 DEV Apply | ⏳ em andamento | aprovado 21:25 BRT |
| 6270 HML Plan | ❌ falhou | ssh_public_key_path errado (corrigido em 6271) |
| 6270 PROD Plan | ❌ falhou | ssh_public_key_path errado (corrigido em 6271) |
| 6271 | 🔄 pending | aguarda conclusão do push às 21:26 BRT |
---
## 2026-02-23 - Investigacao: Acesso Publico MFE e Decisao de Arquitetura ## 2026-02-23 - Investigacao: Acesso Publico MFE e Decisao de Arquitetura
### Contexto ### Contexto

View file

@ -1,6 +1,6 @@
# Análise de Pipelines — MFEs e Microserviços # Análise de Pipelines — MFEs e Microserviços
> **Data:** 2026-03-01 | **Escopo:** O que existe, o que está faltando e o que impede o ambiente de subir. > **Data:** 2026-03-01 | **Atualizado:** 2026-03-03 | **Escopo:** O que existe, o que está faltando e o que impede o ambiente de subir.
--- ---
@ -134,6 +134,24 @@ O arquivo `k8s/overlays/oci/oci-credentials.yaml` do ms-auth-external (e possive
--- ---
### ~~🔴 P6 — Pipeline Terraform falhando desde 2026-02-25: provider hashicorp/oci~~ ✅ RESOLVIDO 2026-03-03
**Sintoma:** `terraform init` falhava com `did not find a proper configuration for private key with provider["registry.terraform.io/hashicorp/oci"]`
**Causa:** `modules/iam_domain/` sem `versions.tf` → Terraform resolvia `oci` para `hashicorp/oci` (legado) em vez de `oracle/oci`.
**Fix:** Criado `modules/iam_domain/versions.tf` com `source = "oracle/oci"`. Commit `fix(iam_domain): adiciona versions.tf com oracle/oci como provider`
---
### ~~🔴 P7 — ssh_public_key_path incorreto em HML e PROD~~ ✅ RESOLVIDO 2026-03-03
**Sintoma:** HML e PROD Plans falhavam: `no file exists at "../../config/ci_ssh_key.pub"`
**Fix:** Corrigido para `../../config/ssh/ci_ssh_key.pub` em `hml/terraform.ci.tfvars` e `prod/terraform.ci.tfvars`. Commit `fix(ci): corrige caminho ssh_public_key_path em hml e prod`
---
## O que está no Terraform vs o que não está ## O que está no Terraform vs o que não está
### ✅ Gerenciado pelo Terraform (`tf_oci_clusters`) ### ✅ Gerenciado pelo Terraform (`tf_oci_clusters`)
@ -144,8 +162,9 @@ O arquivo `k8s/overlays/oci/oci-credentials.yaml` do ms-auth-external (e possive
| 3 clusters OKE (nexus, barramento, observabilidade) | ✅ Terraform | | 3 clusters OKE (nexus, barramento, observabilidade) | ✅ Terraform |
| 9 node pools (VM.Standard.E4.Flex 2cpu/16GB) | ✅ Terraform | | 9 node pools (VM.Standard.E4.Flex 2cpu/16GB) | ✅ Terraform |
| ArgoCD (Helm, instalado via Terraform null_resource) | ✅ Terraform | | ArgoCD (Helm, instalado via Terraform null_resource) | ✅ Terraform |
| API Gateway MFE (`api-gateway-mfe-dev`) | ✅ Terraform | | API Gateway PUBLIC `api-gateway-dev` (em `cmp-dev-nexus`, subnet `sbn-lb-1`) | ✅ Terraform |
| Subnet `sbn-api-gateway` (10.110.192.0/20) | ✅ Terraform | | 6 buckets MFE `mfe-*-dev` (em `cmp-dev-nexus`) | ✅ Terraform |
| Subnet `sbn-api-gateway` (10.110.192.0/20) — disponível, não usada | ✅ Terraform |
| Bastion host (quando `enable_bastion=true`) | ✅ Terraform | | Bastion host (quando `enable_bastion=true`) | ✅ Terraform |
| Alarms OCI Monitoring (CPU) | ✅ Terraform | | Alarms OCI Monitoring (CPU) | ✅ Terraform |
| Remote state (bucket `tfstate-terraform`) | ✅ Terraform | | Remote state (bucket `tfstate-terraform`) | ✅ Terraform |