From ab9ae3f16024b3cf4c7c47f3024696df506f9469 Mon Sep 17 00:00:00 2001 From: Tiago Ribeiro Date: Tue, 3 Mar 2026 18:29:34 -0300 Subject: [PATCH] =?UTF-8?q?docs(nexus):=20registra=20migra=C3=A7=C3=A3o=20?= =?UTF-8?q?API=20Gateway=20MFE=20e=20fixes=20de=20pipeline=20(2026-03-03)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- invista/nexus/OCI-DEV-NEXUS.md | 4 +- invista/nexus/OPERATIONS.md | 134 ++++++++++++++++++++++++++++++ invista/nexus/PIPELINE-ANALISE.md | 25 +++++- 3 files changed, 158 insertions(+), 5 deletions(-) diff --git a/invista/nexus/OCI-DEV-NEXUS.md b/invista/nexus/OCI-DEV-NEXUS.md index 35c575a..574afa9 100644 --- a/invista/nexus/OCI-DEV-NEXUS.md +++ b/invista/nexus/OCI-DEV-NEXUS.md @@ -1,6 +1,6 @@ # 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ê. --- @@ -286,7 +286,7 @@ 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" +ssh_public_key_path = "../../config/ssh/ci_ssh_key.pub" # arquivo em config/ssh/ # ── API Gateway MFE ───────────────────────────────────────── enable_api_gateway_mfe = true diff --git a/invista/nexus/OPERATIONS.md b/invista/nexus/OPERATIONS.md index 00ee13a..6a8c105 100644 --- a/invista/nexus/OPERATIONS.md +++ b/invista/nexus/OPERATIONS.md @@ -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 ### Contexto diff --git a/invista/nexus/PIPELINE-ANALISE.md b/invista/nexus/PIPELINE-ANALISE.md index 38a71cd..206f2b5 100644 --- a/invista/nexus/PIPELINE-ANALISE.md +++ b/invista/nexus/PIPELINE-ANALISE.md @@ -1,6 +1,6 @@ # 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á ### ✅ 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 | | 9 node pools (VM.Standard.E4.Flex 2cpu/16GB) | ✅ Terraform | | ArgoCD (Helm, instalado via Terraform null_resource) | ✅ Terraform | -| API Gateway MFE (`api-gateway-mfe-dev`) | ✅ Terraform | -| Subnet `sbn-api-gateway` (10.110.192.0/20) | ✅ Terraform | +| API Gateway PUBLIC `api-gateway-dev` (em `cmp-dev-nexus`, subnet `sbn-lb-1`) | ✅ 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 | | Alarms OCI Monitoring (CPU) | ✅ Terraform | | Remote state (bucket `tfstate-terraform`) | ✅ Terraform |