Files
Vendaweb-api/KUBERNETES.md
Joelbrit0 3b8b079123
Some checks failed
Deploy NestJS API / build-and-push-deploy (push) Failing after 8s
docs: add kubernetes and workflow documentation
2026-01-29 11:28:35 -03:00

3.1 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: 15 (Configuração base)
  • Imagem: 172.35.0.216/library/vendaweb-api:latest
  • Porta do Container: 8065
  • 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: digest da imagem, configurações específicas de serviço) 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-api (Nota: O patch define vendaweb-prod, verifique a consistência)
  • 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.