Skip to content

Conversation

@leggetter
Copy link
Collaborator

@leggetter leggetter commented Dec 12, 2025

Resolves #581

Replace unreliable Bitnami Helm charts with official Docker images and
native Kubernetes manifests for PostgreSQL, Redis, and RabbitMQ. This
change significantly improves reliability and simplifies the setup
process.

Key improvements:

  • Created dedicated Kubernetes manifests for each dependency:

    • PostgreSQL using postgres:16-alpine
    • Redis using redis:7-alpine
    • RabbitMQ using rabbitmq:3.13-management-alpine
  • Enhanced setup-dependencies.sh script with:

    • Robust error detection and diagnostic capabilities
    • Health checks for pods with proper error state detection
    • Improved timeout handling with periodic error checking
    • Clear error messages with troubleshooting instructions
    • Support for detecting ImagePullBackOff, CrashLoopBackOff, etc.
  • Fixed documentation paths:

    • Updated quickstart to reference examples/kubernetes directory
    • Renamed values.yaml to outpost.yaml for clarity
  • Made setup script executable (chmod +x)

Breaking changes:

  • Bitnami Helm charts are no longer used for dependencies
  • Users must run setup-dependencies.sh to deploy PostgreSQL, Redis,
    and RabbitMQ using the new Kubernetes manifests
  • Configuration paths have changed in documentation

This change resolves timeout issues and provides more reliable
dependency deployment for local Kubernetes development.

Replace unreliable Bitnami Helm charts with official Docker images and
native Kubernetes manifests for PostgreSQL, Redis, and RabbitMQ. This
change significantly improves reliability and simplifies the setup
process.

Key improvements:

- Created dedicated Kubernetes manifests for each dependency:
  * PostgreSQL using postgres:16-alpine
  * Redis using redis:7-alpine
  * RabbitMQ using rabbitmq:3.13-management-alpine

- Enhanced setup-dependencies.sh script with:
  * Robust error detection and diagnostic capabilities
  * Health checks for pods with proper error state detection
  * Improved timeout handling with periodic error checking
  * Clear error messages with troubleshooting instructions
  * Support for detecting ImagePullBackOff, CrashLoopBackOff, etc.

- Fixed documentation paths:
  * Updated quickstart to reference examples/kubernetes directory
  * Renamed values.yaml to outpost.yaml for clarity

- Made setup script executable (chmod +x)

Breaking changes:
- Bitnami Helm charts are no longer used for dependencies
- Users must run setup-dependencies.sh to deploy PostgreSQL, Redis,
  and RabbitMQ using the new Kubernetes manifests
- Configuration paths have changed in documentation

This change resolves timeout issues and provides more reliable
dependency deployment for local Kubernetes development.
Copilot AI review requested due to automatic review settings December 12, 2025 20:39
@vercel
Copy link

vercel bot commented Dec 12, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
outpost-docs Ready Ready Preview, Comment Dec 15, 2025 9:40am
outpost-website Ready Ready Preview, Comment Dec 15, 2025 9:40am

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR replaces Bitnami Helm charts with official Docker images and native Kubernetes manifests for PostgreSQL, Redis, and RabbitMQ to improve reliability and simplify the setup process for local Kubernetes development with Outpost.

Key Changes:

  • Replaced Bitnami Helm chart dependencies with StatefulSet-based deployments using official Alpine Docker images
  • Enhanced setup-dependencies.sh with robust error detection, health checks, and diagnostic capabilities
  • Updated documentation to reference the correct paths (examples/kubernetes instead of deployments/kubernetes, and outpost.yaml instead of values.yaml)

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
examples/kubernetes/setup-dependencies.sh Complete rewrite replacing Helm-based installation with kubectl-based manifests, adding comprehensive error handling and health checking functions
examples/kubernetes/postgresql.yaml New Kubernetes manifest for PostgreSQL StatefulSet using postgres:16-alpine image
examples/kubernetes/redis.yaml New Kubernetes manifest for Redis StatefulSet using redis:7-alpine image
examples/kubernetes/rabbitmq.yaml New Kubernetes manifest for RabbitMQ StatefulSet using rabbitmq:3.13-management-alpine image
examples/kubernetes/outpost.yaml New Helm values file for Outpost configuration (renamed from values.yaml)
docs/pages/quickstarts/kubernetes.mdx Updated documentation paths to reference examples/kubernetes directory and outpost.yaml configuration file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Change from incorrect 'redis-cli --raw incr ping' to proper 'redis-cli ping'
- Add authentication using -a flag with REDIS_PASSWORD environment variable
- Use shell wrapper (sh -c) to properly expand environment variable

Fixes authentication errors in Redis health checks.
- Create separate headless service 'outpost-postgresql-headless' with clusterIP: None
- Use headless service as serviceName for StatefulSet
- Keep regular ClusterIP service for client connections

Follows Kubernetes best practices for StatefulSet DNS records.
- Change password generation from 'openssl rand -hex' to 'openssl rand -base64' for better entropy
  * PostgreSQL: base64 24 bytes
  * Redis: base64 24 bytes
  * RabbitMQ: base64 24 bytes (password) and 48 bytes (erlang cookie)
  * Application secrets: base64 24/48 bytes
- Extract duplicate diagnostic code into reusable print_pod_diagnostics() function
- Update message from 'Bitnami images are not available' to 'Using official Docker images for improved reliability'

Addresses PR feedback for improved security and code quality.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The quickstart using Kubernetes fails on the RabbitMQ deployment

2 participants