# 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:` - **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.