promovaweb-devops-review-kestra-stack

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Review Kestra Stack

Kestra技术栈审查

Executa uma auditoria completa do arquivo
kestra.yaml
e reporta conformidade, problemas e sugestões.
kestra.yaml
文件执行完整审计,输出合规性、问题和改进建议报告。

Instruções de Execução

执行说明

Quando esta skill for invocada, siga exatamente este roteiro:
调用本工具时,请严格按照以下流程执行:

Passo 1 — Ler o arquivo

步骤1 — 读取文件

Leia o arquivo
kestra.yaml
completo.
读取完整的
kestra.yaml
文件内容。

Passo 2 — Executar todos os checks abaixo

步骤2 — 执行所有检查项

Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).
执行每个检查模块并记录结果(✅ 正常 / ⚠️ 注意 / ❌ 错误)。

Passo 3 — Gravar o resultado

步骤3 — 保存结果

Grave o relatório completo em um arquivo chamado kestra.audit.md.

将完整审计报告保存为名为kestra.audit.md的文件。

Checks de Verificação

检查项

1. Configuração YAML Obrigatória

1. 必填YAML配置

O Kestra usa um bloco YAML embutido (
KESTRA_CONFIGURATION
) como variável de ambiente. Verifique o anchor
x-kestra-config
:
Banco de dados PostgreSQL:
  • datasources.postgres.url
    — deve ser
    jdbc:postgresql://postgres:5432/kestra
    (ou URL válida)
  • datasources.postgres.driver-class-name
    — deve ser
    org.postgresql.Driver
  • datasources.postgres.username
    — deve ser definido
  • datasources.postgres.password
    — deve existir e não deve ser o placeholder
    SENHA
    , compare com a senha definida em
    postgres.yaml
Kestra Server:
  • kestra.ai.providers
    — verificar se o provedor
    gemini
    está configurado corretamente (modelo
    gemini-2.5-flash
    ) e se a
    api-key
    não é o placeholder
    YOUR_GEMINI_API_KEY
  • 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
    admin@kestra.io
  • 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
    kestra
    ou
    Kwesstsra5039
Repositório e Fila:
  • kestra.repository.type
    — deve ser
    postgres
  • kestra.queue.type
    — deve ser
    postgres
Storage:
  • kestra.storage.type
    — verificar se é
    local
    ou outro backend (S3, GCS, etc.)
  • kestra.storage.local.base-path
    — deve ser
    /app/storage
    (ou caminho válido do volume)
Tasks:
  • kestra.tasks.tmp-dir.path
    — deve ser
    /tmp/kestra-wd/tmp
    (ou caminho válido do volume)

Kestra使用内嵌的YAML块(
KESTRA_CONFIGURATION
)作为环境变量,请检查锚点
x-kestra-config
PostgreSQL数据库:
  • datasources.postgres.url
    — 必须为
    jdbc:postgresql://postgres:5432/kestra
    (或其他有效URL)
  • datasources.postgres.driver-class-name
    — 必须为
    org.postgresql.Driver
  • datasources.postgres.username
    — 必须已定义
  • datasources.postgres.password
    — 必须存在且不能是占位符
    SENHA
    ,需与
    postgres.yaml
    中定义的密码一致
Kestra服务端:
  • kestra.ai.providers
    — 检查
    gemini
    提供商是否配置正确(模型为
    gemini-2.5-flash
    ),且
    api-key
    不是占位符
    YOUR_GEMINI_API_KEY
  • kestra.server.basic-auth.enabled
    — 检查是否启用身份验证(生产环境推荐开启)
  • kestra.server.basic-auth.username
    — 若启用认证,不能使用默认值
    admin@kestra.io
  • kestra.server.basic-auth.password
    — 若启用认证,长度至少为10位,需包含字母、数字和.或/之类的特殊字符,不能使用默认值
    kestra
    Kwesstsra5039
仓库与队列:
  • kestra.repository.type
    — 必须为
    postgres
  • kestra.queue.type
    — 必须为
    postgres
存储:
  • kestra.storage.type
    — 检查是否为
    local
    或其他存储后端(S3、GCS等)
  • kestra.storage.local.base-path
    — 必须为
    /app/storage
    (或有效的存储卷路径)
任务:
  • kestra.tasks.tmp-dir.path
    — 必须为
    /tmp/kestra-wd/tmp
    (或有效的存储卷路径)

2. Serviços Obrigatórios

2. 必选服务

Verifique se todos estes serviços estão presentes:
ServiçoObrigatório
kestra-scheduler
Sim
kestra-worker
Sim
kestra-executor
Sim
kestra-webserver
Sim

检查是否包含以下所有服务:
服务是否必填
kestra-scheduler
kestra-worker
kestra-executor
kestra-webserver

3. Comandos dos Containers

3. 容器启动命令

Verifique o comando (
command
) de cada serviço:
ServiçoComando Esperado
kestra-scheduler
server scheduler
kestra-worker
server worker
kestra-executor
server executor
kestra-webserver
server webserver

检查每个服务的启动命令(
command
):
服务预期命令
kestra-scheduler
server scheduler
kestra-worker
server worker
kestra-executor
server executor
kestra-webserver
server webserver

4. Replicas dos Serviços

4. 服务副本数

Verifique a quantidade de réplicas de cada serviço:
ServiçoRéplicas MínimasObservação
kestra-scheduler
1Múltiplas réplicas aumentam disponibilidade
kestra-worker
1Pode escalar para mais workers
kestra-executor
1Pode escalar para mais executors
kestra-webserver
1Interface web, geralmente 1 réplica
Verificar se réplicas de scheduler e executor são adequadas para a carga esperada.

检查每个服务的副本数量:
服务最小副本数备注
kestra-scheduler
1多副本可提升可用性
kestra-worker
1可扩展更多worker
kestra-executor
1可扩展更多executor
kestra-webserver
1网页界面,通常1个副本即可
检查scheduler和executor的副本数是否符合预期负载要求。

5. Variável de Ambiente
KESTRA_URL

5. 环境变量
KESTRA_URL

Verificar no serviço
kestra-webserver
:
  • KESTRA_URL
    — deve começar com
    https://
    e terminar com
    /
  • O domínio deve ser válido (não
    seudominio.com.br
    placeholder)
  • Deve corresponder à regra Traefik configurada

kestra-webserver
服务中检查:
  • KESTRA_URL
    — 必须以
    https://
    开头,以
    /
    结尾
  • 域名必须有效(不能是占位符
    seudominio.com.br
  • 必须与配置的Traefik规则匹配

6. Rotas Traefik

6. Traefik路由

Para o serviço
kestra-webserver
, verifique:
Âncora de endereço (
x-kestra-app-url
):
  • A âncora
    x-kestra-app-url
    deve existir e conter um domínio válido (não placeholder como
    seudominio.com.br
    )
  • O domínio na âncora deve ser idêntico ao domínio dentro de
    Host(...)
    na label
    traefik.http.routers.kestra.rule
  • Se não forem iguais, reportar como ❌ Erro: inconsistência entre
    x-kestra-app-url
    e a regra Traefik
  • O domínio na âncora deve coincidir também com o domínio em
    KESTRA_URL
    (sem o
    https://
    e sem a barra final)
Labels obrigatórias:
  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.kestra.rule
    — deve conter
    Host(...)
    com domínio válido e coincidir com
    x-kestra-app-url
  • 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:
  • kestra-scheduler
    ,
    kestra-worker
    ,
    kestra-executor
    não devem ter labels Traefik (serviços internos)
  • O domínio na regra Traefik deve corresponder ao
    x-kestra-app-url
    e ao
    KESTRA_URL

针对
kestra-webserver
服务,检查以下内容:
地址锚点(
x-kestra-app-url
):
  • 锚点
    x-kestra-app-url
    必须存在且包含有效域名(不能是
    seudominio.com.br
    之类的占位符)
  • 锚点中的域名必须完全一致
    traefik.http.routers.kestra.rule
    标签中
    Host(...)
    内的域名
  • 若不一致,标记为❌ 错误:
    x-kestra-app-url
    与Traefik规则不一致
  • 锚点中的域名也必须与
    KESTRA_URL
    中的域名一致(去除
    https://
    和末尾斜杠后)
必填标签:
  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.kestra.rule
    — 必须包含
    Host(...)
    且域名有效,与
    x-kestra-app-url
    一致
  • 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
规则:
  • kestra-scheduler
    kestra-worker
    kestra-executor
    不能配置Traefik标签(内部服务)
  • Traefik规则中的域名必须与
    x-kestra-app-url
    KESTRA_URL
    一致

7. Volumes

7. 存储卷

Verifique se os volumes estão corretamente configurados:
  • kestra_data
    — deve ser
    external: true
    e montado em todos os serviços em
    /app/storage
  • kestra_wd
    — deve ser
    external: true
    e montado em todos os serviços em
    /tmp/kestra-wd
  • /var/run/docker.sock
    — montado em todos os serviços (necessário para execução de tasks Docker)
Alertar se algum serviço não compartilhar os volumes
kestra_data
e
kestra_wd
.

检查存储卷是否配置正确:
  • kestra_data
    — 必须设置
    external: true
    ,且在所有服务中挂载到
    /app/storage
  • kestra_wd
    — 必须设置
    external: true
    ,且在所有服务中挂载到
    /tmp/kestra-wd
  • /var/run/docker.sock
    — 需挂载到所有服务中(执行Docker任务所需)
若有服务未共享
kestra_data
kestra_wd
存储卷,需发出告警。

8. Usuário dos Containers

8. 容器运行用户

Verificar que todos os serviços têm
user: "root"
:
  • Necessário para acesso ao Docker socket
  • Alertar se algum serviço não tiver
    user: "root"
    definido

检查所有服务是否配置了
user: "root"
  • 访问Docker socket所需
  • 若有服务未配置
    user: "root"
    ,需发出告警

9. Recursos dos Containers

9. 容器资源配置

Para cada serviço, verifique os limites de recursos:
ServiçoCPU MínimoMemória MínimaMemória Máxima
kestra-scheduler
"1"512M1024M
kestra-worker
"1"512M1024M
kestra-executor
"1"512M1024M
kestra-webserver
"1"512M1024M
Alertar se algum serviço não tiver
resources.limits
definido.

检查每个服务的资源限制:
服务最低CPU配置最低内存配置最大内存配置
kestra-scheduler
"1"512M1024M
kestra-worker
"1"512M1024M
kestra-executor
"1"512M1024M
kestra-webserver
"1"512M1024M
若有服务未配置
resources.limits
,需发出告警。

10. Configuração de Deploy

10. 部署配置

Para cada serviço, verifique:
  • mode: replicated
    — todos devem ser
    replicated
  • placement.constraints
    — deve incluir
    node.role == manager
  • Verificar se há
    update_config
    com
    order: start-first
    e
    failure_action: rollback
    (recomendado)

检查每个服务的以下配置:
  • mode: replicated
    — 所有服务都必须为
    replicated
    模式
  • placement.constraints
    — 必须包含
    node.role == manager
  • 检查是否配置了
    update_config
    ,包含
    order: start-first
    failure_action: rollback
    (推荐配置)

11. Redes e Imagens

11. 网络与镜像

Redes:
  • Todos os serviços devem estar na rede
    network_swarm_public
  • A rede deve ser declarada como
    external: true
    na seção
    networks:
Imagens:
  • Todos os serviços devem usar
    *kestra-image
    (anchor)
  • Verificar se a imagem usa tag específica de versão em vez de
    latest
    (recomendado em produção)

网络:
  • 所有服务必须加入
    network_swarm_public
    网络
  • 该网络必须在
    networks:
    段中声明为
    external: true
镜像:
  • 所有服务必须使用
    *kestra-image
    (锚点)
  • 检查镜像是否使用指定版本标签而非
    latest
    (生产环境推荐)

12. Segurança

12. 安全性

  • datasources.postgres.password
    não deve ser
    SENHA
    (placeholder)
  • kestra.ai.providers.gemini.configuration.api-key
    não deve ser
    YOUR_GEMINI_API_KEY
  • 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
    admin@kestra.io
    (padrão)
  • kestra.server.basic-auth.password
    não deve ser
    kestra
    ou
    Kwesstsra5039
    (padrão)
  • KESTRA_URL
    não deve conter
    seudominio.com.br
    (placeholder)

  • datasources.postgres.password
    不能是占位符
    SENHA
  • kestra.ai.providers.gemini.configuration.api-key
    不能是占位符
    YOUR_GEMINI_API_KEY
  • kestra.server.basic-auth.enabled: false
    — 标记为安全风险(任何人都可以访问UI)
  • kestra.server.basic-auth.username
    不能是默认值
    admin@kestra.io
  • kestra.server.basic-auth.password
    不能是默认值
    kestra
    Kwesstsra5039
  • KESTRA_URL
    不能包含占位符
    seudominio.com.br

Formato do Relatório de Saída

输出报告格式

Ao final, produza um relatório estruturado:
undefined
完成检查后,生成结构化报告:
undefined

Relatório de Auditoria — kestra.yaml

审计报告 — kestra.yaml

Data: <data atual>
日期: <当前日期>

Resumo

摘要

  • Total de checks: X
  • ✅ OK: X
  • ⚠️ Atenções: X
  • ❌ Erros: X
  • 总检查项: X
  • ✅ 正常: X
  • ⚠️ 注意: X
  • ❌ 错误: X

Resultados por Categoria

各分类检查结果

1. Configuração YAML

1. YAML配置

✅ datasources.postgres.url: definido corretamente ❌ datasources.postgres.password: usando placeholder SENHA — troque antes do deploy ...
✅ datasources.postgres.url: 配置正确 ❌ datasources.postgres.password: 使用了占位符SENHA — 部署前请替换 ...

2. Serviços

2. 服务检查

✅ kestra-scheduler: presente ✅ kestra-worker: presente ✅ kestra-executor: presente ✅ kestra-webserver: presente
✅ kestra-scheduler: 已存在 ✅ kestra-worker: 已存在 ✅ kestra-executor: 已存在 ✅ kestra-webserver: 已存在

3. Comandos

3. 启动命令

✅ kestra-scheduler: comando
server scheduler
correto ✅ kestra-worker: comando
server worker
correto ...
✅ kestra-scheduler: 命令
server scheduler
正确 ✅ kestra-worker: 命令
server worker
正确 ...

4. Replicas

4. 副本配置

✅ kestra-worker: 2 réplicas ✅ kestra-executor: 2 réplicas ...
✅ kestra-worker: 2个副本 ✅ kestra-executor: 2个副本 ...

5. KESTRA_URL

5. KESTRA_URL配置

❌ KESTRA_URL: contém placeholder
seudominio.com.br
— configure o domínio real ...
❌ KESTRA_URL: 包含占位符
seudominio.com.br
— 请配置真实域名 ...

6. Rotas Traefik

6. Traefik路由

❌ kestra-webserver: domínio placeholder
kestra.seudominio.com.br
na regra Traefik ...
❌ kestra-webserver: Traefik规则中使用了占位符域名
kestra.seudominio.com.br
...

7. Volumes

7. 存储卷

✅ kestra_data: compartilhado entre todos os serviços ✅ kestra_wd: compartilhado entre todos os serviços ✅ docker.sock: montado em todos os serviços ...
✅ kestra_data: 所有服务已共享 ✅ kestra_wd: 所有服务已共享 ✅ docker.sock: 所有服务已挂载 ...

8. Usuário

8. 运行用户

✅ Todos os serviços com user: root ...
✅ 所有服务已配置user: root ...

9. Recursos

9. 资源配置

✅ Todos os serviços com limits definidos ...
✅ 所有服务已配置资源限制 ...

10. Deploy

10. 部署配置

⚠️ update_config não definido — recomendado configurar start-first e rollback ...
⚠️ 未配置update_config — 推荐配置start-first和rollback策略 ...

11. Redes e Imagens

11. 网络与镜像

⚠️ Imagem usando
latest
— considere fixar uma versão em produção ...
⚠️ 镜像使用了
latest
标签 — 生产环境建议固定版本 ...

12. Segurança

12. 安全性

❌ 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
...
❌ basic-auth已关闭 — 任何用户都可访问Web界面 ❌ datasources.postgres.password: 检测到占位符SENHA ⚠️ kestra.server.basic-auth.password: 使用了默认值
Kwesstsra5039
— 生产环境请替换 ⚠️ kestra.ai.providers.gemini.api-key: 使用了占位符
YOUR_GEMINI_API_KEY
...

Ações Recomendadas (por prioridade)

建议操作(按优先级排序)

Crítico (fazer antes do deploy)

高危(部署前必须处理)

  1. ...
  1. ...

Recomendado

建议处理

  1. ...
  1. ...

Opcional

可选处理

  1. ...
undefined
  1. ...
undefined