191 lines
5.4 KiB
Markdown
191 lines
5.4 KiB
Markdown
# 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:
|
|
1. Bucket `mfe-user-dev` no Object Storage
|
|
2. Upload dos arquivos do build
|
|
3. Pre-Authenticated Request (PAR)
|
|
4. API Gateway com deployment
|
|
|
|
### Via Azure DevOps
|
|
|
|
1. Vá no repositório `mfe-user`
|
|
2. Faça push para branch `devops`
|
|
3. Execute a pipeline `azure-pipelines.yml`
|
|
4. 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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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>
|
|
```
|
|
|
|
---
|
|
|
|
## Referências
|
|
|
|
- [OCI-MFE-TASKS.md](./OCI-MFE-TASKS.md)
|
|
- [OCI-API-GATEWAY.md](./OCI-API-GATEWAY.md)
|
|
- [Oracle Documentation](https://docs.oracle.com/en/learn/oci-api-gateway-web-hosting/index.html)
|