Files
Vendaweb-api/KUBERNETES.md
Joelbrit0 fd17be5408
All checks were successful
Build (develop) / Promote (main) / build-and-push-deploy (push) Successful in 1m22s
fix: harden GitOps deploy and rollback
2026-01-29 15:21:09 -03:00

3.0 KiB

Documentação do Kubernetes

Este documento descreve a infraestrutura e configuração do Kubernetes para o projeto Vendaweb-api, utilizando uma abordagem GitOps com ArgoCD e Kustomize.

Estrutura de Diretórios e Arquivos

A configuração do Kubernetes está localizada no diretório k8s/ e segue uma estrutura organizada para facilitar a manutenção e escalabilidade:

k8s/
├── argocd/                 # Configurações do ArgoCD
│   └── application-prod.yaml # Definição da Application para o ambiente de produção
├── base/                   # Recursos base do Kubernetes (Kustomize Base)
│   ├── configmap.yaml      # ConfigMap base
│   ├── deployment.yaml     # Deployment base da aplicação
│   ├── kustomization.yaml  # Arquivo principal do Kustomize Base
│   ├── secret.yaml         # Secret base
│   └── service.yaml        # Service base
└── overlays/               # Sobrescritas para diferentes ambientes (Kustomize Overlays)
    └── prod/               # Ambiente de produção
        ├── application-prod.yaml
        ├── deployment-image-digest-patch.yaml
        ├── kustomization.yaml
        └── service-patch.yaml

Recursos Base (k8s/base)

O diretório base contém as definições padrão dos recursos que são comuns a todos os ambientes.

Deployment (deployment.yaml)

  • Nome: vendaweb-api
  • Replicas: 3 (Base) / 15 (Produção via overlay)
  • Imagem: git.simplifiquehc.com.br/simplifique/vendaweb-api:<sha>
  • Porta do Container: 8067
  • Resources:
    • Requests: CPU 100m, Memory 256Mi
    • Limits: CPU 500m, Memory 512Mi
  • Probes: Liveness, Readiness e Startup probes configurados no endpoint /v1/health.
  • Environment: Configurações carregadas via ConfigMap e Secret.

Service (service.yaml)

  • Tipo: ClusterIP
  • Porta: 8065 (TCP)

Ambientes (k8s/overlays)

Produção (k8s/overlays/prod)

A sobreposição de produção personaliza a configuração base para o ambiente produtivo.

  • Namespace: vendaweb-prod
  • Patches: Aplica modificações específicas (ex: tag da imagem, NodePort do service, replicas) via kustomization.yaml.

Deploy com ArgoCD (k8s/argocd)

O deploy é gerenciado pelo ArgoCD, que sincroniza o estado do cluster com o repositório Git.

Application (application-prod.yaml)

  • Nome: vendaweb-api-prod
  • Namespace do ArgoCD: argocd
  • Origem (Source):
    • Repositório: https://git.simplifiquehc.com.br/simplifique/Vendaweb-api.git
    • Revisão: main
    • Path: k8s/overlays/prod (Aponta para o overlay de produção)
  • Destino (Destination):
    • Cluster: https://kubernetes.default.svc
    • Namespace: vendaweb-prod
  • Sync Policy: Automatizado com selfHeal ativado e criação automática de namespace.

Observação: Certifique-se de que as credenciais do Harbor (imagePullSecrets) estejam corretamente configuradas no namespace de destino para permitir o pull da imagem.