Review Kestra Stack
Executa uma auditoria completa do arquivo
e reporta conformidade, problemas e sugestões.
Instruções de Execução
Quando esta skill for invocada, siga exatamente este roteiro:
Passo 1 — Ler o arquivo
Passo 2 — Executar todos os checks abaixo
Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).
Passo 3 — Gravar o resultado
Grave o relatório completo em um arquivo chamado kestra.audit.md.
Checks de Verificação
1. Configuração YAML Obrigatória
O Kestra usa um bloco YAML embutido (
) como variável de ambiente. Verifique o anchor
:
Banco de dados PostgreSQL:
- — deve ser
jdbc:postgresql://postgres:5432/kestra
(ou URL válida)
datasources.postgres.driver-class-name
— deve ser
datasources.postgres.username
— deve ser definido
datasources.postgres.password
— deve existir e não deve ser o placeholder , compare com a senha definida em
Kestra Server:
- — verificar se o provedor está configurado corretamente (modelo ) e se a não é o placeholder
kestra.server.basic-auth.enabled
— verificar se autenticação está habilitada (recomendado em produção)
kestra.server.basic-auth.username
— se habilitado, não deve ser o padrão
kestra.server.basic-auth.password
— se habilitado deve ter no múnimo 10 caracteres entre letras, números e um caracter especial como . ou /, não deve ser o padrão ou
Repositório e Fila:
Storage:
- — verificar se é ou outro backend (S3, GCS, etc.)
kestra.storage.local.base-path
— deve ser (ou caminho válido do volume)
Tasks:
kestra.tasks.tmp-dir.path
— deve ser (ou caminho válido do volume)
2. Serviços Obrigatórios
Verifique se todos estes serviços estão presentes:
| Serviço | Obrigatório |
|---|
| Sim |
| Sim |
| Sim |
| Sim |
3. Comandos dos Containers
Verifique o comando (
) de cada serviço:
4. Replicas dos Serviços
Verifique a quantidade de réplicas de cada serviço:
| Serviço | Réplicas Mínimas | Observação |
|---|
| 1 | Múltiplas réplicas aumentam disponibilidade |
| 1 | Pode escalar para mais workers |
| 1 | Pode escalar para mais executors |
| 1 | Interface web, geralmente 1 réplica |
Verificar se réplicas de scheduler e executor são adequadas para a carga esperada.
5. Variável de Ambiente
- — deve começar com e terminar com
- O domínio deve ser válido (não placeholder)
- Deve corresponder à regra Traefik configurada
6. Rotas Traefik
Para o serviço
, verifique:
- A âncora deve existir e conter um domínio válido (não placeholder como )
- O domínio na âncora deve ser idêntico ao domínio dentro de na label
traefik.http.routers.kestra.rule
- Se não forem iguais, reportar como ❌ Erro: inconsistência entre e a regra Traefik
- O domínio na âncora deve coincidir também com o domínio em (sem o e sem a barra final)
Labels obrigatórias:
traefik.swarm.network=network_swarm_public
traefik.http.routers.kestra.rule
— deve conter com domínio válido e coincidir com
traefik.http.routers.kestra.entrypoints=websecure
traefik.http.routers.kestra.tls=true
traefik.http.routers.kestra.tls.certresolver=letsencryptresolver
traefik.http.routers.kestra.service=kestra
traefik.http.services.kestra.loadbalancer.server.port=8080
traefik.http.services.kestra.loadbalancer.passHostHeader=true
Regras:
- , , não devem ter labels Traefik (serviços internos)
- O domínio na regra Traefik deve corresponder ao e ao
7. Volumes
Verifique se os volumes estão corretamente configurados:
- — deve ser e montado em todos os serviços em
- — deve ser e montado em todos os serviços em
- — montado em todos os serviços (necessário para execução de tasks Docker)
Alertar se algum serviço não compartilhar os volumes
e
.
8. Usuário dos Containers
Verificar que todos os serviços têm
:
- Necessário para acesso ao Docker socket
- Alertar se algum serviço não tiver definido
9. Recursos dos Containers
Para cada serviço, verifique os limites de recursos:
| Serviço | CPU Mínimo | Memória Mínima | Memória Máxima |
|---|
| "1" | 512M | 1024M |
| "1" | 512M | 1024M |
| "1" | 512M | 1024M |
| "1" | 512M | 1024M |
Alertar se algum serviço não tiver
definido.
10. Configuração de Deploy
Para cada serviço, verifique:
- — todos devem ser
- — deve incluir
- Verificar se há com e (recomendado)
11. Redes e Imagens
Redes:
- Todos os serviços devem estar na rede
- A rede deve ser declarada como na seção
Imagens:
- Todos os serviços devem usar (anchor)
- Verificar se a imagem usa tag específica de versão em vez de (recomendado em produção)
12. Segurança
datasources.postgres.password
não deve ser (placeholder)
kestra.ai.providers.gemini.configuration.api-key
não deve ser
kestra.server.basic-auth.enabled: false
— alertar como risco de segurança (qualquer um pode acessar a UI)
kestra.server.basic-auth.username
não deve ser (padrão)
kestra.server.basic-auth.password
não deve ser ou (padrão)
- não deve conter (placeholder)
Formato do Relatório de Saída
Ao final, produza um relatório estruturado:
# Relatório de Auditoria — kestra.yaml
Data: <data atual>
## Resumo
- Total de checks: X
- ✅ OK: X
- ⚠️ Atenções: X
- ❌ Erros: X
## Resultados por Categoria
### 1. Configuração YAML
✅ datasources.postgres.url: definido corretamente
❌ datasources.postgres.password: usando placeholder SENHA — troque antes do deploy
...
### 2. Serviços
✅ kestra-scheduler: presente
✅ kestra-worker: presente
✅ kestra-executor: presente
✅ kestra-webserver: presente
### 3. Comandos
✅ kestra-scheduler: comando `server scheduler` correto
✅ kestra-worker: comando `server worker` correto
...
### 4. Replicas
✅ kestra-worker: 2 réplicas
✅ kestra-executor: 2 réplicas
...
### 5. KESTRA_URL
❌ KESTRA_URL: contém placeholder `seudominio.com.br` — configure o domínio real
...
### 6. Rotas Traefik
❌ kestra-webserver: domínio placeholder `kestra.seudominio.com.br` na regra Traefik
...
### 7. Volumes
✅ kestra_data: compartilhado entre todos os serviços
✅ kestra_wd: compartilhado entre todos os serviços
✅ docker.sock: montado em todos os serviços
...
### 8. Usuário
✅ Todos os serviços com user: root
...
### 9. Recursos
✅ Todos os serviços com limits definidos
...
### 10. Deploy
⚠️ update_config não definido — recomendado configurar start-first e rollback
...
### 11. Redes e Imagens
⚠️ Imagem usando `latest` — considere fixar uma versão em produção
...
### 12. Segurança
❌ basic-auth desabilitado — qualquer usuário pode acessar a interface web
❌ datasources.postgres.password: placeholder SENHA detectado
⚠️ kestra.server.basic-auth.password: usando valor padrão `Kwesstsra5039` — troque em produção
⚠️ kestra.ai.providers.gemini.api-key: usando placeholder `YOUR_GEMINI_API_KEY`
...
## Ações Recomendadas (por prioridade)
### Crítico (fazer antes do deploy)
1. ...
### Recomendado
1. ...
### Opcional
1. ...