11 KiB
Análise de Pipelines — MFEs e Microserviços
Data: 2026-03-01 | Escopo: O que existe, o que está faltando e o que impede o ambiente de subir.
Arquitetura de Deploy (MS)
push → branch devops
│
▼
Azure DevOps Pipeline (azure-pipelines.yaml)
│
├─ Stage: Build (CI) — roda em QUALQUER branch
│ └─ ci/build-template.yaml@templates (build .NET + unit/integration tests)
│
└─ Stage: Deploy_DEV — só roda se branch == devops
│
├─ job: Push_OCI
│ └─ ci/push-ocir-template.yaml → build Docker + push para OCIR (gru.ocir.io)
│
└─ deployment: Deploy_OCI
├─ cd/oci-kubeconfig.yml → gera kubeconfig do cluster OKE
├─ cd/argocd-repo-secret.yml → cria Secret do repo no ArgoCD
├─ cd/argocd-apply-app.yml → aplica Application ArgoCD (k8s/overlays/oci)
├─ cd/argocd-ensure-ingress-nginx.yml → garante ingress-nginx no cluster
├─ cd/terraform-apply-networkrules.yml → (opcional) aplica regras de rede
├─ cd/terraform-private-dns.yml → DNS privado via kubectl/ingress
├─ cd/cloudflare-dns.yml → cria CNAME no Cloudflare
└─ cd/validate-dns-http-incluster.yml → valida o deploy
Status por Microserviço
| MS | Branch trigger | Deploy target padrão | Template branch | Namespace | Cluster |
|---|---|---|---|---|---|
| ms-auth-external | devops ✅ |
oci-argocd ✅ |
main ✅ |
nexus-services | cls-dev-nexus |
| ms-auth-sso | devops ✅ |
oci-argocd ✅ |
main ✅ |
nexus-services | cls-dev-nexus |
| ms-barramento | devops ✅ |
oci-argocd ✅ |
main ✅ |
integration-hub | cls-dev-nexus |
| ms-belt | devops ✅ |
oci-argocd ✅ |
main ✅ |
nexus-services | cls-dev-nexus |
| ms-notify | devops ✅ |
oci-argocd ✅ |
main ✅ |
nexus-services | cls-dev-nexus |
| ms-parameters | devops ✅ |
oci-argocd ✅ |
main ✅ |
nexus-services | cls-dev-nexus |
| ms-person | devops ✅ |
oci-argocd ✅ |
main ✅ |
nexus-services | cls-dev-nexus |
| ms-poc | devops ✅ |
oci-argocd ✅ |
main ✅ |
nexus-services | cls-dev-nexus |
| ms-user | devops ✅ |
oci-argocd ✅ |
main ✅ |
nexus-services | cls-dev-nexus |
Status por MFE
| MFE | Branch trigger | Template branch | Bucket | Deploy target |
|---|---|---|---|---|
| mfe-shell | devops ✅ |
main ✅ |
mfe-shell-dev ✅ | OCI Object Storage |
| mfe-auth | devops ✅ |
main ✅ |
mfe-auth-dev ✅ | OCI Object Storage |
| mfe-user | devops ✅ |
main ✅ |
mfe-user-dev ✅ | OCI Object Storage |
| mfe-person | devops ✅ |
main ✅ |
mfe-person-dev ✅ | OCI Object Storage |
| mfe-formalization | devops ✅ |
main ✅ |
mfe-formalization-dev ✅ | OCI Object Storage |
| mfe-poc | devops ✅ |
main ✅ |
mfe-poc-dev ✅ | OCI Object Storage |
MFEs: pipeline mais simples e já funcional. O problema está nos MSs.
Problemas Críticos (bloqueiam o ambiente)
🔴 P1 — Templates apontando para branch feature/cd-deploy-oci-oke (não main) ✅ RESOLVIDO 2026-03-01
feature/cd-deploy-oci-oke (não main)Todos os 9 MSs têm no azure-pipelines.yaml:
resources:
repositories:
- repository: templates
type: git
name: azure-pipelines-templates
ref: refs/heads/feature/cd-deploy-oci-oke # ← branch de feature, não main!
Risco: Se essa branch for deletada (ex: após merge), todas as pipelines quebram simultaneamente.
Correção: Fazer merge da feature/cd-deploy-oci-oke para main no repo azure-pipelines-templates e atualizar todos os MSs para ref: refs/heads/main.
🔴 P2 — ms-barramento com trigger e deploy target errados ✅ RESOLVIDO 2026-03-01
# ms-barramento/azure-pipelines.yaml
condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'develop')) # ← deveria ser 'devops'
default: aws # ← deveria ser 'oci-argocd'
Resultado: Push na branch devops do ms-barramento NÃO dispara deploy para OCI.
Correção: Alterar condition para devops e default para oci-argocd.
🔴 P3 — Variable Group oci-terraform incompleto para deploy de MS
O template oci-kubeconfig.yml precisa de OKE_CLUSTER_OCID — o OCID do cluster OKE.
O template argocd-apply-app.yml precisa de OCIR_USERNAME, OCIR_AUTH_TOKEN.
Variáveis que podem estar faltando no VG oci-terraform:
| Variável | Necessário para | Observação |
|---|---|---|
OKE_CLUSTER_OCID |
kubeconfig do cluster | Específico por cluster |
OCI_CLUSTER_OCID_OVERRIDE |
override de cluster | Opcional |
OCIR_REGISTRY |
push Docker image | gru.ocir.io |
OCIR_NAMESPACE |
push Docker image | grbb7qzeuoag |
OCIR_REPOSITORY_NAME |
push Docker image | nome do repo no OCIR |
OCIR_USERNAME |
pull secret no K8s | grbb7qzeuoag/<email_oci> |
OCIR_AUTH_TOKEN |
pull secret no K8s | Auth Token OCI |
ARGOCD_REPO_URL |
URL do repo no ArgoCD | URL Azure DevOps do MS |
ARGOCD_REPO_PAT |
PAT para ArgoCD clonar | PAT Azure DevOps |
🔴 P4 — ArgoCD com URL Git quebrada ✅ RESOLVIDO 2026-03-01
argocd/application-dev.yaml (no tf_oci_clusters):
repoURL: https://dev.azure.com/CN-Squad/Invista%20FIDC%20-%20Nexus/_gitinvista-config
# ↑ falta / aqui
Deve ser:
repoURL: https://dev.azure.com/CN-Squad/Invista%20FIDC%20-%20Nexus/_git/invista-config
🔴 P5 — Credenciais OCI hardcoded no k8s/overlays/oci
O arquivo k8s/overlays/oci/oci-credentials.yaml do ms-auth-external (e possivelmente outros) contém OCIDs e chave privada OCI diretamente no repositório Git.
Risco: Credenciais expostas no código. Qualquer pessoa com acesso ao repo tem as credenciais.
Correção: Usar Kubernetes External Secrets ou passar via pipeline sem commitar.
O que está no Terraform vs o que não está
✅ Gerenciado pelo Terraform (tf_oci_clusters)
| Recurso | Estado |
|---|---|
VCN vcn-oke (10.110.0.0/16) + subnets |
✅ Terraform |
| 3 clusters OKE (nexus, barramento, observabilidade) | ✅ Terraform |
| 9 node pools (VM.Standard.E4.Flex 2cpu/16GB) | ✅ Terraform |
| ArgoCD (Helm, instalado via Terraform null_resource) | ✅ Terraform |
API Gateway MFE (api-gateway-mfe-dev) |
✅ Terraform |
Subnet sbn-api-gateway (10.110.192.0/20) |
✅ Terraform |
Bastion host (quando enable_bastion=true) |
✅ Terraform |
| Alarms OCI Monitoring (CPU) | ✅ Terraform |
Remote state (bucket tfstate-terraform) |
✅ Terraform |
❌ Manual / Fora do Terraform
| Recurso | Como existe | Risco |
|---|---|---|
| VCN-DEV (10.6.0.0/16) | Manual OCI Console | Sem IaC, sem rastreabilidade |
api-gateway-nexus-dev |
Manual OCI Console | Sem IaC |
LB Test_Crivo_Dev |
Manual OCI Console | Sem IaC |
| DRG-Invista-Shared | Manual OCI Console | Sem IaC |
Buckets MFE (mfe-*-dev) |
Criados pelas pipelines | OK para DEV |
| OCIR repositories | Auto-criados no push | OK |
| ArgoCD Applications | Criados pela pipeline de cada MS | OK, mas depende de ArgoCD funcionar |
| Cloudflare DNS | Manual/pipeline | Pendente |
| Variable Groups Azure DevOps | Manual | Parcialmente configurado |
Fluxo para o Ambiente Subir — Checklist
Pré-requisitos (uma vez)
- P4: Corrigir URL Git no
argocd/application-dev.yaml✅ commit6081eda - P1: Fazer merge de
feature/cd-deploy-oci-oke→mainno repoazure-pipelines-templates✅ PR #2135 (squash, 2026-03-01) - P1: Atualizar ref nos 9 MSs de
feature/cd-deploy-oci-oke→main✅ (commits aplicados via API em 2026-03-01) - P2: Corrigir ms-barramento: trigger
develop→devops, defaultaws→oci-argocd✅ commit0100d91 - P3: Verificar e completar Variable Group
oci-terraform:OKE_CLUSTER_OCID= OCID do clustercls-dev-nexusOCIR_USERNAME=grbb7qzeuoag/<email_oci_user>OCIR_AUTH_TOKEN= Auth Token do usuário OCIARGOCD_REPO_PAT= PAT Azure DevOps (já pode existir)
- P5: Rever
oci-credentials.yamlnos repos MS — remover credenciais hardcoded - Verificar se ingress-nginx está rodando no
cls-dev-nexus(namespaceingress-nginx) - Verificar se ArgoCD está acessível após correção da URL
Deploy dos MSs (em ordem)
1. ms-auth-external → push na branch devops
2. ms-auth-sso → push na branch devops
3. ms-user → push na branch devops
4. ms-belt → push na branch devops
5. ms-person → push na branch devops
6. ms-poc → push na branch devops
7. ms-notify → push na branch devops
8. ms-parameters → push na branch devops
9. ms-barramento → após correção P2, push na branch devops
Deploy dos MFEs (já funcional, mas sem DNS)
mfe-shell, mfe-auth, mfe-user, mfe-person, mfe-formalization, mfe-poc
→ push na branch devops de cada repo
→ build + upload para OCI Object Storage
Bloqueio MFEs: DNS Cloudflare + VCN peering pendentes (usuário acessa via URL direta do API Gateway por enquanto).
O que cada MS precisa para funcionar completamente
| Dependência | Responsável | Status |
|---|---|---|
| OKE cluster disponível | Terraform | ✅ |
| ArgoCD instalado | Terraform | ✅ (mas URL quebrada) |
| OCIR registry acessível | OCI (auto) | ✅ |
| ingress-nginx rodando | ArgoCD/pipeline | ❓ verificar |
oci-terraform VG completo |
Azure DevOps admin | ❓ verificar |
Per-MS Variable Group (ms-{name}-dev) |
Azure DevOps admin | ❓ verificar |
argocd-repo-secret no cluster |
Pipeline (auto) | ✅ (cria no deploy) |
DNS Cloudflare ms-{name}.dev.invista.com.br |
Pipeline (auto) | ❓ CLOUDFLARE_API_TOKEN |
Outros Repos Relevantes
| Repo | Tipo | Observação |
|---|---|---|
nats-k8s-config |
Mensageria | Configuração NATS para K8s — usado por MSs de eventos |
o11y-* (5 repos) |
Observabilidade | Prometheus, Grafana, Jaeger, Victoria Metrics/Logs — cluster observabilidade |
database |
DB migrations | Migrations SQL — deve rodar antes dos MSs |
InvistaFIDC.Lib.* |
Bibliotecas .NET | Publicadas no Azure Artifacts, consumidas pelos MSs |
azure-pipelines-templates |
Templates CI/CD | Branch feature/cd-deploy-oci-oke é o problema central |
Ação Imediata Recomendada (por prioridade)
1. [5 min] Corrigir ArgoCD URL no application-dev.yaml (tf_oci_clusters)
2. [30 min] Verificar/completar Variable Group oci-terraform
3. [30 min] Merge feature/cd-deploy-oci-oke → main no azure-pipelines-templates
4. [30 min] Atualizar ref nos 9 MSs para main (ou criar PR)
5. [5 min] Corrigir ms-barramento trigger + default
6. [1h] Verificar se ingress-nginx e ArgoCD estão healthy no cls-dev-nexus
7. [Deploy] Push devops em cada MS, em ordem, monitorando o ArgoCD
Atualizado em: 2026-03-01 — Análise baseada em leitura direta dos repos Azure DevOps (branch devops)