Prerequisites
- A Google Cloud Platform account with permissions to create VPCs, GKE clusters, Cloud SQL instances, Memorystore instances, and Load Balancers
- Basic knowledge of GCP networking (VPC, subnets, firewall rules) and Kubernetes concepts
- gcloud CLI installed and configured
- kubectl installed for interacting with your GKE cluster
- Helm installed (version 3.x) for deploying the Infisical Helm chart
- An Infisical Docker image tag from Docker Hub
System Requirements
The following are minimum requirements for running Infisical on GCP GKE:Deployment Steps
Set up network infrastructure (VPC, subnets, firewall rules)
- Create a VPC-native network that will host your GKE cluster, Cloud SQL instance, and Memorystore instance
- Create a subnet for your GKE cluster with an appropriate IP range
- Define secondary IP ranges for Kubernetes pods and services:
- Primary range:
10.0.0.0/20(for nodes) - Secondary range for pods:
10.4.0.0/14 - Secondary range for services:
10.8.0.0/20
- Primary range:
- Deploy a Cloud Router and NAT gateway for outbound internet access from private GKE nodes
Provision Google Kubernetes Engine (GKE) cluster
Ready state.Provision Cloud SQL for PostgreSQL
Provision Memorystore for Redis
Securely store Infisical secrets and configuration
- Google Secret Manager (Recommended)
- Kubernetes Secrets
Deploy Infisical using Helm
infisical-values.yaml:Running state.Configure HTTPS access with SSL/TLS
- Google-Managed Certificates (Recommended)
- cert-manager with Let's Encrypt
infisical.example.com to the static IP address.Verify: Check certificate status:Additional Configuration
SMTP/Email Configuration
SMTP/Email Configuration
Debugging with kubectl exec
Debugging with kubectl exec
Database Migrations
Database Migrations
Backup Strategy
Backup Strategy
ENCRYPTION_KEY is critical. Store it securely:- In Google Secret Manager with restricted IAM permissions
- In an offline encrypted backup in a secure physical location
- Never store it in version control
Upgrade Instructions
Upgrade Instructions
- Review Infisical release notes for breaking changes
- Backup your database
- Verify your
ENCRYPTION_KEYis backed up
Monitoring & Telemetry
Monitoring & Telemetry
- Navigate to Logging > Logs Explorer in the GCP Console
- Filter:
resource.type="k8s_container" resource.labels.namespace_name="infisical"
- Navigate to Monitoring > Uptime checks in the GCP Console
- Create a check for
https://infisical.example.com/api/status - Set check frequency (e.g., every 1 minute)
Auto-Scaling Configuration
Auto-Scaling Configuration
Clean Up / Delete Resources
Clean Up / Delete Resources
Infrastructure as Code
Terraform Example
Terraform Example
Troubleshooting
Pods not starting
Pods not starting
Pending, CrashLoopBackOff, or Error state.Check pod status:- Insufficient resources: Check node capacity and resource requests
- Image pull errors: Verify image tag and registry access
- Secret not found: Ensure
infisical-secretsexists in the namespace - Database connection failed: Verify Cloud SQL private IP and credentials
Cannot connect to Cloud SQL
Cannot connect to Cloud SQL
- VPC peering not established: Check private service connection
- Firewall rules blocking traffic: Verify firewall allows port 5432
- Wrong credentials: Verify username and password
- Cloud SQL not in same VPC: Ensure private IP is configured
Cannot connect to Memorystore
Cannot connect to Memorystore
- Memorystore not in same VPC: Verify network configuration
- Firewall rules blocking traffic: Verify firewall allows port 6379
- Wrong IP address: Verify the Memorystore host IP
Ingress not working
Ingress not working
- DNS not configured: Verify A record points to static IP
- Certificate not ready: Check ManagedCertificate status
- Backend unhealthy: Verify pods are passing health checks
- Static IP not reserved: Ensure
infisical-ipexists
SSL certificate not provisioning
SSL certificate not provisioning
Provisioning state.Check certificate status:- DNS not propagated: Wait for DNS propagation (can take up to 48 hours)
- Domain verification failed: Ensure A record is correct
- Rate limiting: Let’s Encrypt has rate limits for certificate issuance
- Ingress not ready: Ensure ingress has an external IP assigned
High memory or CPU usage
High memory or CPU usage
- Increase resource limits in Helm values
- Enable HPA for automatic scaling
- Check for memory leaks in application logs
- Review Cloud Monitoring dashboards for trends
Encryption key errors
Encryption key errors
- Wrong
ENCRYPTION_KEY: Verify the key matches what was used to encrypt data - Key not set: Ensure the secret contains
ENCRYPTION_KEY - Key changed: The encryption key cannot be changed after initial setup