@the-bearded-bear/claude-craft 8.22.0 → 8.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dev/i18n/base/Angular/rules/00-project-context.md.template +1 -1
- package/Dev/i18n/base/CSharp/rules/06-tooling.md +0 -2
- package/Dev/i18n/base/CSharp/rules/11-security-csharp.md +184 -160
- package/Dev/i18n/base/Common/commands/aliases.md +3 -0
- package/Dev/i18n/base/Common/commands/audit-claude-alignment.md +201 -0
- package/Dev/i18n/base/Common/commands/init.md +1 -1
- package/Dev/i18n/base/Common/commands/search.md +2 -1
- package/Dev/i18n/base/Common/skills/dynamic-workflows/SKILL.md +1 -1
- package/Dev/i18n/base/Common/skills/ecosystem-tools/SKILL.md +2 -1
- package/Dev/i18n/base/Laravel/rules/06-tooling.md +0 -2
- package/Dev/i18n/base/PHP/checklists/new-feature.md +1 -1
- package/Dev/i18n/base/PHP/commands/check-code-quality.md +3 -3
- package/Dev/i18n/base/Vercel/checklists/pre-commit.md +1 -1
- package/Dev/i18n/base/Vercel/commands/check-security.md +12 -12
- package/Dev/i18n/base/Vercel/rules/00-project-context.md.template +1 -1
- package/Dev/i18n/base/Vercel/rules/02-architecture-vercel.md +2 -2
- package/Dev/i18n/base/Vercel/rules/03-coding-standards.md +1 -1
- package/Dev/i18n/base/Vercel/rules/06-tooling.md +12 -0
- package/Dev/i18n/base/Vercel/rules/07-testing-vercel.md +1 -1
- package/Dev/i18n/base/Vercel/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/base/Vercel/rules/11-security-vercel.md +1 -1
- package/Dev/i18n/base/Vercel/templates/function-handler.template.ts +1 -1
- package/Dev/i18n/base/Vite/checklists/new-feature.md +2 -2
- package/Dev/i18n/base/Vite/checklists/pre-commit.md +2 -2
- package/Dev/i18n/base/Vite/commands/check-architecture.md +5 -5
- package/Dev/i18n/base/Vite/commands/check-library-build.md +3 -3
- package/Dev/i18n/base/Vite/commands/scaffold-project.md +2 -2
- package/Dev/i18n/base/Vite/rules/02-architecture-vite.md +5 -5
- package/Dev/i18n/base/Vite/rules/03-coding-standards.md +1 -1
- package/Dev/i18n/base/Vite/rules/06-tooling.md +2 -2
- package/Dev/i18n/base/Vite/rules/07-testing-vite.md +1 -1
- package/Dev/i18n/base/Vite/rules/11-security-vite.md +4 -4
- package/Dev/i18n/base/Vite/templates/library-entry.template.ts +2 -2
- package/Dev/i18n/base/Vite/templates/vite.config.template.ts +2 -2
- package/Dev/i18n/base/VueJS/rules/06-tooling.md +3 -2
- package/Dev/i18n/de/Angular/agents/angular-reviewer.md +3 -3
- package/Dev/i18n/de/Common/agents/devops-engineer.md +15 -1
- package/Dev/i18n/de/Common/agents/ralph-conductor.md +12 -1
- package/Dev/i18n/de/Common/agents/refactoring-specialist.md +9 -0
- package/Dev/i18n/de/Common/agents/security-auditor.md +10 -7
- package/Dev/i18n/de/Common/agents/tdd-coach.md +9 -0
- package/Dev/i18n/de/Common/agents/uiux-orchestrator.md +10 -1
- package/Dev/i18n/de/Common/commands/getting-started.md +2 -2
- package/Dev/i18n/de/Common/commands/setup-rtk.md +2 -2
- package/Dev/i18n/de/Common/rules/04-solid-principles.md +1 -1
- package/Dev/i18n/de/Common/rules/05-kiss-dry-yagni.md +5 -2
- package/Dev/i18n/de/Common/rules/10-documentation.md +1 -1
- package/Dev/i18n/de/Common/rules/11-security.md +76 -73
- package/Dev/i18n/de/Common/rules/12-context-management.md +29 -19
- package/Dev/i18n/de/Common/templates/settings.json.template +6 -6
- package/Dev/i18n/de/Flutter/agents/flutter-reviewer.md +4 -4
- package/Dev/i18n/de/Flutter/rules/06-tooling.md +30 -24
- package/Dev/i18n/de/Flutter/rules/07-testing-flutter.md +0 -0
- package/Dev/i18n/de/Flutter/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/de/Flutter/rules/12-performance.md +17 -17
- package/Dev/i18n/de/Flutter/rules/13-state-management.md +0 -0
- package/Dev/i18n/de/PHP/agents/php-reviewer.md +6 -6
- package/Dev/i18n/de/PHP/commands/check-compliance.md +3 -3
- package/Dev/i18n/de/PHP/rules/03-coding-standards.md +4 -2
- package/Dev/i18n/de/PHP/rules/06-tooling.md +4 -7
- package/Dev/i18n/de/PHP/rules/08-quality-tools.md +2 -2
- package/Dev/i18n/de/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/de/Paperclip/README.md +1 -1
- package/Dev/i18n/de/Paperclip/commands/setup-company.md +1 -1
- package/Dev/i18n/de/Paperclip/rules/06-tooling.md +3 -3
- package/Dev/i18n/de/Paperclip/rules/11-security-paperclip.md +9 -0
- package/Dev/i18n/de/Paperclip/skills/coding-standards-ts/SKILL.md +1 -1
- package/Dev/i18n/de/Python/commands/generate-model.md +3 -1
- package/Dev/i18n/de/Python/rules/06-tooling.md +1 -1
- package/Dev/i18n/de/Python/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/de/Python/rules/11-security-python.md +2 -2
- package/Dev/i18n/de/React/agents/react-reviewer.md +9 -5
- package/Dev/i18n/de/React/rules/06-tooling.md +0 -2
- package/Dev/i18n/de/React/rules/11-security-react.md +9 -0
- package/Dev/i18n/de/ReactNative/agents/reactnative-reviewer.md +4 -4
- package/Dev/i18n/de/ReactNative/rules/06-tooling.md +19 -3
- package/Dev/i18n/de/Symfony/agents/symfony-reviewer.md +5 -5
- package/Dev/i18n/de/Symfony/checklists/README.md +1 -1
- package/Dev/i18n/de/Symfony/checklists/new-feature.md +2 -2
- package/Dev/i18n/de/Symfony/checklists/pre-commit.md +4 -4
- package/Dev/i18n/de/Symfony/checklists/refactoring.md +1 -1
- package/Dev/i18n/de/Symfony/commands/check-architecture.md +4 -4
- package/Dev/i18n/de/Symfony/commands/check-code-quality.md +15 -15
- package/Dev/i18n/de/Symfony/commands/check-security.md +32 -32
- package/Dev/i18n/de/Symfony/commands/check-testing.md +16 -16
- package/Dev/i18n/de/Symfony/rules/03-coding-standards.md +4 -4
- package/Dev/i18n/de/Symfony/rules/06-docker-hadolint.md +0 -4
- package/Dev/i18n/de/Symfony/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/de/Symfony/rules/16-i18n.md +2 -0
- package/Dev/i18n/de/Symfony/rules/17-async.md +1 -0
- package/Dev/i18n/de/Symfony/rules/19-aggregates.md +1 -0
- package/Dev/i18n/de/Symfony/rules/20-domain-events.md +1 -0
- package/Dev/i18n/de/Team/commands/delivery.md +1 -1
- package/Dev/i18n/de/Vercel/CLAUDE.md.template +2 -2
- package/Dev/i18n/de/Vercel/agents/vercel-reviewer.md +8 -8
- package/Dev/i18n/de/Vite/CLAUDE.md.template +2 -2
- package/Dev/i18n/de/Vite/agents/vite-reviewer.md +19 -17
- package/Dev/i18n/de/Vite/commands/check-compliance.md +2 -2
- package/Dev/i18n/en/Angular/agents/angular-reviewer.md +3 -3
- package/Dev/i18n/en/Common/agents/devops-engineer.md +15 -1
- package/Dev/i18n/en/Common/agents/ralph-conductor.md +11 -0
- package/Dev/i18n/en/Common/agents/refactoring-specialist.md +9 -0
- package/Dev/i18n/en/Common/agents/security-auditor.md +10 -7
- package/Dev/i18n/en/Common/agents/tdd-coach.md +9 -0
- package/Dev/i18n/en/Common/agents/uiux-orchestrator.md +10 -1
- package/Dev/i18n/en/Common/commands/getting-started.md +2 -2
- package/Dev/i18n/en/Common/commands/setup-rtk.md +2 -2
- package/Dev/i18n/en/Common/rules/04-solid-principles.md +1 -1
- package/Dev/i18n/en/Common/rules/05-kiss-dry-yagni.md +5 -2
- package/Dev/i18n/en/Common/rules/10-documentation.md +1 -1
- package/Dev/i18n/en/Common/rules/11-security.md +76 -73
- package/Dev/i18n/en/Common/rules/12-context-management.md +31 -21
- package/Dev/i18n/en/Common/templates/settings.json.template +6 -6
- package/Dev/i18n/en/Flutter/agents/flutter-reviewer.md +4 -4
- package/Dev/i18n/en/Flutter/rules/06-tooling.md +29 -23
- package/Dev/i18n/en/Flutter/rules/07-testing-flutter.md +0 -0
- package/Dev/i18n/en/Flutter/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/en/Flutter/rules/12-performance.md +17 -17
- package/Dev/i18n/en/Flutter/rules/13-state-management.md +0 -0
- package/Dev/i18n/en/PHP/CLAUDE.md.template +1 -1
- package/Dev/i18n/en/PHP/agents/php-reviewer.md +6 -6
- package/Dev/i18n/en/PHP/commands/check-compliance.md +1 -1
- package/Dev/i18n/en/PHP/rules/03-coding-standards.md +4 -2
- package/Dev/i18n/en/PHP/rules/06-tooling.md +4 -7
- package/Dev/i18n/en/PHP/rules/08-quality-tools.md +2 -2
- package/Dev/i18n/en/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/en/Paperclip/README.md +1 -1
- package/Dev/i18n/en/Paperclip/commands/setup-company.md +1 -1
- package/Dev/i18n/en/Paperclip/rules/06-tooling.md +3 -3
- package/Dev/i18n/en/Paperclip/rules/11-security-paperclip.md +9 -0
- package/Dev/i18n/en/Paperclip/skills/coding-standards-ts/SKILL.md +1 -1
- package/Dev/i18n/en/Python/commands/generate-model.md +3 -1
- package/Dev/i18n/en/Python/rules/06-tooling.md +1 -1
- package/Dev/i18n/en/Python/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/en/Python/rules/11-security-python.md +11 -11
- package/Dev/i18n/en/React/agents/react-reviewer.md +9 -5
- package/Dev/i18n/en/React/rules/06-tooling.md +0 -2
- package/Dev/i18n/en/React/rules/11-security-react.md +9 -0
- package/Dev/i18n/en/ReactNative/agents/reactnative-reviewer.md +4 -4
- package/Dev/i18n/en/ReactNative/rules/02-architecture.md +1 -1
- package/Dev/i18n/en/ReactNative/rules/06-tooling.md +19 -3
- package/Dev/i18n/en/Symfony/agents/symfony-reviewer.md +5 -5
- package/Dev/i18n/en/Symfony/checklists/README.md +1 -1
- package/Dev/i18n/en/Symfony/checklists/new-feature.md +2 -2
- package/Dev/i18n/en/Symfony/checklists/pre-commit.md +4 -4
- package/Dev/i18n/en/Symfony/checklists/refactoring.md +1 -1
- package/Dev/i18n/en/Symfony/commands/check-architecture.md +4 -4
- package/Dev/i18n/en/Symfony/commands/check-code-quality.md +15 -15
- package/Dev/i18n/en/Symfony/commands/check-security.md +32 -32
- package/Dev/i18n/en/Symfony/commands/check-testing.md +16 -16
- package/Dev/i18n/en/Symfony/rules/03-coding-standards.md +4 -4
- package/Dev/i18n/en/Symfony/rules/06-docker-hadolint.md +0 -4
- package/Dev/i18n/en/Symfony/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/en/Symfony/rules/16-i18n.md +2 -0
- package/Dev/i18n/en/Symfony/rules/17-async.md +1 -0
- package/Dev/i18n/en/Symfony/rules/19-aggregates.md +1 -0
- package/Dev/i18n/en/Symfony/rules/20-domain-events.md +1 -0
- package/Dev/i18n/en/Team/commands/delivery.md +1 -1
- package/Dev/i18n/en/Vercel/CLAUDE.md.template +2 -2
- package/Dev/i18n/en/Vercel/agents/vercel-reviewer.md +8 -8
- package/Dev/i18n/en/Vite/CLAUDE.md.template +2 -2
- package/Dev/i18n/en/Vite/agents/vite-reviewer.md +19 -17
- package/Dev/i18n/en/Vite/commands/check-compliance.md +2 -2
- package/Dev/i18n/en/Workflow/commands/review.md +0 -0
- package/Dev/i18n/en/Workflow/commands/start.md +0 -0
- package/Dev/i18n/es/Angular/agents/angular-reviewer.md +3 -3
- package/Dev/i18n/es/Common/agents/devops-engineer.md +15 -1
- package/Dev/i18n/es/Common/agents/ralph-conductor.md +11 -0
- package/Dev/i18n/es/Common/agents/refactoring-specialist.md +9 -0
- package/Dev/i18n/es/Common/agents/security-auditor.md +10 -7
- package/Dev/i18n/es/Common/agents/tdd-coach.md +9 -0
- package/Dev/i18n/es/Common/agents/uiux-orchestrator.md +10 -1
- package/Dev/i18n/es/Common/commands/getting-started.md +2 -2
- package/Dev/i18n/es/Common/commands/setup-rtk.md +2 -2
- package/Dev/i18n/es/Common/rules/04-solid-principles.md +1 -1
- package/Dev/i18n/es/Common/rules/05-kiss-dry-yagni.md +5 -2
- package/Dev/i18n/es/Common/rules/10-documentation.md +1 -1
- package/Dev/i18n/es/Common/rules/11-security.md +76 -73
- package/Dev/i18n/es/Common/rules/12-context-management.md +29 -19
- package/Dev/i18n/es/Common/templates/settings.json.template +6 -6
- package/Dev/i18n/es/Flutter/agents/flutter-reviewer.md +4 -4
- package/Dev/i18n/es/Flutter/rules/06-tooling.md +31 -25
- package/Dev/i18n/es/Flutter/rules/07-testing-flutter.md +0 -0
- package/Dev/i18n/es/Flutter/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/es/Flutter/rules/12-performance.md +17 -17
- package/Dev/i18n/es/Flutter/rules/13-state-management.md +0 -0
- package/Dev/i18n/es/PHP/agents/php-reviewer.md +6 -6
- package/Dev/i18n/es/PHP/commands/check-compliance.md +3 -3
- package/Dev/i18n/es/PHP/rules/03-coding-standards.md +4 -2
- package/Dev/i18n/es/PHP/rules/06-tooling.md +4 -7
- package/Dev/i18n/es/PHP/rules/08-quality-tools.md +2 -2
- package/Dev/i18n/es/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/es/Paperclip/README.md +1 -1
- package/Dev/i18n/es/Paperclip/commands/setup-company.md +1 -1
- package/Dev/i18n/es/Paperclip/rules/06-tooling.md +3 -3
- package/Dev/i18n/es/Paperclip/rules/11-security-paperclip.md +9 -0
- package/Dev/i18n/es/Paperclip/skills/coding-standards-ts/SKILL.md +1 -1
- package/Dev/i18n/es/Python/commands/generate-model.md +3 -1
- package/Dev/i18n/es/Python/rules/06-tooling.md +1 -1
- package/Dev/i18n/es/Python/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/es/Python/rules/11-security-python.md +2 -2
- package/Dev/i18n/es/React/agents/react-reviewer.md +9 -5
- package/Dev/i18n/es/React/rules/06-tooling.md +0 -2
- package/Dev/i18n/es/React/rules/11-security-react.md +9 -0
- package/Dev/i18n/es/ReactNative/agents/reactnative-reviewer.md +4 -4
- package/Dev/i18n/es/ReactNative/rules/06-tooling.md +19 -3
- package/Dev/i18n/es/Symfony/agents/symfony-reviewer.md +5 -5
- package/Dev/i18n/es/Symfony/checklists/README.md +1 -1
- package/Dev/i18n/es/Symfony/checklists/new-feature.md +2 -2
- package/Dev/i18n/es/Symfony/checklists/pre-commit.md +4 -4
- package/Dev/i18n/es/Symfony/checklists/refactoring.md +1 -1
- package/Dev/i18n/es/Symfony/commands/check-architecture.md +4 -4
- package/Dev/i18n/es/Symfony/commands/check-code-quality.md +15 -15
- package/Dev/i18n/es/Symfony/commands/check-security.md +32 -32
- package/Dev/i18n/es/Symfony/commands/check-testing.md +16 -16
- package/Dev/i18n/es/Symfony/rules/03-coding-standards.md +4 -4
- package/Dev/i18n/es/Symfony/rules/06-docker-hadolint.md +0 -4
- package/Dev/i18n/es/Symfony/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/es/Symfony/rules/16-i18n.md +2 -0
- package/Dev/i18n/es/Symfony/rules/17-async.md +1 -0
- package/Dev/i18n/es/Symfony/rules/19-aggregates.md +1 -0
- package/Dev/i18n/es/Symfony/rules/20-domain-events.md +1 -0
- package/Dev/i18n/es/Team/commands/delivery.md +1 -1
- package/Dev/i18n/es/Vercel/CLAUDE.md.template +2 -2
- package/Dev/i18n/es/Vercel/agents/vercel-reviewer.md +7 -7
- package/Dev/i18n/es/Vite/CLAUDE.md.template +2 -2
- package/Dev/i18n/es/Vite/agents/vite-reviewer.md +19 -17
- package/Dev/i18n/es/Vite/commands/check-compliance.md +2 -2
- package/Dev/i18n/fr/Angular/agents/angular-reviewer.md +3 -3
- package/Dev/i18n/fr/Common/agents/devops-engineer.md +15 -1
- package/Dev/i18n/fr/Common/agents/ralph-conductor.md +12 -1
- package/Dev/i18n/fr/Common/agents/refactoring-specialist.md +9 -0
- package/Dev/i18n/fr/Common/agents/security-auditor.md +10 -7
- package/Dev/i18n/fr/Common/agents/tdd-coach.md +9 -0
- package/Dev/i18n/fr/Common/agents/uiux-orchestrator.md +10 -1
- package/Dev/i18n/fr/Common/commands/getting-started.md +2 -2
- package/Dev/i18n/fr/Common/commands/setup-rtk.md +2 -2
- package/Dev/i18n/fr/Common/rules/04-solid-principles.md +1 -1
- package/Dev/i18n/fr/Common/rules/05-kiss-dry-yagni.md +5 -2
- package/Dev/i18n/fr/Common/rules/10-documentation.md +1 -1
- package/Dev/i18n/fr/Common/rules/11-security.md +76 -73
- package/Dev/i18n/fr/Common/rules/12-context-management.md +30 -20
- package/Dev/i18n/fr/Common/templates/settings.json.template +6 -6
- package/Dev/i18n/fr/Flutter/agents/flutter-reviewer.md +4 -4
- package/Dev/i18n/fr/Flutter/rules/06-tooling.md +10 -4
- package/Dev/i18n/fr/Flutter/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/fr/PHP/agents/php-reviewer.md +6 -6
- package/Dev/i18n/fr/PHP/commands/check-compliance.md +3 -3
- package/Dev/i18n/fr/PHP/rules/03-coding-standards.md +4 -2
- package/Dev/i18n/fr/PHP/rules/06-tooling.md +4 -7
- package/Dev/i18n/fr/PHP/rules/08-quality-tools.md +2 -2
- package/Dev/i18n/fr/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/fr/Paperclip/README.md +1 -1
- package/Dev/i18n/fr/Paperclip/commands/setup-company.md +1 -1
- package/Dev/i18n/fr/Paperclip/rules/06-tooling.md +3 -3
- package/Dev/i18n/fr/Paperclip/rules/11-security-paperclip.md +9 -0
- package/Dev/i18n/fr/Paperclip/skills/coding-standards-ts/SKILL.md +1 -1
- package/Dev/i18n/fr/Python/commands/generate-model.md +3 -1
- package/Dev/i18n/fr/Python/rules/06-tooling.md +1 -3
- package/Dev/i18n/fr/Python/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/fr/Python/rules/11-security-python.md +2 -2
- package/Dev/i18n/fr/React/agents/react-reviewer.md +9 -5
- package/Dev/i18n/fr/React/rules/06-tooling.md +0 -2
- package/Dev/i18n/fr/React/rules/11-security-react.md +9 -0
- package/Dev/i18n/fr/ReactNative/agents/reactnative-reviewer.md +4 -4
- package/Dev/i18n/fr/ReactNative/rules/06-tooling.md +19 -3
- package/Dev/i18n/fr/Symfony/agents/symfony-reviewer.md +5 -5
- package/Dev/i18n/fr/Symfony/checklists/README.md +1 -1
- package/Dev/i18n/fr/Symfony/checklists/new-feature.md +2 -2
- package/Dev/i18n/fr/Symfony/checklists/pre-commit.md +4 -4
- package/Dev/i18n/fr/Symfony/checklists/refactoring.md +1 -1
- package/Dev/i18n/fr/Symfony/commands/check-architecture.md +4 -4
- package/Dev/i18n/fr/Symfony/commands/check-code-quality.md +15 -15
- package/Dev/i18n/fr/Symfony/commands/check-security.md +32 -32
- package/Dev/i18n/fr/Symfony/commands/check-testing.md +16 -16
- package/Dev/i18n/fr/Symfony/rules/03-coding-standards.md +4 -4
- package/Dev/i18n/fr/Symfony/rules/06-docker-hadolint.md +0 -4
- package/Dev/i18n/fr/Symfony/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/fr/Symfony/rules/16-i18n.md +2 -0
- package/Dev/i18n/fr/Symfony/rules/17-async.md +1 -0
- package/Dev/i18n/fr/Symfony/rules/19-aggregates.md +1 -0
- package/Dev/i18n/fr/Symfony/rules/20-domain-events.md +1 -0
- package/Dev/i18n/fr/Team/commands/delivery.md +1 -1
- package/Dev/i18n/fr/Vercel/CLAUDE.md.template +2 -2
- package/Dev/i18n/fr/Vercel/agents/vercel-reviewer.md +8 -8
- package/Dev/i18n/fr/Vite/CLAUDE.md.template +2 -2
- package/Dev/i18n/fr/Vite/agents/vite-reviewer.md +19 -17
- package/Dev/i18n/fr/Vite/commands/check-compliance.md +2 -2
- package/Dev/i18n/pt/Angular/agents/angular-reviewer.md +3 -3
- package/Dev/i18n/pt/Common/agents/devops-engineer.md +15 -1
- package/Dev/i18n/pt/Common/agents/ralph-conductor.md +11 -0
- package/Dev/i18n/pt/Common/agents/refactoring-specialist.md +9 -0
- package/Dev/i18n/pt/Common/agents/security-auditor.md +10 -7
- package/Dev/i18n/pt/Common/agents/tdd-coach.md +9 -0
- package/Dev/i18n/pt/Common/agents/uiux-orchestrator.md +10 -1
- package/Dev/i18n/pt/Common/commands/getting-started.md +2 -2
- package/Dev/i18n/pt/Common/commands/setup-rtk.md +2 -2
- package/Dev/i18n/pt/Common/rules/04-solid-principles.md +1 -1
- package/Dev/i18n/pt/Common/rules/05-kiss-dry-yagni.md +5 -2
- package/Dev/i18n/pt/Common/rules/10-documentation.md +1 -1
- package/Dev/i18n/pt/Common/rules/11-security.md +76 -73
- package/Dev/i18n/pt/Common/rules/12-context-management.md +29 -19
- package/Dev/i18n/pt/Common/templates/settings.json.template +6 -6
- package/Dev/i18n/pt/Flutter/agents/flutter-reviewer.md +4 -4
- package/Dev/i18n/pt/Flutter/rules/06-tooling.md +12 -6
- package/Dev/i18n/pt/Flutter/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/pt/PHP/agents/php-reviewer.md +6 -6
- package/Dev/i18n/pt/PHP/commands/check-compliance.md +3 -3
- package/Dev/i18n/pt/PHP/rules/03-coding-standards.md +4 -2
- package/Dev/i18n/pt/PHP/rules/06-tooling.md +4 -7
- package/Dev/i18n/pt/PHP/rules/08-quality-tools.md +2 -2
- package/Dev/i18n/pt/Paperclip/CLAUDE.md.template +2 -2
- package/Dev/i18n/pt/Paperclip/README.md +1 -1
- package/Dev/i18n/pt/Paperclip/commands/setup-company.md +1 -1
- package/Dev/i18n/pt/Paperclip/rules/06-tooling.md +3 -3
- package/Dev/i18n/pt/Paperclip/rules/11-security-paperclip.md +9 -0
- package/Dev/i18n/pt/Paperclip/skills/coding-standards-ts/SKILL.md +1 -1
- package/Dev/i18n/pt/Python/commands/generate-model.md +3 -1
- package/Dev/i18n/pt/Python/rules/06-tooling.md +1 -1
- package/Dev/i18n/pt/Python/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/pt/Python/rules/11-security-python.md +2 -2
- package/Dev/i18n/pt/React/agents/react-reviewer.md +9 -5
- package/Dev/i18n/pt/React/rules/06-tooling.md +0 -2
- package/Dev/i18n/pt/React/rules/11-security-react.md +9 -0
- package/Dev/i18n/pt/ReactNative/agents/reactnative-reviewer.md +4 -4
- package/Dev/i18n/pt/ReactNative/rules/06-tooling.md +19 -3
- package/Dev/i18n/pt/Symfony/agents/symfony-reviewer.md +5 -5
- package/Dev/i18n/pt/Symfony/checklists/README.md +1 -1
- package/Dev/i18n/pt/Symfony/checklists/new-feature.md +2 -2
- package/Dev/i18n/pt/Symfony/checklists/pre-commit.md +4 -4
- package/Dev/i18n/pt/Symfony/checklists/refactoring.md +1 -1
- package/Dev/i18n/pt/Symfony/commands/check-architecture.md +4 -4
- package/Dev/i18n/pt/Symfony/commands/check-code-quality.md +15 -15
- package/Dev/i18n/pt/Symfony/commands/check-security.md +32 -32
- package/Dev/i18n/pt/Symfony/commands/check-testing.md +16 -16
- package/Dev/i18n/pt/Symfony/rules/03-coding-standards.md +4 -4
- package/Dev/i18n/pt/Symfony/rules/06-docker-hadolint.md +0 -4
- package/Dev/i18n/pt/Symfony/rules/08-quality-tools.md +1 -1
- package/Dev/i18n/pt/Symfony/rules/16-i18n.md +2 -0
- package/Dev/i18n/pt/Symfony/rules/17-async.md +1 -0
- package/Dev/i18n/pt/Symfony/rules/19-aggregates.md +1 -0
- package/Dev/i18n/pt/Symfony/rules/20-domain-events.md +1 -0
- package/Dev/i18n/pt/Team/commands/delivery.md +1 -1
- package/Dev/i18n/pt/Vercel/CLAUDE.md.template +2 -2
- package/Dev/i18n/pt/Vercel/agents/vercel-reviewer.md +8 -8
- package/Dev/i18n/pt/Vite/CLAUDE.md.template +2 -2
- package/Dev/i18n/pt/Vite/agents/vite-reviewer.md +19 -17
- package/Dev/i18n/pt/Vite/commands/check-compliance.md +2 -2
- package/Dev/scripts/install-paperclip-rules.sh +5 -5
- package/Dev/scripts/install-vite-rules.sh +4 -4
- package/Infra/i18n/de/Ansible/agents/ansible-architect.md +2 -0
- package/Infra/i18n/de/Docker/commands/docker-architecture.md +0 -2
- package/Infra/i18n/de/Docker/commands/docker-compose-setup.md +0 -2
- package/Infra/i18n/de/FrankenPHP/agents/frankenphp-architect.md +4 -1
- package/Infra/i18n/de/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/de/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/de/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/de/Hcloud/agents/hcloud-architect.md +14 -4
- package/Infra/i18n/de/Hcloud/agents/hcloud-cost.md +1 -1
- package/Infra/i18n/de/Hcloud/agents/hcloud-debug.md +1 -1
- package/Infra/i18n/de/Hcloud/agents/hcloud-deployment.md +2 -2
- package/Infra/i18n/de/Hcloud/agents/hcloud-security.md +1 -1
- package/Infra/i18n/de/Hcloud/commands/architecture.md +3 -3
- package/Infra/i18n/de/Hcloud/commands/debug.md +1 -1
- package/Infra/i18n/de/Kubernetes/agents/kubernetes-architect.md +3 -3
- package/Infra/i18n/de/Kubernetes/commands/architecture.md +1 -1
- package/Infra/i18n/de/OpenTofu/agents/opentofu-architect.md +1 -1
- package/Infra/i18n/de/OpenTofu/agents/opentofu-deployment.md +2 -2
- package/Infra/i18n/de/PgBouncer/agents/pgbouncer-architect.md +11 -2
- package/Infra/i18n/de/PgBouncer/agents/pgbouncer-debug.md +1 -0
- package/Infra/i18n/de/PgBouncer/agents/pgbouncer-deployment.md +38 -30
- package/Infra/i18n/de/PgBouncer/commands/deploy-setup.md +1 -1
- package/Infra/i18n/en/Ansible/agents/ansible-architect.md +2 -0
- package/Infra/i18n/en/Docker/commands/docker-architecture.md +0 -2
- package/Infra/i18n/en/Docker/commands/docker-compose-setup.md +0 -2
- package/Infra/i18n/en/FrankenPHP/agents/frankenphp-architect.md +4 -1
- package/Infra/i18n/en/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/en/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/en/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/en/Hcloud/agents/hcloud-architect.md +14 -4
- package/Infra/i18n/en/Hcloud/agents/hcloud-cost.md +1 -1
- package/Infra/i18n/en/Hcloud/agents/hcloud-debug.md +1 -1
- package/Infra/i18n/en/Hcloud/agents/hcloud-deployment.md +2 -2
- package/Infra/i18n/en/Hcloud/agents/hcloud-security.md +1 -1
- package/Infra/i18n/en/Hcloud/commands/architecture.md +3 -3
- package/Infra/i18n/en/Hcloud/commands/debug.md +1 -1
- package/Infra/i18n/en/Kubernetes/agents/kubernetes-architect.md +3 -3
- package/Infra/i18n/en/Kubernetes/commands/architecture.md +1 -1
- package/Infra/i18n/en/OpenTofu/agents/opentofu-architect.md +1 -1
- package/Infra/i18n/en/OpenTofu/agents/opentofu-deployment.md +2 -2
- package/Infra/i18n/en/PgBouncer/agents/pgbouncer-architect.md +11 -2
- package/Infra/i18n/en/PgBouncer/agents/pgbouncer-debug.md +1 -0
- package/Infra/i18n/en/PgBouncer/agents/pgbouncer-deployment.md +38 -30
- package/Infra/i18n/en/PgBouncer/commands/deploy-setup.md +1 -1
- package/Infra/i18n/es/Ansible/agents/ansible-architect.md +2 -0
- package/Infra/i18n/es/Docker/commands/docker-architecture.md +0 -2
- package/Infra/i18n/es/Docker/commands/docker-compose-setup.md +0 -2
- package/Infra/i18n/es/FrankenPHP/agents/frankenphp-architect.md +4 -1
- package/Infra/i18n/es/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/es/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/es/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/es/Hcloud/agents/hcloud-architect.md +14 -4
- package/Infra/i18n/es/Hcloud/agents/hcloud-cost.md +1 -1
- package/Infra/i18n/es/Hcloud/agents/hcloud-debug.md +1 -1
- package/Infra/i18n/es/Hcloud/agents/hcloud-deployment.md +2 -2
- package/Infra/i18n/es/Hcloud/agents/hcloud-security.md +1 -1
- package/Infra/i18n/es/Hcloud/commands/architecture.md +3 -3
- package/Infra/i18n/es/Hcloud/commands/debug.md +1 -1
- package/Infra/i18n/es/Kubernetes/agents/kubernetes-architect.md +3 -3
- package/Infra/i18n/es/Kubernetes/commands/architecture.md +1 -1
- package/Infra/i18n/es/OpenTofu/agents/opentofu-architect.md +1 -1
- package/Infra/i18n/es/OpenTofu/agents/opentofu-deployment.md +2 -2
- package/Infra/i18n/es/PgBouncer/agents/pgbouncer-architect.md +11 -2
- package/Infra/i18n/es/PgBouncer/agents/pgbouncer-debug.md +1 -0
- package/Infra/i18n/es/PgBouncer/agents/pgbouncer-deployment.md +38 -30
- package/Infra/i18n/es/PgBouncer/commands/deploy-setup.md +1 -1
- package/Infra/i18n/fr/Ansible/agents/ansible-architect.md +2 -0
- package/Infra/i18n/fr/Docker/commands/docker-architecture.md +0 -2
- package/Infra/i18n/fr/Docker/commands/docker-compose-setup.md +0 -2
- package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-architect.md +4 -1
- package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/fr/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/fr/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/fr/Hcloud/agents/hcloud-architect.md +14 -4
- package/Infra/i18n/fr/Hcloud/agents/hcloud-cost.md +1 -1
- package/Infra/i18n/fr/Hcloud/agents/hcloud-debug.md +1 -1
- package/Infra/i18n/fr/Hcloud/agents/hcloud-deployment.md +2 -2
- package/Infra/i18n/fr/Hcloud/agents/hcloud-security.md +1 -1
- package/Infra/i18n/fr/Hcloud/commands/architecture.md +3 -3
- package/Infra/i18n/fr/Hcloud/commands/debug.md +1 -1
- package/Infra/i18n/fr/Kubernetes/agents/kubernetes-architect.md +3 -3
- package/Infra/i18n/fr/Kubernetes/commands/architecture.md +1 -1
- package/Infra/i18n/fr/OpenTofu/agents/opentofu-architect.md +1 -1
- package/Infra/i18n/fr/OpenTofu/agents/opentofu-deployment.md +2 -2
- package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-architect.md +11 -2
- package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-debug.md +1 -0
- package/Infra/i18n/fr/PgBouncer/agents/pgbouncer-deployment.md +38 -30
- package/Infra/i18n/fr/PgBouncer/commands/deploy-setup.md +1 -1
- package/Infra/i18n/pt/Ansible/agents/ansible-architect.md +2 -0
- package/Infra/i18n/pt/Docker/commands/docker-architecture.md +0 -2
- package/Infra/i18n/pt/Docker/commands/docker-compose-setup.md +0 -2
- package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-architect.md +4 -1
- package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-deployment.md +2 -2
- package/Infra/i18n/pt/FrankenPHP/agents/frankenphp-security.md +1 -1
- package/Infra/i18n/pt/FrankenPHP/commands/deploy-setup.md +1 -1
- package/Infra/i18n/pt/Hcloud/agents/hcloud-architect.md +14 -4
- package/Infra/i18n/pt/Hcloud/agents/hcloud-cost.md +1 -1
- package/Infra/i18n/pt/Hcloud/agents/hcloud-debug.md +1 -1
- package/Infra/i18n/pt/Hcloud/agents/hcloud-deployment.md +2 -2
- package/Infra/i18n/pt/Hcloud/agents/hcloud-security.md +1 -1
- package/Infra/i18n/pt/Hcloud/commands/architecture.md +3 -3
- package/Infra/i18n/pt/Hcloud/commands/debug.md +1 -1
- package/Infra/i18n/pt/Kubernetes/agents/kubernetes-architect.md +3 -3
- package/Infra/i18n/pt/Kubernetes/commands/architecture.md +1 -1
- package/Infra/i18n/pt/OpenTofu/agents/opentofu-architect.md +1 -1
- package/Infra/i18n/pt/OpenTofu/agents/opentofu-deployment.md +2 -2
- package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-architect.md +11 -2
- package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-debug.md +1 -0
- package/Infra/i18n/pt/PgBouncer/agents/pgbouncer-deployment.md +38 -30
- package/Infra/i18n/pt/PgBouncer/commands/deploy-setup.md +1 -1
- package/README.md +30 -22
- package/Tools/Ralph/.ralph/hooks/pre-tool-context.sh +2 -2
- package/Tools/StatusLine/README.md +1 -1
- package/bundles/cursor/.cursorrules +32 -32
- package/bundles/windsurf/.windsurfrules +32 -32
- package/cli/lib/doctor.js +15 -15
- package/cli/lib/tech-registry.js +10 -10
- package/package.json +2 -1
|
@@ -7,7 +7,7 @@ description: PgBouncer deployment and CI/CD pipeline specialist
|
|
|
7
7
|
|
|
8
8
|
## Identite
|
|
9
9
|
|
|
10
|
-
Vous etes un **Ingenieur Senior de Deploiement PgBouncer** specialise dans les deploiements Docker
|
|
10
|
+
Vous etes un **Ingenieur Senior de Deploiement PgBouncer** specialise dans les deploiements Docker en conteneurs, les patterns Kubernetes sidecar et standalone, la configuration de charts Helm, la gestion de services systemd et les strategies de reload sans interruption. Vous concevez des pipelines de deploiement pour des mises en production fiables de PgBouncer dans tous les environnements.
|
|
11
11
|
|
|
12
12
|
## Expertise technique
|
|
13
13
|
|
|
@@ -15,7 +15,7 @@ Vous etes un **Ingenieur Senior de Deploiement PgBouncer** specialise dans les d
|
|
|
15
15
|
|
|
16
16
|
| Domaine | Expertise | Perimetre |
|
|
17
17
|
|---------|-----------|-----------|
|
|
18
|
-
| Deploiement Docker | Expert | Image
|
|
18
|
+
| Deploiement Docker | Expert | Image communautaire, Dockerfile personnalise, health checks |
|
|
19
19
|
| Patterns Kubernetes | Expert | Sidecar par pod, Deployment standalone, Helm |
|
|
20
20
|
| Gestion systemd | Expert | Fichiers unit, reload, journalisation journald |
|
|
21
21
|
| Reload sans interruption | Expert | SIGHUP, commande RELOAD, drain graceful |
|
|
@@ -55,25 +55,28 @@ Vous etes un **Ingenieur Senior de Deploiement PgBouncer** specialise dans les d
|
|
|
55
55
|
|
|
56
56
|
#### Docker Compose
|
|
57
57
|
|
|
58
|
+
> **Note sur l'image :** `bitnami/pgbouncer` n'est plus maintenue sur Docker Hub (Bitnami a restreint son catalogue public en 2025 ; `bitnamilegacy/pgbouncer` est figée en 1.24.1, touchée par les CVE corrigées en 1.26.0). Les exemples utilisent l'image communautaire `edoburu/pgbouncer` (variables `DB_*`, écoute sur 5432 sauf si `LISTEN_PORT` est défini). Épingler le tag et auditer l'image avant la production.
|
|
59
|
+
|
|
58
60
|
```yaml
|
|
59
61
|
# docker-compose.yml
|
|
60
62
|
services:
|
|
61
63
|
pgbouncer:
|
|
62
|
-
image:
|
|
64
|
+
image: edoburu/pgbouncer:v1.26.0-p0
|
|
63
65
|
ports:
|
|
64
66
|
- "6432:6432"
|
|
65
67
|
environment:
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
68
|
+
- DB_HOST=postgresql
|
|
69
|
+
- DB_PORT=5432
|
|
70
|
+
- DB_USER=app_user
|
|
71
|
+
- DB_PASSWORD=${DB_PASSWORD}
|
|
72
|
+
- DB_NAME=app_production
|
|
73
|
+
- LISTEN_PORT=6432
|
|
74
|
+
- POOL_MODE=transaction
|
|
75
|
+
- MAX_CLIENT_CONN=200
|
|
76
|
+
- DEFAULT_POOL_SIZE=20
|
|
77
|
+
- MIN_POOL_SIZE=5
|
|
78
|
+
- SERVER_RESET_QUERY=DISCARD ALL
|
|
79
|
+
- AUTH_TYPE=scram-sha-256
|
|
77
80
|
healthcheck:
|
|
78
81
|
test: ["CMD", "pg_isready", "-h", "localhost", "-p", "6432"]
|
|
79
82
|
interval: 10s
|
|
@@ -85,13 +88,14 @@ services:
|
|
|
85
88
|
restart: unless-stopped
|
|
86
89
|
|
|
87
90
|
postgresql:
|
|
88
|
-
image: postgres:
|
|
91
|
+
image: postgres:18
|
|
89
92
|
environment:
|
|
90
93
|
- POSTGRES_DB=app_production
|
|
91
94
|
- POSTGRES_USER=app_user
|
|
92
95
|
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
|
93
96
|
volumes:
|
|
94
|
-
|
|
97
|
+
# PostgreSQL 18+ images keep data under /var/lib/postgresql/<major>/
|
|
98
|
+
- pgdata:/var/lib/postgresql
|
|
95
99
|
healthcheck:
|
|
96
100
|
test: ["CMD-SHELL", "pg_isready -U app_user"]
|
|
97
101
|
interval: 10s
|
|
@@ -124,31 +128,33 @@ spec:
|
|
|
124
128
|
spec:
|
|
125
129
|
containers:
|
|
126
130
|
- name: pgbouncer
|
|
127
|
-
image:
|
|
131
|
+
image: edoburu/pgbouncer:v1.26.0-p0
|
|
128
132
|
ports:
|
|
129
133
|
- containerPort: 6432
|
|
130
134
|
env:
|
|
131
|
-
- name:
|
|
135
|
+
- name: DB_HOST
|
|
132
136
|
value: postgresql.database.svc.cluster.local
|
|
133
|
-
- name:
|
|
137
|
+
- name: DB_PORT
|
|
134
138
|
value: "5432"
|
|
135
|
-
- name:
|
|
139
|
+
- name: DB_NAME
|
|
136
140
|
value: app_production
|
|
137
|
-
- name:
|
|
141
|
+
- name: DB_USER
|
|
138
142
|
valueFrom:
|
|
139
143
|
secretKeyRef:
|
|
140
144
|
name: pgbouncer-secrets
|
|
141
145
|
key: db-username
|
|
142
|
-
- name:
|
|
146
|
+
- name: DB_PASSWORD
|
|
143
147
|
valueFrom:
|
|
144
148
|
secretKeyRef:
|
|
145
149
|
name: pgbouncer-secrets
|
|
146
150
|
key: db-password
|
|
147
|
-
- name:
|
|
151
|
+
- name: LISTEN_PORT
|
|
152
|
+
value: "6432"
|
|
153
|
+
- name: POOL_MODE
|
|
148
154
|
value: transaction
|
|
149
|
-
- name:
|
|
155
|
+
- name: MAX_CLIENT_CONN
|
|
150
156
|
value: "200"
|
|
151
|
-
- name:
|
|
157
|
+
- name: DEFAULT_POOL_SIZE
|
|
152
158
|
value: "20"
|
|
153
159
|
livenessProbe:
|
|
154
160
|
tcpSocket:
|
|
@@ -204,17 +210,19 @@ spec:
|
|
|
204
210
|
- name: DATABASE_URL
|
|
205
211
|
value: "postgresql://app_user:$(DB_PASSWORD)@localhost:6432/app_production"
|
|
206
212
|
- name: pgbouncer
|
|
207
|
-
image:
|
|
213
|
+
image: edoburu/pgbouncer:v1.26.0-p0
|
|
208
214
|
ports:
|
|
209
215
|
- containerPort: 6432
|
|
210
216
|
env:
|
|
211
|
-
- name:
|
|
217
|
+
- name: DB_HOST
|
|
212
218
|
value: postgresql.database.svc.cluster.local
|
|
213
|
-
- name:
|
|
219
|
+
- name: LISTEN_PORT
|
|
220
|
+
value: "6432"
|
|
221
|
+
- name: POOL_MODE
|
|
214
222
|
value: transaction
|
|
215
|
-
- name:
|
|
223
|
+
- name: MAX_CLIENT_CONN
|
|
216
224
|
value: "100"
|
|
217
|
-
- name:
|
|
225
|
+
- name: DEFAULT_POOL_SIZE
|
|
218
226
|
value: "10"
|
|
219
227
|
resources:
|
|
220
228
|
requests:
|
|
@@ -54,7 +54,7 @@ STRATEGIE DE DEPLOIEMENT
|
|
|
54
54
|
|
|
55
55
|
Methode : {Docker Compose / K8s Standalone / K8s Sidecar / Systemd}
|
|
56
56
|
HA : {Active-passif / Replicas multiples / Instance unique}
|
|
57
|
-
Image :
|
|
57
|
+
Image : edoburu/pgbouncer:v1.26.0-p0
|
|
58
58
|
|
|
59
59
|
| Decision | Choix | Justification |
|
|
60
60
|
|----------|-------|---------------|
|
|
@@ -32,6 +32,8 @@ Voce e um **Arquiteto Ansible Senior** capaz de projetar arquiteturas completas
|
|
|
32
32
|
| Multi-ambiente | Separacao dev / staging / producao | Alta |
|
|
33
33
|
| Hierarquico (Landscape/Type/Function) | Gerenciamento de datacenter corporativo | Alta |
|
|
34
34
|
|
|
35
|
+
> Hetzner Cloud: usar a coleção `hetzner.hcloud` (7.2.0) com ansible-core 2.21.5, fixada em `requirements.yml`.
|
|
36
|
+
|
|
35
37
|
## Metodologia
|
|
36
38
|
|
|
37
39
|
### Fase 1 -- Descoberta
|
|
@@ -7,7 +7,7 @@ description: FrankenPHP Caddyfile design, worker topology, and framework integra
|
|
|
7
7
|
|
|
8
8
|
## Identidade
|
|
9
9
|
|
|
10
|
-
Voce e um **Arquiteto Senior de FrankenPHP** capaz de projetar topologias completas de servico de aplicacoes PHP usando FrankenPHP 1.
|
|
10
|
+
Voce e um **Arquiteto Senior de FrankenPHP** capaz de projetar topologias completas de servico de aplicacoes PHP usando FrankenPHP 1.13+. Voce coordena decisoes de worker mode vs classic mode, dimensionamento de threads, design de Caddyfile, integracao com frameworks (Symfony, Laravel), configuracao de Mercure real-time e Early Hints (103) para entregar deployments FrankenPHP prontos para producao.
|
|
11
11
|
|
|
12
12
|
## Expertise Tecnica
|
|
13
13
|
|
|
@@ -120,6 +120,9 @@ Extrair e esclarecer:
|
|
|
120
120
|
- `max_requests = 500` para prevenir acumulo de memoria
|
|
121
121
|
- Benchmark com `wrk` ou `k6`, ajustar para cima/baixo
|
|
122
122
|
- Monitorar: memoria RSS por worker, tempo de resposta p99
|
|
123
|
+
- Usar FrankenPHP 1.13.0+: a 1.12.4 é vulnerável (correções de segurança na 1.12.5: phpinfo na imagem padrão, vazamento de ID de sessão em worker mode, timeout do body; 5 advisories, 2 deles high, na 1.13.0)
|
|
124
|
+
- FrankenPHP 1.13+: `num_threads` conta apenas os threads para requisições que nenhum worker atende; os threads de worker são somados, e a inicialização falha se `max_threads` < `num_threads` + threads de worker
|
|
125
|
+
- O hot reload em desenvolvimento passa pelo Mercure 1.0: `$_SERVER['FRANKENPHP_HOT_RELOAD']` agora anuncia `/.well-known/mercure?match=<topic>` (não fixar `?topic=` no código)
|
|
123
126
|
|
|
124
127
|
### Fase 3 -- Blueprint de Implementacao
|
|
125
128
|
|
|
@@ -59,7 +59,7 @@ Voce e um **Engenheiro Senior de Deployment FrankenPHP** especializado em deploy
|
|
|
59
59
|
# docker-compose.yml
|
|
60
60
|
services:
|
|
61
61
|
app:
|
|
62
|
-
image: dunglas/frankenphp:1.
|
|
62
|
+
image: dunglas/frankenphp:1.13-php8.5-bookworm
|
|
63
63
|
ports:
|
|
64
64
|
- "80:80"
|
|
65
65
|
- "443:443"
|
|
@@ -88,7 +88,7 @@ volumes:
|
|
|
88
88
|
|
|
89
89
|
```dockerfile
|
|
90
90
|
# Stage 1: Dependencias
|
|
91
|
-
FROM dunglas/frankenphp:1.
|
|
91
|
+
FROM dunglas/frankenphp:1.13-php8.5-bookworm AS base
|
|
92
92
|
|
|
93
93
|
# Instalar extensoes PHP
|
|
94
94
|
RUN install-php-extensions \
|
|
@@ -185,7 +185,7 @@ example.com {
|
|
|
185
185
|
|
|
186
186
|
```dockerfile
|
|
187
187
|
# Dockerfile - FrankenPHP nao-root
|
|
188
|
-
FROM dunglas/frankenphp:1.
|
|
188
|
+
FROM dunglas/frankenphp:1.13-php8.5-bookworm
|
|
189
189
|
|
|
190
190
|
# Instalar extensoes
|
|
191
191
|
RUN install-php-extensions pdo_pgsql intl opcache
|
|
@@ -53,7 +53,7 @@ ESTRATEGIA DE DEPLOYMENT
|
|
|
53
53
|
──────────────────────────────────────────────────────────────
|
|
54
54
|
|
|
55
55
|
Metodo: {Docker Compose / Kubernetes / Binario Standalone}
|
|
56
|
-
Imagem: dunglas/frankenphp:1.
|
|
56
|
+
Imagem: dunglas/frankenphp:1.13-php8.5-bookworm
|
|
57
57
|
Worker mode: {sim/nao}
|
|
58
58
|
|
|
59
59
|
| Decisao | Escolha | Justificativa |
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud infrastructure architecture designer
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Architect
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removido (2026-07-01)**: substituído por `location`; os endpoints `datacenter` retornam HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` em vez de `datacenter`. Provider Terraform da Hetzner Cloud >= 1.70.0. Fonte: https://docs.hetzner.cloud/changelog e https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identidade
|
|
11
11
|
|
|
@@ -135,7 +135,7 @@ hcloud placement-group create --name web-spread --type spread
|
|
|
135
135
|
# Servers
|
|
136
136
|
hcloud server create \
|
|
137
137
|
--name web-01 \
|
|
138
|
-
--type
|
|
138
|
+
--type cx23 \
|
|
139
139
|
--image ubuntu-24.04 \
|
|
140
140
|
--location fsn1 \
|
|
141
141
|
--ssh-key deploy-key \
|
|
@@ -199,13 +199,23 @@ hcloud network add-subnet primary-net --type cloud --network-zone eu-central --i
|
|
|
199
199
|
|
|
200
200
|
# Servers in different locations with placement groups
|
|
201
201
|
hcloud placement-group create --name pg-primary --type spread
|
|
202
|
-
hcloud server create --name app-fsn-01 --type
|
|
202
|
+
hcloud server create --name app-fsn-01 --type cpx32 --image ubuntu-24.04 \
|
|
203
203
|
--location fsn1 --placement-group pg-primary --network primary-net
|
|
204
204
|
|
|
205
|
-
hcloud server create --name app-hel-01 --type
|
|
205
|
+
hcloud server create --name app-hel-01 --type cpx32 --image ubuntu-24.04 \
|
|
206
206
|
--location hel1 --network primary-net
|
|
207
207
|
```
|
|
208
208
|
|
|
209
|
+
## Mudanças da API Hetzner a considerar (2026)
|
|
210
|
+
|
|
211
|
+
- Os Load Balancers aceitam Primary IPs existentes na criação (`public_net.ipv4` / `public_net.ipv6`; provider >= 1.70.0: `ipv4_id` / `ipv6_id`); a atribuição não pode ser alterada depois (changelog 2026-10-05)
|
|
212
|
+
- Primary IPs e Floating IPs devem ser desatribuídos antes de serem excluídos: a API retorna `must_be_unassigned` (desde 2026-05-01)
|
|
213
|
+
- `dns_ptr` é obrigatório nos pedidos de alteração (Primary IPs, Floating IPs, Servers, Load Balancers) desde 2026-09-30; `null` redefine o ponteiro
|
|
214
|
+
- O campo `deprecated` dos server types é removido em 2026-11-02: ler `locations[].deprecation` em vez disso (`null` = não obsoleto)
|
|
215
|
+
- O provider Terraform 1.69 abandona o Terraform 1.14 (1.16 adicionado); manter o provider hcloud em `>= 1.70.0`, CLI hcloud 1.70.1
|
|
216
|
+
- Os server types cx22/cx32/cx42/cx52 e cpx11-cpx51 não podem mais ser pedidos desde 2026-01-01: usar cx23/cx33/cx43/cx53 e cpx12/cpx22/cpx32/cpx42/cpx52/cpx62
|
|
217
|
+
- Ansible: usar a coleção `hetzner.hcloud` (7.2.0, requer um ansible-core recente, ex. 2.21.5) e fixar a versão em `requirements.yml`
|
|
218
|
+
|
|
209
219
|
## Checklist de Arquitetura
|
|
210
220
|
|
|
211
221
|
### Design
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud cost optimization and right-sizing specialist
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Cost Specialist
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removido (2026-07-01)**: substituído por `location`; os endpoints `datacenter` retornam HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` em vez de `datacenter`. Provider Terraform da Hetzner Cloud >= 1.70.0. Fonte: https://docs.hetzner.cloud/changelog e https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identidade
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud troubleshooting specialist
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Debug Specialist
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removido (2026-07-01)**: substituído por `location`; os endpoints `datacenter` retornam HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` em vez de `datacenter`. Provider Terraform da Hetzner Cloud >= 1.70.0. Fonte: https://docs.hetzner.cloud/changelog e https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identidade
|
|
11
11
|
|
|
@@ -137,7 +137,7 @@ Voce e um **Engenheiro Senior de Deployment Hetzner Cloud** especializado em int
|
|
|
137
137
|
# Create new server from image
|
|
138
138
|
hcloud server create \
|
|
139
139
|
--name prod-blue-$(date +%s) \
|
|
140
|
-
--type
|
|
140
|
+
--type cpx32 \
|
|
141
141
|
--image ${{ needs.build-image.outputs.image_id }} \
|
|
142
142
|
--location fsn1 \
|
|
143
143
|
--ssh-key deploy \
|
|
@@ -189,7 +189,7 @@ source "hcloud" "app" {
|
|
|
189
189
|
token = var.hcloud_token
|
|
190
190
|
image = "ubuntu-24.04"
|
|
191
191
|
location = "fsn1"
|
|
192
|
-
server_type = "
|
|
192
|
+
server_type = "cx23"
|
|
193
193
|
server_name = "packer-build-{{timestamp}}"
|
|
194
194
|
ssh_username = "root"
|
|
195
195
|
snapshot_name = "app-{{timestamp}}"
|
|
@@ -5,7 +5,7 @@ description: Hetzner Cloud security and firewall specialist
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Security Specialist
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removido (2026-07-01)**: substituído por `location`; os endpoints `datacenter` retornam HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` em vez de `datacenter`. Provider Terraform da Hetzner Cloud >= 1.70.0. Fonte: https://docs.hetzner.cloud/changelog e https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
## Identidade
|
|
11
11
|
|
|
@@ -5,7 +5,7 @@ argument-hint: <Project> [constraints]
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Architecture
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removido (2026-07-01)**: substituído por `location`; os endpoints `datacenter` retornam HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` em vez de `datacenter`. Provider Terraform da Hetzner Cloud >= 1.70.0. Fonte: https://docs.hetzner.cloud/changelog e https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
Voce e um arquiteto senior de Hetzner Cloud. Voce deve projetar uma arquitetura completa de infraestrutura em nuvem a partir das especificacoes do projeto.
|
|
11
11
|
|
|
@@ -83,8 +83,8 @@ SERVER TYPE SELECTION
|
|
|
83
83
|
|
|
84
84
|
| Role | Server Type | Count | Justification |
|
|
85
85
|
|------|-------------|-------|---------------|
|
|
86
|
-
| Web | {cax21/
|
|
87
|
-
| App | {
|
|
86
|
+
| Web | {cax21/cx23} | {n} | {reason} |
|
|
87
|
+
| App | {cpx32/cax31} | {n} | {reason} |
|
|
88
88
|
| DB | {ccx23/ccx33} | {n} | {reason} |
|
|
89
89
|
|
|
90
90
|
──────────────────────────────────────────────────────────────
|
|
@@ -5,7 +5,7 @@ argument-hint: <Symptom> [resource]
|
|
|
5
5
|
|
|
6
6
|
# Hcloud Debug
|
|
7
7
|
|
|
8
|
-
> ⚠️
|
|
8
|
+
> ⚠️ **`datacenter` removido (2026-07-01)**: substituído por `location`; os endpoints `datacenter` retornam HTTP 410 desde 2026-10-01. Usar `location = "fsn1"` em vez de `datacenter`. Provider Terraform da Hetzner Cloud >= 1.70.0. Fonte: https://docs.hetzner.cloud/changelog e https://github.com/hetznercloud/terraform-provider-hcloud/releases
|
|
9
9
|
|
|
10
10
|
Voce e um especialista em troubleshooting Hetzner Cloud. Voce deve diagnosticar e resolver sistematicamente problemas de infraestrutura a partir dos sintomas fornecidos.
|
|
11
11
|
|
|
@@ -67,8 +67,8 @@ Extrair e esclarecer:
|
|
|
67
67
|
┌─────────────────────────────────────────────────────────┐
|
|
68
68
|
│ INGRESS LAYER │
|
|
69
69
|
│ ┌──────────────┐ ┌──────────────┐ │
|
|
70
|
-
│ │
|
|
71
|
-
│ │
|
|
70
|
+
│ │ Gateway API │─────────│ Cert-Manager│ │
|
|
71
|
+
│ │ (HTTPRoute) │ │ (Let's Enc.)│ │
|
|
72
72
|
│ └──────┬───────┘ └──────────────┘ │
|
|
73
73
|
└─────────┼───────────────────────────────────────────────┘
|
|
74
74
|
│
|
|
@@ -95,7 +95,7 @@ Extrair e esclarecer:
|
|
|
95
95
|
- Resource quotas e limit ranges por namespace
|
|
96
96
|
|
|
97
97
|
3. **Redes**
|
|
98
|
-
-
|
|
98
|
+
- Gateway API (HTTPRoute) como primeira opção (implementações: Envoy Gateway, Traefik, Istio, Cilium); o Ingress NGINX foi descontinuado em março de 2026 (sem mais correções de segurança), migrar com `ingress2gateway`
|
|
99
99
|
- NetworkPolicies para isolamento entre namespaces
|
|
100
100
|
- Estratégia de DNS (descoberta de serviços internos)
|
|
101
101
|
- Terminação TLS e gerenciamento de certificados
|
|
@@ -68,7 +68,7 @@ TOPOLOGIA DE NAMESPACES
|
|
|
68
68
|
┌─────────────────────────────────────────────────────────────┐
|
|
69
69
|
│ INGRESS LAYER │
|
|
70
70
|
│ ┌───────────────┐ ┌───────────────┐ │
|
|
71
|
-
│ │
|
|
71
|
+
│ │ Gateway API │─────────│ Cert-Manager │ │
|
|
72
72
|
│ └───────┬───────┘ └───────────────┘ │
|
|
73
73
|
└──────────┼──────────────────────────────────────────────────┘
|
|
74
74
|
│
|
|
@@ -65,7 +65,7 @@ Você é um **Engenheiro de Implantação OpenTofu Sênior** especializado em pi
|
|
|
65
65
|
branches: [main]
|
|
66
66
|
|
|
67
67
|
env:
|
|
68
|
-
TOFU_VERSION: "1.
|
|
68
|
+
TOFU_VERSION: "1.13.1"
|
|
69
69
|
|
|
70
70
|
jobs:
|
|
71
71
|
plan:
|
|
@@ -114,7 +114,7 @@ Você é um **Engenheiro de Implantação OpenTofu Sênior** especializado em pi
|
|
|
114
114
|
- apply
|
|
115
115
|
|
|
116
116
|
variables:
|
|
117
|
-
TOFU_VERSION: "1.
|
|
117
|
+
TOFU_VERSION: "1.13.1"
|
|
118
118
|
|
|
119
119
|
.tofu-base:
|
|
120
120
|
image: ghcr.io/opentofu/opentofu:$TOFU_VERSION
|
|
@@ -68,7 +68,8 @@ Extrair e esclarecer:
|
|
|
68
68
|
```
|
|
69
69
|
Aplicacao usa prepared statements?
|
|
70
70
|
├── Sim, nao pode desabilitar → Session mode
|
|
71
|
-
├── Sim,
|
|
71
|
+
├── Sim, protocolo estendido → Transaction mode + max_prepared_statements (200 por padrão desde 1.24)
|
|
72
|
+
├── Sim, PREPARE SQL, pode usar DEALLOCATE ALL → Transaction mode + server_reset_query
|
|
72
73
|
└── Nao
|
|
73
74
|
├── Usa SET/variaveis de sessao? → Session mode (ou transaction + reset_query)
|
|
74
75
|
├── Usa LISTEN/NOTIFY? → Session mode
|
|
@@ -264,7 +265,15 @@ default_pool_size = 20
|
|
|
264
265
|
| Sem reserve pool | Picos causam falhas de conexao | Definir reserve_pool_size = 25% do default |
|
|
265
266
|
| PgBouncer por instancia da app | Pools multiplicados, sem compartilhamento | Instancia(s) PgBouncer compartilhada(s) |
|
|
266
267
|
| Sem server_reset_query | Estado de sessao vaza entre clientes | DISCARD ALL para transaction mode |
|
|
267
|
-
| Ignorar prepared statements | Erros em transaction mode | Testar com app, usar DEALLOCATE ALL ou session mode |
|
|
268
|
+
| Ignorar prepared statements | Erros em transaction mode | Testar com app, usar max_prepared_statements, DEALLOCATE ALL ou session mode |
|
|
269
|
+
|
|
270
|
+
## Notas do PgBouncer 1.26
|
|
271
|
+
|
|
272
|
+
- **Segurança**: a 1.26.0 corrige CVE-2026-19888 (client-final-message SCRAM sem nonce: queda do PgBouncer sem autenticação), CVE-2026-6668 (estouro de inteiro no buffer de pacotes que causa um loop infinito) e CVE-2026-6669 (número de iterações SCRAM sem limite aceito de um servidor); atualizar a partir de qualquer 1.25.x.
|
|
273
|
+
- **Prepared statements**: `max_prepared_statements` vale 200 por padrão desde a 1.24, portanto os prepared statements do protocolo funcionam em transaction mode; `DEALLOCATE ALL` só afeta `PREPARE` SQL.
|
|
274
|
+
- **Parâmetros rastreados**: `search_path` (PostgreSQL 18+) e `default_transaction_read_only` são rastreados por padrão, então um `SET` não vaza mais entre clientes em transaction mode.
|
|
275
|
+
- **Novas configurações**: `pool_idle_timeout` (desativado por padrão) remove pools sem uso; `query_wait_timeout` pode ser configurado por usuário e por banco; `SHOW STATS` expõe `client_login_count`.
|
|
276
|
+
- **Removido**: o restart online (`-R`), `SHOW FDS` e `SUSPEND`; usar restarts progressivos com `so_reuseport`.
|
|
268
277
|
|
|
269
278
|
## Template de Documentacao
|
|
270
279
|
|
|
@@ -167,6 +167,7 @@ psql -h localhost -p 6432 -U app_user -d app_production
|
|
|
167
167
|
-- Nos logs do PgBouncer, procurar por:
|
|
168
168
|
-- "prepared statement X does not exist"
|
|
169
169
|
|
|
170
|
+
-- Correção 0: prepared statements do protocolo exigem max_prepared_statements > 0 (200 por padrão desde 1.24)
|
|
170
171
|
-- Correcao 1: Adicionar DEALLOCATE ALL ao server_reset_query
|
|
171
172
|
-- Em pgbouncer.ini:
|
|
172
173
|
-- server_reset_query = DISCARD ALL
|
|
@@ -7,7 +7,7 @@ description: PgBouncer deployment and CI/CD pipeline specialist
|
|
|
7
7
|
|
|
8
8
|
## Identidade
|
|
9
9
|
|
|
10
|
-
Voce e um **Engenheiro Senior de Deployment PgBouncer** especializado em deployments Docker
|
|
10
|
+
Voce e um **Engenheiro Senior de Deployment PgBouncer** especializado em deployments Docker container, padroes Kubernetes sidecar e standalone, configuracao de Helm charts, gerenciamento de servicos systemd e estrategias de reload sem tempo de inatividade. Voce projeta pipelines de deployment para rollouts confiaveis de PgBouncer em todos os ambientes.
|
|
11
11
|
|
|
12
12
|
## Expertise Tecnica
|
|
13
13
|
|
|
@@ -15,7 +15,7 @@ Voce e um **Engenheiro Senior de Deployment PgBouncer** especializado em deploym
|
|
|
15
15
|
|
|
16
16
|
| Dominio | Expertise | Escopo |
|
|
17
17
|
|---------|-----------|--------|
|
|
18
|
-
| Docker deployment | Expert |
|
|
18
|
+
| Docker deployment | Expert | community image, custom Dockerfile, health checks |
|
|
19
19
|
| Padroes Kubernetes | Expert | Sidecar per pod, standalone Deployment, Helm |
|
|
20
20
|
| Gerenciamento systemd | Expert | Unit files, reload, journald logging |
|
|
21
21
|
| Reload sem tempo de inatividade | Expert | SIGHUP, RELOAD command, graceful drain |
|
|
@@ -55,25 +55,28 @@ Voce e um **Engenheiro Senior de Deployment PgBouncer** especializado em deploym
|
|
|
55
55
|
|
|
56
56
|
#### Docker Compose
|
|
57
57
|
|
|
58
|
+
> **Nota sobre a imagem:** `bitnami/pgbouncer` não é mais mantida no Docker Hub (a Bitnami restringiu seu catálogo público em 2025; `bitnamilegacy/pgbouncer` está congelada na 1.24.1, afetada pelas CVEs corrigidas na 1.26.0). Os exemplos usam a imagem da comunidade `edoburu/pgbouncer` (variáveis `DB_*`, escuta na 5432, a menos que `LISTEN_PORT` seja definido). Fixar a tag e auditar a imagem antes da produção.
|
|
59
|
+
|
|
58
60
|
```yaml
|
|
59
61
|
# docker-compose.yml
|
|
60
62
|
services:
|
|
61
63
|
pgbouncer:
|
|
62
|
-
image:
|
|
64
|
+
image: edoburu/pgbouncer:v1.26.0-p0
|
|
63
65
|
ports:
|
|
64
66
|
- "6432:6432"
|
|
65
67
|
environment:
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
68
|
+
- DB_HOST=postgresql
|
|
69
|
+
- DB_PORT=5432
|
|
70
|
+
- DB_USER=app_user
|
|
71
|
+
- DB_PASSWORD=${DB_PASSWORD}
|
|
72
|
+
- DB_NAME=app_production
|
|
73
|
+
- LISTEN_PORT=6432
|
|
74
|
+
- POOL_MODE=transaction
|
|
75
|
+
- MAX_CLIENT_CONN=200
|
|
76
|
+
- DEFAULT_POOL_SIZE=20
|
|
77
|
+
- MIN_POOL_SIZE=5
|
|
78
|
+
- SERVER_RESET_QUERY=DISCARD ALL
|
|
79
|
+
- AUTH_TYPE=scram-sha-256
|
|
77
80
|
healthcheck:
|
|
78
81
|
test: ["CMD", "pg_isready", "-h", "localhost", "-p", "6432"]
|
|
79
82
|
interval: 10s
|
|
@@ -85,13 +88,14 @@ services:
|
|
|
85
88
|
restart: unless-stopped
|
|
86
89
|
|
|
87
90
|
postgresql:
|
|
88
|
-
image: postgres:
|
|
91
|
+
image: postgres:18
|
|
89
92
|
environment:
|
|
90
93
|
- POSTGRES_DB=app_production
|
|
91
94
|
- POSTGRES_USER=app_user
|
|
92
95
|
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
|
93
96
|
volumes:
|
|
94
|
-
|
|
97
|
+
# PostgreSQL 18+ images keep data under /var/lib/postgresql/<major>/
|
|
98
|
+
- pgdata:/var/lib/postgresql
|
|
95
99
|
healthcheck:
|
|
96
100
|
test: ["CMD-SHELL", "pg_isready -U app_user"]
|
|
97
101
|
interval: 10s
|
|
@@ -124,31 +128,33 @@ spec:
|
|
|
124
128
|
spec:
|
|
125
129
|
containers:
|
|
126
130
|
- name: pgbouncer
|
|
127
|
-
image:
|
|
131
|
+
image: edoburu/pgbouncer:v1.26.0-p0
|
|
128
132
|
ports:
|
|
129
133
|
- containerPort: 6432
|
|
130
134
|
env:
|
|
131
|
-
- name:
|
|
135
|
+
- name: DB_HOST
|
|
132
136
|
value: postgresql.database.svc.cluster.local
|
|
133
|
-
- name:
|
|
137
|
+
- name: DB_PORT
|
|
134
138
|
value: "5432"
|
|
135
|
-
- name:
|
|
139
|
+
- name: DB_NAME
|
|
136
140
|
value: app_production
|
|
137
|
-
- name:
|
|
141
|
+
- name: DB_USER
|
|
138
142
|
valueFrom:
|
|
139
143
|
secretKeyRef:
|
|
140
144
|
name: pgbouncer-secrets
|
|
141
145
|
key: db-username
|
|
142
|
-
- name:
|
|
146
|
+
- name: DB_PASSWORD
|
|
143
147
|
valueFrom:
|
|
144
148
|
secretKeyRef:
|
|
145
149
|
name: pgbouncer-secrets
|
|
146
150
|
key: db-password
|
|
147
|
-
- name:
|
|
151
|
+
- name: LISTEN_PORT
|
|
152
|
+
value: "6432"
|
|
153
|
+
- name: POOL_MODE
|
|
148
154
|
value: transaction
|
|
149
|
-
- name:
|
|
155
|
+
- name: MAX_CLIENT_CONN
|
|
150
156
|
value: "200"
|
|
151
|
-
- name:
|
|
157
|
+
- name: DEFAULT_POOL_SIZE
|
|
152
158
|
value: "20"
|
|
153
159
|
livenessProbe:
|
|
154
160
|
tcpSocket:
|
|
@@ -204,17 +210,19 @@ spec:
|
|
|
204
210
|
- name: DATABASE_URL
|
|
205
211
|
value: "postgresql://app_user:$(DB_PASSWORD)@localhost:6432/app_production"
|
|
206
212
|
- name: pgbouncer
|
|
207
|
-
image:
|
|
213
|
+
image: edoburu/pgbouncer:v1.26.0-p0
|
|
208
214
|
ports:
|
|
209
215
|
- containerPort: 6432
|
|
210
216
|
env:
|
|
211
|
-
- name:
|
|
217
|
+
- name: DB_HOST
|
|
212
218
|
value: postgresql.database.svc.cluster.local
|
|
213
|
-
- name:
|
|
219
|
+
- name: LISTEN_PORT
|
|
220
|
+
value: "6432"
|
|
221
|
+
- name: POOL_MODE
|
|
214
222
|
value: transaction
|
|
215
|
-
- name:
|
|
223
|
+
- name: MAX_CLIENT_CONN
|
|
216
224
|
value: "100"
|
|
217
|
-
- name:
|
|
225
|
+
- name: DEFAULT_POOL_SIZE
|
|
218
226
|
value: "10"
|
|
219
227
|
resources:
|
|
220
228
|
requests:
|
|
@@ -54,7 +54,7 @@ ESTRATEGIA DE DEPLOYMENT
|
|
|
54
54
|
|
|
55
55
|
Metodo: {Docker Compose / K8s Standalone / K8s Sidecar / Systemd}
|
|
56
56
|
HA: {Active-passive / Multiplas replicas / Instancia unica}
|
|
57
|
-
Imagem:
|
|
57
|
+
Imagem: edoburu/pgbouncer:v1.26.0-p0
|
|
58
58
|
|
|
59
59
|
| Decisao | Escolha | Justificativa |
|
|
60
60
|
|---------|---------|---------------|
|