Some checks failed
Deploy NestJS API / build-and-push-deploy (push) Failing after 8s
77 lines
3.1 KiB
Markdown
77 lines
3.1 KiB
Markdown
# 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.
|