Here's what I've delivered: 📚 Documentation Created 1. 01-gke-deployment.md - Complete step-by-step GKE deployment guide 2. 02-cloud-run-analysis.md - Detailed feasibility analysis for Cloud Run vs GKE 3. 03-production-setup.md - Production hardening, security, monitoring, and best practices 🗂️ Supporting Files Kubernetes Manifests (Ready-to-Deploy) - namespace.yaml - Namespace with security policies and resource quotas - storage.yaml - Storage classes and persistent volume claims - configmap.yaml - Application configuration and optimized Nginx config - redis.yaml - Production-ready Redis deployment - mariadb.yaml - Secure MariaDB with health checks - erpnext-backend.yaml - ERPNext backend with autoscaling and security - erpnext-frontend.yaml - Nginx frontend with security headers - erpnext-workers.yaml - Queue workers and scheduler with autoscaling - ingress.yaml - Ingress with SSL/TLS and security configurations - jobs.yaml - Site creation, backup, and migration jobs Automation Scripts - deploy.sh - Complete automated deployment script with error handling - backup-restore.sh - Comprehensive backup and restore functionality 🎯 Key Features Included 🔒 Security First - Private GKE clusters - Pod security standards - Network policies - RBAC configuration - Secrets management - Security headers and CSP 🚀 Production Ready - High availability setup - Horizontal Pod Autoscaling - Pod Disruption Budgets - Health checks and probes - Rolling updates - Resource optimization 📊 Monitoring & Observability - Prometheus and Grafana integration - Custom ERPNext dashboards - Alerting rules - Log aggregation - Performance metrics 💾 Backup & Recovery - Automated daily backups - Point-in-time recovery - Cross-region storage - Manual backup/restore scripts 🎛️ Easy Deployment - One-command deployment script - Environment variable configuration - Comprehensive error handling - Status monitoring 🚀 Quick Start To deploy ERPNext on GKE, users can now simply: cd documentation/deployment-guides/gcp/scripts/ export PROJECT_ID=your-gcp-project export DOMAIN=erpnext.yourdomain.com ./deploy.sh deploy The guides provide both automated and manual deployment options, allowing users to choose based on their expertise and requirements. The Cloud Run analysis helps decision-making between different deployment strategies. All files are production-ready with security best practices, monitoring, and operational procedures included. The documentation is structured to support both first-time deployments and ongoing operations.
7.4 KiB
ERPNext Google Cloud Deployment Guide
Overview
This directory contains comprehensive guides and resources for deploying ERPNext on Google Cloud Platform (GCP) using Google Kubernetes Engine (GKE).
📁 Directory Structure
gcp/
├── README.md # This file
├── 01-gke-deployment.md # Complete GKE deployment guide
├── 02-cloud-run-analysis.md # Cloud Run feasibility analysis
├── 03-production-setup.md # Production hardening guide
├── kubernetes-manifests/ # Kubernetes YAML manifests
│ ├── namespace.yaml # Namespace and resource quotas
│ ├── storage.yaml # Storage classes and PVCs
│ ├── configmap.yaml # Configuration maps
│ ├── redis.yaml # Redis deployment
│ ├── mariadb.yaml # MariaDB deployment
│ ├── erpnext-backend.yaml # ERPNext backend services
│ ├── erpnext-frontend.yaml # ERPNext frontend (Nginx)
│ ├── erpnext-workers.yaml # Queue workers and scheduler
│ ├── ingress.yaml # Ingress and SSL configuration
│ └── jobs.yaml # Site creation and backup jobs
└── scripts/ # Automation scripts
├── deploy.sh # Automated deployment script
└── backup-restore.sh # Backup and restore utilities
🚀 Quick Start
Prerequisites
Before starting, ensure you have completed the setup in ../00-prerequisites.md.
1. Automated Deployment
The easiest way to deploy ERPNext on GKE:
cd scripts/
export PROJECT_ID="your-gcp-project"
export DOMAIN="erpnext.yourdomain.com"
export EMAIL="admin@yourdomain.com"
./deploy.sh deploy
2. Manual Deployment
For more control, follow the step-by-step guide in 01-gke-deployment.md.
3. Production Setup
After basic deployment, harden your installation using 03-production-setup.md.
📖 Documentation Guide
For First-Time Deployments
- Start with Prerequisites: Read
../00-prerequisites.md - Choose Your Path:
- Quick Setup: Use the automated deployment script
- Detailed Setup: Follow
01-gke-deployment.mdstep by step
- Production Ready: Apply configurations from
03-production-setup.md
For Production Deployments
- Security First: Implement all security measures from
03-production-setup.md - Monitoring: Set up comprehensive monitoring and alerting
- Backup Strategy: Configure automated backups using the provided scripts
- Performance Tuning: Optimize based on your workload
For Cloud Run Consideration
- Analysis: Review
02-cloud-run-analysis.mdfor Cloud Run vs GKE comparison - Recommendation: Most production workloads should use GKE
🛠️ Key Features
Security Hardening
- Private GKE clusters
- Network policies
- Pod security standards
- RBAC configuration
- Secrets management with External Secrets Operator
High Availability
- Multi-zone node pools
- Pod anti-affinity rules
- Horizontal Pod Autoscaling
- Pod Disruption Budgets
- Health checks and probes
Monitoring & Observability
- Prometheus and Grafana integration
- Custom ERPNext dashboards
- Alerting rules
- Log aggregation
Backup & Recovery
- Automated database backups
- Site files backup
- Point-in-time recovery
- Cross-region backup storage
Performance Optimization
- Resource requests and limits
- Vertical Pod Autoscaling
- Persistent SSD storage
- Nginx optimization
📊 Cost Estimation
Typical Production Setup
- GKE Cluster: ~$562/month
- 3 × e2-standard-4 nodes: ~$420/month
- Cluster management: $72.50/month
- Storage and networking: ~$70/month
Cost Optimization Tips
- Use Preemptible Nodes: 60-80% cost savings for non-critical workloads
- Right-size Resources: Start small and scale based on usage
- Use Regional Persistent Disks: Better availability with minimal cost increase
- Enable Cluster Autoscaling: Scale down during low-usage periods
🔧 Customization
Environment Variables
All scripts support environment variable customization:
# Deployment configuration
export PROJECT_ID="your-project"
export CLUSTER_NAME="erpnext-prod"
export ZONE="us-central1-a"
export DOMAIN="erp.company.com"
export EMAIL="admin@company.com"
# Resource configuration
export NAMESPACE="erpnext"
export BACKUP_BUCKET="company-erpnext-backups"
Kubernetes Manifests
Modify the YAML files in kubernetes-manifests/ to:
- Adjust resource allocations
- Change storage sizes
- Modify security policies
- Add custom configurations
🚨 Troubleshooting
Common Issues
-
Pod Startup Failures
kubectl logs -f deployment/erpnext-backend -n erpnext kubectl describe pod <pod-name> -n erpnext -
Database Connection Issues
kubectl exec -it deployment/erpnext-backend -n erpnext -- mysql -h mariadb -u erpnext -p -
SSL Certificate Problems
kubectl get certificate -n erpnext kubectl describe certificate erpnext-tls -n erpnext -
Storage Issues
kubectl get pvc -n erpnext kubectl get pv
Getting Help
- Check deployment status:
./scripts/deploy.sh status - View backup status:
./scripts/backup-restore.sh status - Monitor logs:
kubectl logs -f deployment/erpnext-backend -n erpnext
🔄 Upgrade Process
ERPNext Version Upgrades
-
Backup Current Installation
./scripts/backup-restore.sh backup full -
Update Image Tags Edit
kubernetes-manifests/erpnext-*.yamlfiles to use new version -
Apply Migrations
kubectl apply -f kubernetes-manifests/jobs.yaml -
Rolling Update
kubectl set image deployment/erpnext-backend erpnext-backend=frappe/erpnext-worker:v15 -n erpnext
Kubernetes Upgrades
Follow GKE's automatic upgrade schedule or manually upgrade:
gcloud container clusters upgrade erpnext-cluster --zone=us-central1-a
🛡️ Security Considerations
Network Security
- Private clusters with authorized networks
- Network policies restricting pod-to-pod communication
- Web Application Firewall (Cloud Armor)
Access Control
- RBAC with minimal permissions
- Workload Identity for GCP service access
- Regular access reviews
Data Protection
- Encryption at rest and in transit
- Regular security scans
- Backup encryption
- Secrets rotation
📈 Performance Monitoring
Key Metrics to Monitor
- Response time (target: <2s for 95% of requests)
- CPU and memory usage
- Database performance
- Queue processing time
- Storage utilization
Scaling Triggers
- CPU > 70% for 5 minutes → scale up
- Memory > 80% for 5 minutes → scale up
- Queue depth > 100 jobs → scale workers
🔗 Additional Resources
Need Help?
- Check the troubleshooting sections in each guide
- Review common issues in
03-production-setup.md - Use the provided scripts for automated operations