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:
parent
a9202e8004
commit
ab9ae3f160
3 changed files with 158 additions and 5 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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 |
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue