promovaweb-devops-review-postgres-stack
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseReview PostgreSQL Stack
PostgreSQL栈审核
Executa uma auditoria completa do arquivo e reporta conformidade, problemas e sugestões.
postgres.yaml对文件执行完整审计,并输出合规性、问题和改进建议。
postgres.yamlInstruções de Execução
执行说明
Quando esta skill for invocada, siga exatamente este roteiro:
调用该技能时,请严格遵循以下流程:
Passo 1 — Ler o arquivo
步骤1 — 读取文件
Leia o arquivo completo.
postgres.yaml读取完整的文件。
postgres.yamlPasso 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 postgres.audit.md.
将完整报告保存为名为postgres.audit.md的文件。
Checks de Verificação
检查项
1. Imagem
1. 镜像
- Verificar se a imagem usada é (ou variante com suporte a pgvector)
pgvector/pgvector:pg18 - Alertar se estiver usando sem suporte a pgvector, chatwoot precisa de pgvector para funcionar
postgres:latest - Alertar se a tag não fixar uma versão major (ex: é aceitável,
pg18não é recomendado)latest - Verificar se a versão do PostgreSQL é compatível com os outros stacks que a utilizam (n8n, chatwoot, metabase, kestra)
- 检查所用镜像是否为(或其他支持pgvector的变体)
pgvector/pgvector:pg18 - 如果使用无pgvector支持的需要告警,chatwoot运行需要pgvector支持
postgres:latest - 如果镜像标签未固定大版本需要告警(例如是可接受的,不推荐使用
pg18标签)latest - 检查PostgreSQL版本是否与其他依赖它的栈(n8n、chatwoot、metabase、kestra)兼容
2. Variáveis de Ambiente
2. 环境变量
- — deve existir e não deve ser o placeholder
POSTGRES_PASSWORDSENHA - — verificar se contém
POSTGRES_INITDB_ARGS(autenticação segura)--auth-host=scram-sha-256 - Alertar se não estiver definido (usa padrão
POSTGRES_USER)postgres - Alertar se não houver definido (banco padrão é
POSTGRES_DB)postgres
- — 必须存在,且不能是占位符
POSTGRES_PASSWORDSENHA - — 检查是否包含
POSTGRES_INITDB_ARGS(安全认证配置)--auth-host=scram-sha-256 - 如果未定义需要告警(默认会使用
POSTGRES_USER用户)postgres - 如果未定义需要告警(默认库为
POSTGRES_DB)postgres
3. Comando de Inicialização
3. 启动命令
Verifique os parâmetros do comando :
postgres- — deve ser definido e adequado para a carga esperada
--max_connections=200 - — aceitável para setup sem replicação; alertar se replicação for necessária
--wal_level=minimal - — consistente com
--max_wal_senders=0; alertar se replicação for necessáriawal_level=minimal - — deve ser a porta padrão
--port=5432
检查命令的参数:
postgres- — 必须配置且符合预期负载要求
--max_connections=200 - — 无复制的部署场景下可接受;如果需要复制则需告警
--wal_level=minimal - — 与
--max_wal_senders=0配置一致;如果需要复制则需告警wal_level=minimal - — 必须使用默认端口
--port=5432
4. Portas Expostas
4. 暴露端口
- — verificar se a porta está exposta externamente
5432:5432 - Alertar se a porta 5432 estiver exposta em produção (risco de segurança — acesso externo ao banco), habilitar somente caso o firewall esteja configurado para bloquear acesso externo
- Recomendar uso de rede interna Docker Swarm sem exposição de porta se não for necessário acesso externo
- — 检查端口是否对外暴露
5432:5432 - 生产环境下如果暴露5432端口需要告警(安全风险——数据库对外暴露),仅当防火墙配置为拦截外部访问时才可开启
- 如果无需外部访问,建议使用Docker Swarm内部网络,不暴露端口
5. Volumes
5. 存储卷
- — deve ser declarado como
postgres_dataexternal: true - Verificar se o volume está montado em
/var/lib/postgresql/data - Alertar se o volume não for externo (dados perdidos em redeploy)
- Verificar comentário sobre volume externo em VPS (alternativa )
/mnt/VOLUME/pasta
- — 必须声明为
postgres_dataexternal: true - 检查卷是否挂载到路径
/var/lib/postgresql/data - 如果卷不是外部卷需要告警(重新部署时会丢失数据)
- 检查VPS上外部卷的相关注释(可选路径)
/mnt/VOLUME/pasta
6. Réplicas
6. 副本数
| Serviço | Réplicas Esperadas | Observação |
|---|---|---|
| 1 | PostgreSQL standalone — não deve ter mais de 1 réplica sem configuração de cluster |
Alertar se houver mais de 1 réplica (pode causar corrupção de dados sem configuração de replicação adequada).
| 服务 | 预期副本数 | 说明 |
|---|---|---|
| 1 | 独立部署的PostgreSQL——未配置集群时副本数不能超过1 |
如果副本数超过1需要告警(没有合理的复制配置时可能导致数据损坏)。
7. Recursos do Container
7. 容器资源
| Serviço | CPU Mínimo | Memória Máxima |
|---|---|---|
| "1" | 1024M |
- Alertar se memória for inferior a 512M (PostgreSQL pode ser instável)
- Verificar se os limites são adequados para o número de conexões configurado ()
max_connections=200
| 服务 | 最低CPU配置 | 最大内存配置 |
|---|---|---|
| "1" | 1024M |
- 如果内存低于512M需要告警(PostgreSQL可能运行不稳定)
- 检查资源限制是否与配置的连接数匹配()
max_connections=200
8. Configuração de Deploy
8. 部署配置
- — deve ser
mode: replicatedreplicated - — deve incluir
placement.constraintsnode.role == manager - Verificar se há constraints adicionais de hostname para fixar o banco em um nó específico
- — deve estar presente
entrypoint: docker-entrypoint.sh
- — 必须为
mode: replicatedreplicated - — 必须包含
placement.constraintsnode.role == manager - 检查是否有额外的主机名约束,将数据库固定到指定节点
- — 必须存在
entrypoint: docker-entrypoint.sh
9. Redes
9. 网络配置
- O serviço deve estar na rede
network_swarm_public - A rede deve ser declarada como
external: true - Verificar se a exposição na rede pública do swarm é necessária ou se poderia ser uma rede interna
- 服务必须加入网络
network_swarm_public - 该网络必须声明为
external: true - 检查是否有必要暴露到Swarm公网,是否可以改用内部网络
10. Segurança
10. 安全配置
- não deve ser
POSTGRES_PASSWORD(placeholder)SENHA - deve incluir
POSTGRES_INITDB_ARGSpara autenticação segurascram-sha-256 - Porta 5432 exposta externamente — alertar como risco se não houver firewall configurado
- Verificar se é adequado (impede Point-in-Time Recovery)
--wal_level=minimal
- 不能是占位符
POSTGRES_PASSWORDSENHA - 必须包含
POSTGRES_INITDB_ARGS以启用安全认证scram-sha-256 - 5432端口对外暴露——如果没有配置防火墙需要告警安全风险
- 检查配置是否合理(该配置不支持时间点恢复)
--wal_level=minimal
Formato do Relatório de Saída
输出报告格式
Ao final, produza um relatório estruturado:
undefined执行完成后输出结构化报告:
undefinedRelatório de Auditoria — postgres.yaml
审计报告 — postgres.yaml
Data: <data atual>
日期: <当前日期>
Resumo
概览
- Total de checks: X
- ✅ OK: X
- ⚠️ Atenções: X
- ❌ Erros: X
- 总检查项: X
- ✅ 正常: X
- ⚠️ 警告: X
- ❌ 错误: X
Resultados por Categoria
各分类检查结果
1. Imagem
1. 镜像
✅ pgvector/pgvector:pg18: suporte a pgvector disponível
⚠️ Tag é aceitável mas considere fixar versão completa (ex: pg18.3)
...
pg18✅ pgvector/pgvector:pg18: 已支持pgvector
⚠️ 标签可接受,但建议固定完整版本(例如pg18.3)
...
pg182. Variáveis de Ambiente
2. 环境变量
❌ POSTGRES_PASSWORD: usando placeholder SENHA — troque antes do deploy
✅ POSTGRES_INITDB_ARGS: scram-sha-256 configurado
...
❌ POSTGRES_PASSWORD: 使用了占位符SENHA — 部署前请修改
✅ POSTGRES_INITDB_ARGS: 已配置scram-sha-256
...
3. Comando
3. 启动命令
✅ max_connections=200: definido
⚠️ wal_level=minimal: sem suporte a PITR — adequado apenas se backup alternativo existir
...
✅ max_connections=200: 已配置
⚠️ wal_level=minimal: 不支持PITR — 仅当有其他备份方案时该配置可接受
...
4. Portas
4. 端口
⚠️ Porta 5432 exposta externamente — garanta que firewall está configurado
...
⚠️ 5432端口对外暴露 — 请确保防火墙已正确配置
...
5. Volumes
5. 存储卷
✅ postgres_data: volume externo configurado
...
✅ postgres_data: 已配置外部卷
...
6. Réplicas
6. 副本数
✅ postgres: 1 réplica (correto para standalone)
...
✅ postgres: 1个副本(独立部署配置正确)
...
7. Recursos
7. 资源配置
✅ 1024M de memória configurada
...
✅ 已配置1024M内存
...
8. Deploy
8. 部署配置
✅ node.role == manager: placement correto
...
✅ node.role == manager: 调度配置正确
...
9. Redes
9. 网络配置
⚠️ Serviço exposto na rede pública do swarm — considere rede interna se acesso externo não for necessário
...
⚠️ 服务暴露在Swarm公网 — 如果无需外部访问建议改用内部网络
...
10. Segurança
10. 安全配置
❌ POSTGRES_PASSWORD: placeholder SENHA detectado
⚠️ Porta 5432 exposta: certifique-se de que firewall bloqueia acesso externo
...
❌ POSTGRES_PASSWORD: 检测到占位符SENHA
⚠️ 5432端口暴露: 请确认防火墙已拦截外部访问
...
Ações Recomendadas (por prioridade)
建议操作(按优先级排序)
Crítico (fazer antes do deploy)
严重(部署前必须修复)
- ...
- ...
Recomendado
建议修复
- ...
- ...
Opcional
可选优化
- ...
undefined- ...
undefined