infracloud/OCI-MFE-TASKS.md

8.7 KiB

Análise: OCI Web Hosting para MFEs

Base: Oracle Documentation


Etapas da Documentação vs. Pipeline Atual

Etapa Documentação OCI Status Pipeline mfe-user
1 Create Bucket Parcial (cria se não existir)
2 Upload Files Feito
3 Create PAR Feito
4 Create API Gateway ⚠️ Parcial (falta VCN/Subnet)
5 Setup Deployment ⚠️ Parcial
6 Add Routes Incompleto
7 Test Não testado

Estado Atual da Infraestrutura OCI (verificado em 2026-02-17)

VCNs Existentes (Dev)

Nome CIDR OCID
vcn-oke 10.120.0.0/16 ocid1.vcn.oc1.sa-saopaulo-1.amaaaaaasks3yliatayztbyd6doyk5oglrmrc57jekltu3xnnena6fvruwba
vcn-oke 10.110.0.0/16 (múltiplas)

Subnets Existentes (VCN 10.120.0.0/16)

Nome CIDR Tipo OCID
sbn-workers-1 10.120.0.0/20 Workers ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaazfomdghi4x4jpluyjooy7ajvsf5y57jq2xcqwf35guodkcn2wrwq
sbn-workers-2 10.120.16.0/20 Workers ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaahaqguwt67kzs2dad2vyz3zpjl5ac7ximeqg55gmsnd33c2qikija
sbn-workers-3 10.120.32.0/20 Workers ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaafzhmhvz2scr6sfsygixz2gjfnecggiirh3rvyhjcmfn3ohmohj6a
sbn-lb-1 10.120.128.0/20 Load Balancer ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaa2ezw57uocis6s2eioypdsnt2p4pwm4fwnjz5jdaqigrm6jaqexeq
sbn-lb-2 10.120.144.0/20 Load Balancer ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaav7qtnmgil2qdt3lz6fnqkdcbymjd2dtjjeyo6y7z3s2omq4uvcqa

API Gateways

Nome Status
- Nenhum criado

Buckets (Object Storage)

Nome Status
- Nenhum criado

Recomendação: Usar Subnet Existente

Para o API Gateway, podemos usar a subnet de Load Balancer existente:

  • sbn-lb-1: ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaa2ezw57uocis6s2eioypdsnt2p4pwm4fwnjz5jdaqigrm6jaqexeq

Atividades Necessárias para Completar o Setup OCI

🔴 Crítico - Infraestrutura OCI

1. Criar/Configurar VCN (Virtual Cloud Network)

  • Descrição: API Gateway precisa de uma VCN com subnets
  • Status: Precisa ser criado via Terraform
  • Responsável: Infraestrutura

2. Obter Subnet OCID para API Gateway

  • Descrição: Cada API Gateway precisa de uma subnet dedicada
  • Status: Variável OCI_SUBNET_OCID não existe no Variable Group

3. Criar Variable Group oci-terraform no Azure DevOps

  • Variáveis necessárias:
    • OCI_USER_OCID
    • OCI_TENANCY_OCID
    • OCI_REGION
    • OCI_FINGERPRINT
    • OCI_PRIVATE_KEY_B64
    • OCI_COMPARTMENT_OCID
    • OCI_SUBNET_OCIDNOVO

🟡 Pipeline - Melhorias Necessárias

4. Melhorar Routes do API Gateway (SPAs)

A pipeline atual usa rota única:

routes:
  - path: /{req.*}
    methods: [GET]
    backend:
      type: HTTP
      url: "${PAR_URL}"

Problema: Não funciona bem para SPAs (Angular) que precisam de:

  • / → retorna index.html
  • /route1 → retorna index.html (SPA routing)
  • *.js → retorna JavaScript
  • *.css → retorna CSS
  • *.html → retorna HTML

Solução: Implementar rotas múltiplas conforme documentação:

routes:
  # Rota default - index.html para SPA
  - path: /{req.*}
    methods: [GET]
    backend:
      type: HTTP
      url: "${PAR_URL}/${request.path[req]}"

  # Regras específicas por tipo de arquivo
  - path: /{ext}.js
    methods: [GET]
    backend:
      type: HTTP
      url: "https://{namespace}.objectstorage.{region}.oci.customer-oci.com/n/{bucket}/o/${request.path[req]}"

  # wildcard *.js, *.css, etc.

