infracloud/invista/nexus/PIPELINE-ANALISE.md

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

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 RESOLVIDO 2026-03-01

Análise realizada em 2026-03-01: O VG estava completo. Os templates têm fallback automático para a maioria das variáveis listadas. Ações realizadas:

  • OKE_CLUSTER_OCIDnão necessária: script lê de config/oke-clusters.json no repo templates
  • OCIR_REGISTRY, OCIR_NAMESPACE, OCIR_USERNAMEnão necessárias: auto-resolvidas via OCI CLI
  • ARGOCD_REPO_URLnão necessária: auto-resolvida via BUILD_REPOSITORY_URI
  • OCIR_REPOSITORY_NAME = ms-auth-externalremovida do VG (sobrescrevia o nome correto de cada MS)
  • VG ms-parameters-devcriado (ID: 40, era o único VG per-MS ausente)

🔴 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 commit 6081eda
  • P1: Fazer merge de feature/cd-deploy-oci-okemain no repo azure-pipelines-templates PR #2135 (squash, 2026-03-01)
  • P1: Atualizar ref nos 9 MSs de feature/cd-deploy-oci-okemain (commits aplicados via API em 2026-03-01)
  • P2: Corrigir ms-barramento: trigger developdevops, default awsoci-argocd commit 0100d91
  • P3: Variable Group oci-terraform verificado e corrigido (2026-03-01)
    • VG estava completo; removido OCIR_REPOSITORY_NAME global; criado ms-parameters-dev (ID: 40)
  • P5: Rever oci-credentials.yaml nos repos MS — remover credenciais hardcoded
  • Verificar se ingress-nginx está rodando no cls-dev-nexus (namespace ingress-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)