Archon/k8s/RESOURCES.md
Luis Erlacher d36597fe43
Some checks failed
Build Images / build-server-docker (push) Has been cancelled
Build Images / build-mcp-docker (push) Has been cancelled
Build Images / build-agents-docker (push) Has been cancelled
Build Images / build-frontend-docker (push) Has been cancelled
Build Images / build-server-k8s (push) Has been cancelled
Build Images / build-mcp-k8s (push) Has been cancelled
Build Images / build-agents-k8s (push) Has been cancelled
Build Images / build-frontend-k8s (push) Has been cancelled
feat(config): Add sprint and workflow management configuration
Introduced new sections in core-config.yaml for managing sprints and workflows:
- Defined locations for sprint documentation and current sprint file.
- Added workflow management settings including current workflow file and templates.
- Included AI agent context configuration for better context management.

This enhancement supports improved organization and tracking of project workflows and sprints.
2025-10-28 14:41:00 -03:00

335 lines
8.5 KiB
Markdown

# Recursos Kubernetes do Archon
Este documento lista todos os recursos Kubernetes criados para o Archon.
## Estrutura de Arquivos
```
k8s/
├── .env.k8s.example # Exemplo de variáveis de ambiente
├── 01-secret.yaml # Secret unificado
├── 02-deployment-server.yaml # Deployment do backend
├── 03-deployment-mcp.yaml # Deployment do MCP
├── 04-deployment-agents.yaml # Deployment dos agents
├── 05-deployment-frontend.yaml # Deployment do frontend
├── 06-service-server.yaml # Service do backend
├── 07-service-mcp.yaml # Service do MCP
├── 08-service-agents.yaml # Service dos agents
├── 09-service-frontend.yaml # Service do frontend
├── 10-ingress.yaml # Ingress unificado
├── build-and-push.sh # Script para build das imagens
├── deploy.sh # Script de deploy
├── QUICKSTART.md # Guia rápido
├── README.md # Documentação completa
└── RESOURCES.md # Este arquivo
```
## Recursos Criados
### 1. Secret
**Arquivo**: `01-secret.yaml`
**Nome**: `archon-secret`
**Tipo**: Opaque
**Namespace**: unlkd
Contém todas as variáveis de ambiente necessárias para os 4 serviços:
- Credenciais Supabase
- API keys (OpenAI, Logfire)
- Configurações de portas e hosts
- Configurações de serviço
### 2. Deployments
#### Backend Server
**Arquivo**: `02-deployment-server.yaml`
**Nome**: `archon-server`
**Namespace**: unlkd
**Portas**: 8181
Recursos:
- Requests: 500m CPU, 4Gi Memory
- Limits: 2000m CPU, 8Gi Memory
Probes:
- Liveness: GET /health (40s delay)
- Readiness: GET /health (20s delay)
#### MCP Server
**Arquivo**: `03-deployment-mcp.yaml`
**Nome**: `archon-mcp`
**Namespace**: unlkd
**Portas**: 8051
Recursos:
- Requests: 250m CPU, 512Mi Memory
- Limits: 1000m CPU, 2Gi Memory
Probes:
- Liveness: TCP 8051 (60s delay)
- Readiness: TCP 8051 (30s delay)
#### Agents
**Arquivo**: `04-deployment-agents.yaml`
**Nome**: `archon-agents`
**Namespace**: unlkd
**Portas**: 8052
Recursos:
- Requests: 500m CPU, 1Gi Memory
- Limits: 2000m CPU, 4Gi Memory
Probes:
- Liveness: GET /health (40s delay)
- Readiness: GET /health (20s delay)
#### Frontend
**Arquivo**: `05-deployment-frontend.yaml`
**Nome**: `archon-frontend`
**Namespace**: unlkd
**Portas**: 3737
Recursos:
- Requests: 100m CPU, 256Mi Memory
- Limits: 500m CPU, 1Gi Memory
Probes:
- Liveness: GET / (30s delay)
- Readiness: GET / (10s delay)
### 3. Services
Todos os services são do tipo ClusterIP e roteiam tráfego interno entre os pods.
| Service | Arquivo | Porta | Target |
|---------|---------|-------|--------|
| archon-server | 06-service-server.yaml | 8181 | archon-server:8181 |
| archon-mcp | 07-service-mcp.yaml | 8051 | archon-mcp:8051 |
| archon-agents | 08-service-agents.yaml | 8052 | archon-agents:8052 |
| archon-frontend | 09-service-frontend.yaml | 3737 | archon-frontend:3737 |
### 4. Ingress
**Arquivo**: `10-ingress.yaml`
**Nome**: `archon`
**Namespace**: unlkd
**IngressClass**: nginx
#### Hosts e Rotas
| Host | Service | Porta | Descrição |
|------|---------|-------|-----------|
| archon.digiworker.com.br | archon-frontend | 3737 | Interface web |
| server.digiworker.com.br | archon-server | 8181 | API backend |
| mcp.digiworker.com.br | archon-mcp | 8051 | MCP server |
| agents.digiworker.com.br | archon-agents | 8052 | AI agents |
#### Certificados TLS
| Secret | Host |
|--------|------|
| archon-frontend-tls | archon.digiworker.com.br |
| archon-server-tls | server.digiworker.com.br |
| archon-mcp-tls | mcp.digiworker.com.br |
| archon-agents-tls | agents.digiworker.com.br |
Todos os certificados são gerenciados automaticamente pelo Cert Manager usando o ClusterIssuer `letsencrypt`.
#### Annotations
```yaml
cert-manager.io/cluster-issuer: letsencrypt
nginx.ingress.kubernetes.io/proxy-body-size: 50M
nginx.ingress.kubernetes.io/client-max-body-size: 50M
nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/websocket-services: archon-server
```
Headers de segurança:
```
X-Frame-Options: deny
Content-Security-Policy: frame-ancestors 'none'
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: no-referrer
```
## Recursos Totais do Cluster
### Requests Totais (Mínimo Necessário)
- CPU: 1350m (1.35 cores)
- Memory: 5.75Gi
### Limits Totais (Máximo Possível)
- CPU: 5500m (5.5 cores)
- Memory: 15Gi
### Portas Utilizadas
- 8181: Backend API
- 8051: MCP Server
- 8052: Agents
- 3737: Frontend
### Volumes
Este deployment não utiliza PersistentVolumes. Todos os dados são armazenados no Supabase.
## Labels Padrão
Todos os recursos usam labels consistentes:
```yaml
app.kubernetes.io/name: archon-{service}
app.kubernetes.io/instance: archon
app.kubernetes.io/component: {backend|mcp|agents|frontend}
```
Para listar todos os recursos:
```bash
kubectl get all -n unlkd -l app.kubernetes.io/instance=archon
```
## Dependências Entre Serviços
```
archon-frontend
└── archon-server (via API calls)
archon-mcp
├── archon-server (API_SERVICE_URL)
└── archon-agents (AGENTS_SERVICE_URL)
archon-agents
└── Standalone (pode ser usado por outros serviços)
archon-server
└── Standalone (faz calls para Supabase)
```
## Endpoints de Health Check
| Serviço | Endpoint | Tipo | Resposta |
|---------|----------|------|----------|
| Backend | /health | HTTP | 200 OK + JSON |
| Agents | /health | HTTP | 200 OK + JSON |
| MCP | porta 8051 | TCP | Conexão aceita |
| Frontend | / | HTTP | 200 OK + HTML |
## Segurança
### HTTPS/TLS
- Todos os domínios usam HTTPS
- Certificados gerenciados pelo Let's Encrypt
- Redirecionamento automático HTTP → HTTPS
### Headers de Segurança
- X-Frame-Options: Previne clickjacking
- CSP: Previne XSS e embedding não autorizado
- Referrer-Policy: Protege URLs sensíveis
### Secrets
- Todas as credenciais estão no Secret
- Secret não é versionado (use .gitignore)
- Considere usar Sealed Secrets ou External Secrets para produção
### Network
- Services são ClusterIP (internos)
- Apenas Ingress expõe serviços externamente
- Considere adicionar NetworkPolicies para maior isolamento
## Monitoring
### Logs
```bash
# Ver logs de todos os serviços
kubectl logs -n unlkd -l app.kubernetes.io/instance=archon --all-containers=true -f
# Logs específicos
kubectl logs -n unlkd -l app.kubernetes.io/name=archon-server -f
kubectl logs -n unlkd -l app.kubernetes.io/name=archon-mcp -f
kubectl logs -n unlkd -l app.kubernetes.io/name=archon-agents -f
kubectl logs -n unlkd -l app.kubernetes.io/name=archon-frontend -f
```
### Métricas
Adicione Prometheus e Grafana para monitoramento:
```bash
# Exemplo com prometheus-operator
kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/main/bundle.yaml
```
### Alertas
Configure alertas para:
- Pods em CrashLoopBackOff
- Alta utilização de CPU/Memory
- Certificados próximos do vencimento
- Health checks falhando
## Backup e Restore
### Backup do Secret
```bash
# Exportar secret
kubectl get secret archon-secret -n unlkd -o yaml > archon-secret-backup.yaml
# Armazenar em local seguro (NÃO commitar no git!)
```
### Backup da Configuração
```bash
# Exportar todos os recursos
kubectl get all,ingress,secret -n unlkd -l app.kubernetes.io/instance=archon -o yaml > archon-backup.yaml
```
### Restore
```bash
# Aplicar backup
kubectl apply -f archon-backup.yaml
```
## Scaling
### Horizontal Pod Autoscaling (HPA)
```bash
# Autoscaling baseado em CPU
kubectl autoscale deployment archon-server -n unlkd \
--cpu-percent=70 \
--min=1 \
--max=5
kubectl autoscale deployment archon-agents -n unlkd \
--cpu-percent=70 \
--min=1 \
--max=3
```
### Vertical Pod Autoscaling (VPA)
Instale VPA no cluster e crie recursos VPA para ajuste automático de recursos.
### Manual Scaling
```bash
# Escalar manualmente
kubectl scale deployment archon-server -n unlkd --replicas=3
```
## Custos Estimados
Baseado nos recursos totais:
### Requests (Mínimo)
- 1.35 CPU cores
- 5.75Gi Memory
Em um cluster gerenciado (GKE, EKS, AKS):
- Estimativa: $50-100/mês por nó
- Requer pelo menos 1 nó com 2 cores e 8Gi RAM
### Limits (Máximo)
- 5.5 CPU cores
- 15Gi Memory
Em picos de uso:
- Pode necessitar até 2-3 nós dependendo da configuração
- Estimativa máxima: $150-300/mês
**Nota**: Custos variam significativamente entre providers e regiões.