This repository provides deployment examples for Bindplane, a powerful observability pipeline management platform. It includes multiple deployment options to suit different environments and requirements.
Bindplane can be deployed in various environments, from simple Docker Compose setups for development to production-ready GCP deployments with high availability and security features. This repository contains examples for:
- Docker Compose deployment for local development and testing
- Terraform-based GCP deployment for production environments
- Kubernetes deployment using Helm charts
Depending on your chosen deployment method, you'll need:
- Bindplane license key (contact Bindplane for a trial)
- Terraform (v1.0.0+)
- Google Cloud SDK
- A GCP project with billing enabled
- kubectl
- Helm (v3.0.0+)
The Docker Compose deployment is ideal for local development, testing, or small-scale deployments.
# Navigate to the Docker Compose directory
cd docker-compose
# Copy and edit the environment file
cp .env.example .env
# Edit .env with your license key and configuration
# Start Bindplane
docker-compose up -d
Access Bindplane at http://localhost:3001
The Terraform deployment creates a production-ready environment on Google Cloud Platform with:
- Private GKE cluster
- CloudSQL PostgreSQL with SSL encryption
- Secure networking and access controls
- High availability configuration
# Navigate to the Terraform example directory
cd terraform/gcp/examples/basic
# Copy and edit the variables file
cp terraform.tfvars.example terraform.tfvars
# Edit terraform.tfvars with your project ID, license key, etc.
# Initialize and apply Terraform
terraform init
terraform apply
After deployment, follow the instructions to access Bindplane through port forwarding or configure an ingress.
Edit the .env
file to configure:
- Admin credentials
- Database settings
- License key
- Port mappings
Key variables in terraform.tfvars
:
Variable | Description | Default |
---|---|---|
project_id |
Your GCP project ID | (Required) |
region |
GCP region for resources | us-central1 |
cluster_name |
Name for the GKE cluster | bindplane-cluster |
database_password |
Password for the database | (Required) |
admin_username |
Bindplane admin username | admin |
admin_password |
Bindplane admin password | (Required) |
license_key |
Bindplane license key | (Required) |
machine_type |
GKE node machine type | e2-standard-2 |
instance_tier |
CloudSQL instance tier | db-f1-micro |
The GCP deployment includes several security enhancements:
- SSL/TLS encryption for database connections
- Network policies restricting pod communication
- Private GKE cluster with authorized networks
- Secure secrets management
- CloudSQL with private IP and SSL
The GCP deployment supports:
- Node auto-scaling based on resource usage
- Regional GKE cluster for zone redundancy
- CloudSQL high availability option
- Persistent storage for metrics and logs
- Use Kubernetes liveness and readiness probes
- Monitor CloudSQL metrics in GCP console
- CloudSQL automated backups
- Point-in-time recovery
-
Database Connection Issues: Check CloudSQL instance status and network connectivity
-
Pod Startup Failures: Use
kubectl logs
to view container logs -
SSL Certificate Problems: Verify certificates are properly mounted
-
Helm Timeout Errors: If you encounter "context deadline exceeded" errors during deployment:
# Check pod status kubectl get pods -n bindplane # Check pod details for errors kubectl describe pods -n bindplane # Check storage classes kubectl get storageclass # Verify SSL secrets kubectl get secret postgres-tls -n bindplane # Check resource allocation on nodes kubectl describe nodes | grep -A 5 "Allocated resources" # Check logs of failing pods kubectl logs -n bindplane <pod-name> # If SSL issues are suspected, try setting sslmode to disable in terraform.tfvars # or check that the SSL certificates are properly formatted
-
Resource Constraints: If pods are failing to schedule due to insufficient resources:
- Increase the size of your GKE node pool
- Reduce CPU/memory requests in the Helm chart configuration
- Scale down other workloads in the cluster
- Check the Bindplane documentation
- Contact Bindplane Support
Contributions to these deployment examples are welcome! Please feel free to submit a Pull Request.
This project uses pre-commit hooks to ensure code quality and consistency. Pre-commit automatically checks your code before each commit to catch issues early.
For detailed information about the development workflow, including:
- Setting up pre-commit hooks
- Available hooks and what they check
- Coding standards and contribution guidelines
- Using conventional commits
Please refer to our contribution guidelines.
This project is licensed under the Apache 2.0 License.
If your deployment fails and you need to roll back:
# Delete the failed Helm release
helm delete bindplane -n bindplane
# Reapply with modified configuration
terraform apply
For persistent database issues:
# Connect to the CloudSQL instance
gcloud sql connect bindplane-instance --user=bindplane
# Check database status
\l
\c bindplane
\dt