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. |
||
|---|---|---|
| .. | ||
| kubernetes-manifests | ||
| scripts | ||
| 01-gke-deployment.md | ||
| 02-cloud-run-analysis.md | ||
| 03-production-setup.md | ||
| README.md | ||
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