# 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.