infracloud/OCI.md

460 lines
16 KiB
Markdown

# OCI - Oracle Cloud Infrastructure
Este documento documenta a configuração e deployments relacionados à Oracle Cloud Infrastructure (OCI) para os projetos **Invent Cloud** e **Nexus**.
## Projetos
### Invent Cloud
- **Empresa**: Invista
- **Projeto**: Invent Finance
- **Local**: `C:\dev\inventcloud\invent-finance\`
- **Repositório Azure DevOps**: Invent-finance
### Nexus (MFE - Micro Frontends)
- **Empresa**: Invista
- **Repositório Base**: `C:\dev\C:devrepos_mfe\`
- **Templates Pipeline**: `C:\dev\repos_mfe\azure-pipelines-templates\`
## Compartimentos OCI
| Ambiente | Compartment OCID |
|----------|------------------|
| Dev | `ocid1.compartment.oc1..aaaaaaaa76x3nykkjwvctpr6px34dysu3pbg7p62h2r65fegt7fvbrioll3a` |
| HML | `ocid1.compartment.oc1..aaaaaaaawc3hj6isbiibbiuokijw7le72ga3qa3qyblsdhrkj5gdygskzmwq` |
| PROD | `ocid1.compartment.oc1..aaaaaaaazjxk5dkwleol3hjq7huojevotvnjhvy5ngro4jtwcqx2fn2ujara` |
### Namespace OCI
- **Namespace**: `grbb7qzeuoag`
---
## Infraestrutura Existente (Dev)
### VCN - Virtual Cloud Network
| Nome | CIDR | OCID |
|------|------|------|
| vcn-oke | 10.120.0.0/16 | `ocid1.vcn.oc1.sa-saopaulo-1.amaaaaaasks3yliatayztbyd6doyk5oglrmrc57jekltu3xnnena6fvruwba` |
### Subnets
| Nome | CIDR | Tipo | OCID |
|------|------|------|------|
| 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` |
| sbn-workers-1 | 10.120.0.0/20 | OKE Workers | `ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaazfomdghi4x4jpluyjooy7ajvsf5y57jq2xcqwf35guodkcn2wrwq` |
| sbn-workers-2 | 10.120.16.0/20 | OKE Workers | `ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaahaqguwt67kzs2dad2vyz3zpjl5ac7ximeqg55gmsnd33c2qikija` |
| sbn-workers-3 | 10.120.32.0/20 | OKE Workers | `ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaafzhmhvz2scr6sfsygixz2gjfnecggiirh3rvyhjcmfn3ohmohj6a` |
### Subnet para API Gateway
Usar **sbn-lb-1** para deploy do API Gateway:
```
OCI_SUBNET_OCID=ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaa2ezw57uocis6s2eioypdsnt2p4pwm4fwnjz5jdaqigrm6jaqexeq
```
---
## Buckets OCI
**Status**: ✅ Bucket `mfe-user-dev` criado via pipeline
| Bucket | Ambiente | Uso |
|--------|----------|-----|
| mfe-user-dev | Dev | MFE User static hosting |
## API Gateways
**Status**: ✅ API Gateway criado via pipeline
| Gateway | Ambiente | Uso |
|---------|----------|-----|
| mfe-user-gateway | Dev | MFE User API Gateway |
## VCNs e Subnets (Dev)
### VCN Principal
- **Nome**: vcn-oke
- **CIDR**: 10.120.0.0/16
- **OCID**: `ocid1.vcn.oc1.sa-saopaulo-1.amaaaaaasks3yliatayztbyd6doyk5oglrmrc57jekltu3xnnena6fvruwba`
### Subnets Disponíveis
| Nome | CIDR | Uso | OCID |
|------|------|-----|------|
| sbn-lb-1 | 10.120.128.0/20 | Load Balancer (pode ser usada para API Gateway) | `ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaa2ezw57uocis6s2eioypdsnt2p4pwm4fwnjz5jdaqigrm6jaqexeq` |
| sbn-lb-2 | 10.120.144.0/20 | Load Balancer | `ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaav7qtnmgil2qdt3lz6fnqkdcbymjd2dtjjeyo6y7z3s2omq4uvcqa` |
| sbn-workers-1 | 10.120.0.0/20 | Workers OKE | `ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaazfomdghi4x4jpluyjooy7ajvsf5y57jq2xcqwf35guodkcn2wrwq` |
| sbn-workers-2 | 10.120.16.0/20 | Workers OKE | `ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaahaqguwt67kzs2dad2vyz3zpjl5ac7ximeqg55gmsnd33c2qikija` |
| sbn-workers-3 | 10.120.32.0/20 | Workers OKE | `ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaafzhmhvz2scr6sfsygixz2gjfnecggiirh3rvyhjcmfn3ohmohj6a` |
### Recomendação para API Gateway
Usar **sbn-lb-1** como subnet para o API Gateway:
```
OCI_SUBNET_OCID=ocid1.subnet.oc1.sa-saopaulo-1.aaaaaaaa2ezw57uocis6s2eioypdsnt2p4pwm4fwnjz5jdaqigrm6jaqexeq
```
### Comandos para verificar buckets
```bash
# Verificar namespace
oci os ns get
# Listar buckets (dev)
oci os bucket list --compartment-id "ocid1.compartment.oc1..aaaaaaaa76x3nykkjwvctpr6px34dysu3pbg7p62h2r65fegt7fvbrioll3a" --all
# Listar buckets (hml)
oci os bucket list --compartment-id "ocid1.compartment.oc1..aaaaaaaawc3hj6isbiibbiuokijw7le72ga3qa3qyblsdhrkj5gdygskzmwq" --all
# Listar buckets (prod)
oci os bucket list --compartment-id "ocid1.compartment.oc1..aaaaaaaazjxk5dkwleol3hjq7huojevotvnjhvy5ngro4jtwcqx2fn2ujara" --all
```
## MFEs - Micro Frontends
### Status dos MFEs (18/02/2026)
| Repositório | Branch Pipeline | Pipeline OCI | Bucket | Status |
|-------------|-----------------|--------------|--------|--------|
| mfe-user | devops | ✅ `azure-pipelines.yml` | mfe-user-dev | ✅ Funcionando |
| mfe-auth | devops | ✅ `azure-pipelines-oci.yml` | mfe-auth-dev | 🔄 Pipeline criada |
| mfe-person | devops | ✅ `azure-pipelines-oci.yml` | mfe-person-dev | 🔄 Pipeline criada |
| mfe-shell | devops | ✅ `azure-pipelines-oci.yml` | mfe-shell-dev | 🔄 Pipeline criada |
| mfe-poc | devops | ✅ `azure-pipelines-oci.yml` | mfe-poc-dev | 🔄 Pipeline criada |
| mfe-formalization | devops | ✅ `azure-pipelines-oci.yml` | mfe-formalization-dev | 🔄 Pipeline criada |
### Pipeline OCI - Estrutura
Todos os MFEs seguem o mesmo padrão de pipeline:
```
┌─────────────┐
│ BUILD │ → npm ci + npm run build:dev
└─────────────┘
┌─────────────┐
│ UPLOADTO │ → Upload para OCI Object Storage
│ OCI │ Bucket: mfe-<nome>-dev
└─────────────┘
┌─────────────┐
│ CREATEPAR │ → Cria Pre-Authenticated Request
└─────────────┘
```
### Arquivos de Pipeline
| MFE | Arquivo | Branch |
|-----|---------|--------|
| mfe-user | `azure-pipelines.yml` (unificado AWS+OCI) | devops |
| mfe-auth | `azure-pipelines-oci.yml` | devops |
| mfe-person | `azure-pipelines-oci.yml` | devops |
| mfe-shell | `azure-pipelines-oci.yml` | devops |
| mfe-poc | `azure-pipelines-oci.yml` | devops |
| mfe-formalization | `azure-pipelines-oci.yml` | devops |
### Variable Groups Necessários
| Variable Group | Variáveis |
|----------------|-----------|
| `oci-terraform` | `OCI_TENANCY_OCID`, `OCI_USER_OCID`, `OCI_FINGERPRINT`, `OCI_PRIVATE_KEY_B64`, `OCI_REGION`, `TF_VAR_compartment_parent_ocid` |
| `mfe-credentials` | `CLOUDFLARE_ZONE_ID`, `CLOUDFLARE_API_TOKEN` |
| `aws-credentials-dev` | Credenciais AWS (para pipeline unificada) |
### Commits Recentes (mfe-user)
- `19dced5` (18/02/2026) - chore: remove DeployToAPIGateway stage from pipeline
- `9948430` (18/02/2026) - fix: use correct variable name TF_VAR_compartment_parent_ocid
- `6836035` (18/02/2026) - fix: improve bucket creation error handling
- `fd780bd` (18/02/2026) - fix: correct OCI CLI commands for namespace
## MS-POC - Microservice POC
**Status**: ❌ **NÃO PUBLICADO EM OBJECT STORAGE**
O `ms-poc` está configurado no cluster Kubernetes (OKE) conforme `ingresses.yaml`, mas **NÃO foi publicado em nenhum Object Storage**.
### Ingressos ms-poc (Kubernetes)
```yaml
# Internal
- host: ms-poc.dev-01.interno.invista.com.br
namespace: nexus-services
# External
- host: ms-poc.dev.invista.com.br
namespace: nexus-services
```
### Próximos Passos para ms-poc
Para publicar no OCI Object Storage:
1. Criar bucket: `nexus-ms-poc-dev`
2. Criar pipeline Azure DevOps para build e upload
3. Configurar API Gateway ou usar OKE para deploy
## Clusters OKE (Oracle Kubernetes Engine)
### Clusters Disponíveis (Atualizado 20/02/2026)
#### Clusters DEV (Terraform - Nexus)
| Nome | K8s Version | Status | Endpoint Público | Endpoint Privado | ArgoCD |
|------|-------------|--------|------------------|------------------|--------|
| cls-dev-nexus | v1.34.1 | ACTIVE | 136.248.124.22:6443 | 10.110.133.10:6443 | ✅ Sim |
| cls-dev-barramento | v1.34.1 | ACTIVE | 137.131.198.242:6443 | 10.110.143.24:6443 | ❌ |
| cls-dev-observabilidade | v1.34.1 | ACTIVE | 163.176.189.0:6443 | 10.110.143.239:6443 | ❌ |
#### Clusters DEV (Legado)
| Nome | K8s Version | Status | Endpoint | Nodes |
|------|-------------|--------|----------|-------|
| dev-cls-1 | v1.34.1 | ACTIVE | 129.148.14.249:6443 | 1 |
| dev-cls-2 | v1.34.1 | ACTIVE | 192.29.141.170:6443 | 1 |
| dev-cls-3 | v1.34.1 | ACTIVE | 192.29.130.196:6443 | 1 |
#### Clusters PRD
| Nome | K8s Version | Status | Endpoint |
|------|-------------|--------|----------|
| prd-cls-1 | v1.34.1 | ACTIVE | 168.75.75.189:6443 |
| prd-cls-2 | v1.34.1 | ACTIVE | 129.159.57.212:6443 |
| prd-cls-3 | v1.34.1 | ACTIVE | 168.75.89.161:6443 |
### Cluster OCIDs
#### Clusters DEV (Terraform - Nexus)
| Nome | Cluster OCID |
|------|--------------|
| cls-dev-nexus | `ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaaxernqctehleyduukfuyfgcnmm6fuk5l4mkgdaocsdcobrewkvc3a` |
| cls-dev-barramento | `ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaancdtl3rrcblzsifl6h3vguxhj5byqldtzakgg7tv5cifn2eknv6q` |
| cls-dev-observabilidade | `ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaaxbelg5ztrdn3ca3tm5mohq363c5v6yhmjhbwlgyndcrszb62robq` |
#### Clusters DEV (Legado)
| Nome | Cluster OCID |
|------|--------------|
| dev-cls-1 | `ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaaltungrmx3r4d36wmahz5frdfrrve5zarxgj73fxz6csxkn6sthwa` |
| dev-cls-2 | `ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaa3km66vd2xw2t472cegygakgemujolgikfay4wplw6cmyljv7pfiq` |
| dev-cls-3 | `ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaavcroprepvzvhjho56j4bu7fymnrrqlzt7bagjyjeocxco2kx65uq` |
#### Clusters PRD
| Nome | Cluster OCID |
|------|--------------|
| prd-cls-1 | `ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaamwbvpuy62wuf7nghfefo4i2wlmt64hm2oy6dp6y3ncmdyncpmrva` |
| prd-cls-2 | `ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaacodepi7lmp3pt5teu5d7zqelonuuxp43ptcmdupvncnmmv6prhua` |
| prd-cls-3 | `ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaal6d462vhcm3mn7jnxvzqqdn3sbebq7he7izcfd2v5ckws6t46wfq` |
### Comando para obter kubeconfig
```bash
# cls-dev-nexus (ArgoCD + Microserviços)
oci ce cluster create-kubeconfig \
--cluster-id ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaaxernqctehleyduukfuyfgcnmm6fuk5l4mkgdaocsdcobrewkvc3a \
--file $HOME/.kube/config \
--region sa-saopaulo-1 \
--overwrite
# cls-dev-barramento
oci ce cluster create-kubeconfig \
--cluster-id ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaancdtl3rrcblzsifl6h3vguxhj5byqldtzakgg7tv5cifn2eknv6q \
--file $HOME/.kube/config \
--region sa-saopaulo-1 \
--overwrite
# cls-dev-observabilidade
oci ce cluster create-kubeconfig \
--cluster-id ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaaxbelg5ztrdn3ca3tm5mohq363c5v6yhmjhbwlgyndcrszb62robq \
--file $HOME/.kube/config \
--region sa-saopaulo-1 \
--overwrite
# prd-cls-2 (ArgoCD PROD)
oci ce cluster create-kubeconfig \
--cluster-id ocid1.cluster.oc1.sa-saopaulo-1.aaaaaaaacodepi7lmp3pt5teu5d7zqelonuuxp43ptcmdupvncnmmv6prhua \
--file $HOME/.kube/config \
--region sa-saopaulo-1 \
--overwrite
```
---
## ArgoCD
### cls-dev-nexus (DEV)
| Item | Valor |
|------|-------|
| Namespace | `argocd` |
| URL (LoadBalancer) | `http://10.110.135.3` |
| Usuário | `admin` |
| Senha | Ver arquivo `~/.ssh/oci-credentials.md` |
#### Aplicações ArgoCD (cls-dev-nexus)
| Aplicação | Sync Status | Health Status |
|-----------|-------------|---------------|
| ms-poc-dev-cls-dev-nexus | OutOfSync | Healthy |
| ms-person-dev-cls-dev-nexus | Unknown | Healthy |
| ms-user-dev-cls-dev-nexus | Unknown | Healthy |
| ms-auth-external-dev-cls-dev-nexus | OutOfSync | Degraded |
| ms-auth-sso-dev-cls-dev-nexus | OutOfSync | Healthy |
| ms-belt-dev-cls-dev-nexus | OutOfSync | Healthy |
| ms-notify-dev-cls-dev-nexus | OutOfSync | Healthy |
| ms-parameter-dev-cls-dev-nexus | OutOfSync | Healthy |
| ms-barramento-dev-cls-dev-nexus | Synced | Healthy |
| ingress-nginx | Synced | Healthy |
| ingress-nginx-external | Synced | Healthy |
### prd-cls-2 (PROD)
ArgoCD está instalado no cluster **prd-cls-2** (compartment PRD).
| Item | Valor |
|------|-------|
| Namespace | `argocd` |
| Serviço | `argocd-server` (LoadBalancer) |
| IP Interno | `10.130.128.46` |
| Porta | 80 (HTTP), 443 (HTTPS) |
| Usuário | `admin` |
| Senha | Ver secret `argocd-initial-admin-secret` no namespace `argocd` |
### Como obter a senha
```bash
kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath='{.data.password}' | base64 -d
```
---
## Microserviços Deployados (cls-dev-nexus)
### Namespace `nexus-services`
| Serviço | Réplicas | Status | Imagem |
|---------|----------|--------|--------|
| ms-poc | 2/2 | ✅ Running | OCIR |
| ms-person | 2/2 | ✅ Running | OCIR |
| ms-user | 2/2 | ✅ Running | OCIR |
| ms-auth-external | 2/3 | ⚠️ Degraded | OCIR |
| ms-auth-sso | 2/2 | ✅ Running | OCIR |
| ms-belt | 2/2 | ✅ Running | OCIR |
| ms-notify | 2/2 | ✅ Running | OCIR |
| ms-parameters | 2/2 | ✅ Running | OCIR |
### Namespace `integration-hub`
| Serviço | Réplicas | Status |
|---------|----------|--------|
| ms-barramento | 2/2 | ✅ Running |
---
## Ingress Controllers (cls-dev-nexus)
| Nome | Namespace | Tipo |
|------|-----------|------|
| ingress-nginx-controller | ingress-nginx | Interno |
| ingress-nginx-external-controller | ingress-nginx | Externo |
---
## DNS (Cloudflare)
| Record | Zone | Tipo |
|--------|------|------|
| ms-poc.dev.invista.com.br | invista.com.br | A |
| ms-person.dev.invista.com.br | invista.com.br | A |
| ms-user.dev.invista.com.br | invista.com.br | A |
---
## Pipelines Azure DevOps (Branch devops)
### Repositórios com deploy OCI
| Repositório | Cluster Default | Namespace |
|-------------|-----------------|-----------|
| ms-poc | cls-dev-nexus | nexus-services |
| ms-person | cls-dev-nexus | nexus-services |
| ms-user | cls-dev-nexus | nexus-services |
### Templates de Pipeline
| Template | Branch |
|----------|--------|
| azure-pipelines-templates | feature/cd-deploy-oci-oke |
| tf_oci_clusters | main |
---
## Problemas Conhecidos
| Problema | Serviço | Cluster | Status |
|----------|---------|---------|--------|
| CrashLoopBackOff | ms-auth-external-67fd9cf9ff-fktxc | cls-dev-nexus | Pendente investigação |
| ImagePullBackOff | nats-0 (namespace stream) | cls-dev-nexus | Pendente investigação |
## Compartimentos OCI (Completo)
### Estrutura de Compartimentos
| Nome | Descrição | Parent |
|------|-----------|--------|
| cmp-top-invista | Compartimento Root Invista | Tenancy |
| cmp-top-c6 | Compartimento Root C6 | Tenancy |
| cmp-top-cerealista | Compartimento Root Cerealista | Tenancy |
| cmp-top-gestora | Compartimento Root Gestora | Tenancy |
| Lift-root | Lift Services Compartment | Tenancy |
| OKE | Compartment pai para DEV/HML/PRD OKE | Tenancy |
| OCM | Serviço de migração de instancias | Tenancy |
### Compartimentos de Ambiente
| Nome | Descrição | Parent |
|------|-----------|--------|
| cmp-dev-inv | Compartimento Desenvolvimento | cmp-top-invista |
| cmp-hml-inv | Compartimento homologação | cmp-top-invista |
| cmp-prod-inv | Compartimento Prod | cmp-top-invista |
| cmp-shared-inv | Compartimento Shared | cmp-top-invista |
| DEV | Compartment dev | OKE |
| HML | Compartment hml | OKE |
| PRD | Compartment prd | OKE |
### Compartimentos de Projeto
| Nome | Ambiente | Descrição |
|------|----------|-----------|
| cmp-dev-c6 | Dev | Compartimento Desenvolvimento C6 |
| cmp-hml-c6 | HML | Compartimento homologação C6 |
| cmp-prod-c6 | Prod | Compartimento Prod C6 |
| cmp-dev-crivo | Dev | Crivo desenvolvimento |
| cmp-crivo-dev | Dev | Crivo desenvolvimento |
| cmp-crivo-prod | Prod | Crivo Produção |
| cmp-dev-datalake | Dev | Datalake desenvolvimento |
| cmp-prod-datalake | Prod | Datalake produção |
| cmp-dev-gest | Dev | ambiente de desenvolvimento Gestora |
| cmp-prod-gest | Prod | Compartimento Prod Gestora |
| cmp-dev-insign | Dev | Insign desenvolvimento |
| cmp-dev-mull | Dev | Mulling desenvolvimento |
| cmp-prod-mull | Prod | Mulling produção |
| cmp-dev-netfactor | Dev | Netfactor desenvolvimento |
| cmp-prod-netfactor | Prod | Netfactor produção |
| cmp-dev-nexus | Dev | Nexus desenvolvimento (Terraform) |
| cmp-hml-nexus | HML | Nexus homologação (Terraform) |
| cmp-prod-nexus | Prod | Nexus produção (Terraform) |
| cmp-prod-cer | Prod | Compartimento Prod Cerealista |
| cpm-dev-automacao | Dev | Desenvolvimento de automação |
| cmp-prod-automacao | Prod | Produção automação |
| cmp-dev-aI4finance | Dev | AI4Finance desenvolvimento |
| cmp-prod-AI4Finance | Prod | AI4Finance produção |
## Referências
- Templates Pipeline: `C:\dev\repos_mfe\azure-pipelines-templates\`
- Infra Terraform: `C:\dev\tf_oci_clusters\`
- Clusters Config: `C:\dev\repos_mfe\azure-pipelines-templates\config\oke-clusters.json`