5.4 KiB
5.4 KiB
Passo a Passo: Deploy mfe-user para OCI
Visão Geral
Este guia mostra como fazer o deploy do mfe-user (Micro Frontend) para a OCI usando:
- Object Storage para arquivos estáticos
- API Gateway para servir o MFE
- OCI CLI via Azure DevOps
Estado Atual da Infraestrutura
| Recurso | Status | Ação Necessária |
|---|---|---|
| VCN (Dev) | ✅ Existe | Nenhuma |
| Subnet (sbn-lb-1) | ✅ Existe | Nenhuma |
| API Gateway | ❌ Não existe | Pipeline cria |
| Bucket | ❌ Não existe | Pipeline cria |
| PAR | ❌ Não existe | Pipeline cria |
Passo 1: Configurar Variable Group
No Azure DevOps: Project Settings → Pipelines → Library → Variable Groups
Variáveis necessárias no oci-terraform
| Variável | Tipo | Valor |
|---|---|---|
OCI_TENANCY_OCID |
Secret | OCID da tenancy |
OCI_USER_OCID |
Secret | OCID do usuário |
OCI_FINGERPRINT |
Secret | Fingerprint da chave |
OCI_PRIVATE_KEY_B64 |
Secret | Chave privada (base64) |
OCI_REGION |
普通 | sa-saopaulo-1 |
COMPARTMENT_PARENT_OCID |
Secret | ocid1.compartment.oc1..aaaaaaaa76x3nykkjwvctpr6px34dysu3pbg7p62h2r65fegt7fvbrioll3a |
OCI_SUBNET_OCID |
Secret | ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaa2ezw57uocis6s2eioypdsnt2p4pwm4fwnjz5jdaqigrm6jaqexeq |
Passo 2: Executar Pipeline
A pipeline cria automaticamente:
- Bucket
mfe-user-devno Object Storage - Upload dos arquivos do build
- Pre-Authenticated Request (PAR)
- API Gateway com deployment
Via Azure DevOps
- Vá no repositório
mfe-user - Faça push para branch
devops - Execute a pipeline
azure-pipelines.yml - Parâmetro
cloudProvider:oci
Fluxo da Pipeline
┌─────────────┐
│ BUILD │ → npm ci + npm run build:dev
└─────────────┘
│
▼
┌─────────────┐
│ UPLOAD │ → Upload para OCI Object Storage
│ (OCI) │ Bucket: mfe-user-dev
└─────────────┘
│
▼
┌─────────────┐
│ CREATEPAR │ → Cria Pre-Authenticated Request
└─────────────┘
│
▼
┌─────────────┐
│ DEPLOY API │ → Cria/Atualiza API Gateway
│ GATEWAY │ Gateway: mfe-user-gateway
└─────────────┘
Passo 3: Obter URL do API Gateway
oci api-gateway gateway list \
--compartment-id "ocid1.compartment.oc1..aaaaaaaa76x3nykkjwvctpr6px34dysu3pbg7p62h2r65fegt7fvbrioll3a"
URL: https://<gateway-ocid>.apigateway.sa-saopaulo-1.oci.customer-oci.com
Passo 4: Testar
Acesse no navegador:
https://<gateway-ocid>.apigateway.sa-saopaulo-1.oci.customer-oci.com/
Ambientes
| Ambiente | Bucket | Subnet |
|---|---|---|
| Dev | mfe-user-dev |
sbn-lb-1 |
| HML | mfe-user-hml |
(definir) |
| PROD | mfe-user-prod |
(definir) |
Troubleshooting
O que acontece se disparar a pipeline sem configuração?
| Estágio | Se faltar configuração | Resultado |
|---|---|---|
| BUILD | - | ✅ Sempre funciona |
| UPLOADTOOCI | - | ✅ Bucket criado automaticamente |
| CREATEPAR | - | ✅ PAR criado automaticamente |
| DEPLOYTOAPIGW | OCI_SUBNET_OCID não configurado |
❌ ERRO |
| DEPLOYTOAPIGW | Subnet não existe | ❌ ERRO |
Recursos Criados Automaticamente pela Pipeline
| Recurso | Criado Automaticamente? |
|---|---|
Bucket mfe-user-dev |
✅ Sim |
PAR mfe-user-dev-par |
✅ Sim |
API Gateway mfe-user-gateway |
✅ Sim (se subnet existir) |
Deployment mfe-user-deployment |
✅ Sim |
Recursos Obrigatórios (devem existir antes)
| Recurso | Status Dev |
|---|---|
| VCN | ✅ Já existe |
| Subnet (sbn-lb-1) | ✅ Já existe |
OCI_SUBNET_OCID no Variable Group |
❌ Precisa adicionar |
Cenário: Disparar sem OCI_SUBNET_OCID
BUILD → ✅ Sucesso
UPLOADTOOCI → ✅ Sucesso (bucket criado)
CREATEPAR → ✅ Sucesso (PAR criado)
DEPLOYTOAPIGW → ❌ ERRO: subnet não encontrada
Resultado: Bucket e PAR criados, mas API Gateway falha.
Solução: Adicionar OCI_SUBNET_OCID e reexecutar a pipeline.
Problemas Comuns
| Problema | Causa | Solução |
|---|---|---|
| Pipeline falha no API Gateway | OCI_SUBNET_OCID não configurada |
Adicionar no Variable Group |
| 403 Forbidden | PAR expirou | Executar pipeline novamente |
| Arquivos não carregam (404) | Rotas incorretas | Verificar rota /{req.*} |
Comandos Úteis
# Listar buckets
oci os bucket list --compartment-id <compartment-id>
# Listar objetos no bucket
oci os object list --namespace-name "grbb7qzeuoag" --bucket-name "mfe-user-dev"
# Listar API Gateways
oci api-gateway gateway list --compartment-id <compartment-id>
# Ver deployment
oci api-gateway deployment get --deployment-id <deployment-id>
# Deletar PAR antigo
oci os preauth-request delete --namespace-name "grbb7qzeuoag" --bucket-name "mfe-user-dev" --par-id <par-id>