264 lines
8.7 KiB
Markdown
264 lines
8.7 KiB
Markdown
# Análise: OCI Web Hosting para MFEs
|
|
|
|
## Base: [Oracle Documentation](https://docs.oracle.com/en/learn/oci-api-gateway-web-hosting/index.html)
|
|
|
|
---
|
|
|
|
## 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_OCID` ← **NOVO**
|
|
|
|
---
|
|
|
|
### 🟡 Pipeline - Melhorias Necessárias
|
|
|
|
#### 4. Melhorar Routes do API Gateway (SPAs)
|
|
|
|
A pipeline atual usa rota única:
|
|
```yaml
|
|
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:
|
|
|
|
```yaml
|
|
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
|
|
|
|
```yaml
|
|
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)
|
|
- [x] VCN já existe (`vcn-oke` 10.120.0.0/16)
|
|
- [x] 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
- [Terraform OCI Clusters](../tf_oci_clusters/README.md)
|
|
- [OCI - Visão Geral](./OCI.md)
|
|
- [Terraform - Importação](./OCI-TERRAFORM.md)
|
|
- [API Gateway](./OCI-API-GATEWAY.md)
|