docs: add kubernetes and workflow documentation
Some checks failed
Deploy NestJS API / build-and-push-deploy (push) Failing after 8s
Some checks failed
Deploy NestJS API / build-and-push-deploy (push) Failing after 8s
This commit is contained in:
76
KUBERNETES.md
Normal file
76
KUBERNETES.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user