5. Suporte a Múltiplos Ambientes

Ambiente Bucket API Gateway
Dev nexus-{mfe}-dev {mfe}-dev-gateway
HML nexus-{mfe}-hml {mfe}-hml-gateway
PROD nexus-{mfe}-prod {mfe}-prod-gateway

6. Tratar Variáveis por Ambiente

parameters:
  - name: environment
    type: string
    values:
      - dev
      - hml
      - prod

🟢 MFEs que Precisam de Pipeline OCI

MFE Pipeline AWS Pipeline OCI Prioridade
mfe-user ⚠️ Incompleta Alta
mfe-shell Não existe Alta
mfe-auth Não existe Alta
mfe-person Não existe Média
mfe-poc Não existe Baixa
mfe-formalization Não existe Baixa

🔧 Variable Group oci-terraform

O Variable Group oci-terraform no Azure DevOps contém as credenciais OCI usadas tanto pelo Terraform (para criar infraestrutura) quanto pelas pipelines de deploy MFE.

Variáveis Existentes (usadas pelo Terraform)

Variável Tipo Descrição
OCI_TENANCY_OCID Secret OCID da Tenancy OCI
OCI_USER_OCID Secret OCID do Usuário OCI
OCI_FINGERPRINT Secret Fingerprint da chave pública (~47 chars)
OCI_PRIVATE_KEY_B64 Secret Chave privada (Base64 ou PEM)
OCI_REGION 普通 Região OCI (ex: sa-saopaulo-1)
COMPARTMENT_PARENT_OCID Secret OCID do compartment pai

Variáveis FALTANDO para API Gateway (precisam ser adicionadas)

Variável Tipo Descrição
OCI_SUBNET_OCID Secret OCID da Subnet para API Gateway

Onde o oci-terraform é usado

  1. Terraform OCI (tf_oci_clusters):

    • Criar VCNs, Subnets, OKE Clusters
    • Criar Buckets (se necessário via Terraform)
  2. Pipelines MFE OCI:

    • mfe-user/azure-pipelines-oci.yml ← usa este grupo
    • Upload de arquivos para Object Storage
    • Criar PAR (Pre-Authenticated Request)
    • Deploy no API Gateway

Fluxo Completo

┌─────────────────────────────────────────────────────────────────┐
│ 1. Terraform (tf_oci_clusters) usa oci-terraform              │
│    └── Cria: VCN, Subnets, OKE Clusters, Buckets               │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│ 2. Pipeline MFE usa oci-terraform                               │
│    └── Upload → Object Storage                                 │
│    └── Create PAR                                              │
│    └── Deploy → API Gateway                                    │
└─────────────────────────────────────────────────────────────────┘

Checklist de Atividades

Infraestrutura (Terraform)

  • VCN já existe (vcn-oke 10.120.0.0/16)
  • Subnets já existem (sbn-lb-1 pode ser usada para API Gateway)
  • Criar subnet dedicada para API Gateway (opcional, pode usar sbn-lb-1)
  • Adicionar OCI_SUBNET_OCID ao Variable Group oci-terraform

Azure DevOps

  • Adicionar OCI_SUBNET_OCID ao Variable Group oci-terraform
    • Valor sugerido: ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaa2ezw57uocis6s2eioypdsnt2p4pwm4fwnjz5jdaqigrm6jaqexeq (sbn-lb-1)
  • Criar pipelines para todos os MFEs

Pipeline mfe-user

  • Testar pipeline existente
  • Corrigir rotas para SPA (Angular)
  • Adicionar suporte a múltiplos ambientes (dev/hml/prod)
  • Tratar fallback para index.html

Novos MFEs (criar pipelines)

  • mfe-shell → OCI
  • mfe-auth → OCI
  • mfe-person → OCI
  • mfe-poc → OCI
  • mfe-formalization → OCI + AWS (primeira pipeline)

Comandos Úteis OCI

# Listar VCNs
oci network vcn list --compartment-id <compartment-id>

# Listar Subnets
oci network subnet list --compartment-id <compartment-id> --vcn-id <vcn-id>

# Listar API Gateways
oci api-gateway gateway list --compartment-id <compartment-id>

# Verificar deployment
oci api-gateway deployment get --deployment-id <id>

Referências