Install on Google Kubernetes Engine
This guide describes how to deploy SuperPlane to Google Kubernetes Engine (GKE) using Terraform.
Prerequisites
Section titled “Prerequisites”- A GCP project with billing enabled
- Terraform >= 1.5.0
gcloudCLI installed and authenticatedkubectlinstalled
Step 1: Authenticate with GCP
Section titled “Step 1: Authenticate with GCP”gcloud auth application-default logingcloud config set project YOUR_PROJECT_IDStep 2: Create Static IP Address
Section titled “Step 2: Create Static IP Address”Create a global static IP address for the ingress:
gcloud compute addresses create superplane-ip --global --ip-version=IPV4Get the reserved IP address:
gcloud compute addresses describe superplane-ip --global --format='get(address)'Step 3: Configure DNS
Section titled “Step 3: Configure DNS”Create an A record in your DNS provider pointing to the static IP:
- Type: A
- Name: Your subdomain (e.g.,
superplane) - Value: The static IP address from Step 2
Wait for DNS propagation and verify:
dig superplane.example.com +shortStep 4: Clone and Configure Terraform
Section titled “Step 4: Clone and Configure Terraform”git clone https://github.com/superplanehq/superplane-terraformcd superplane-terraform/gkecp terraform.tfvars.example terraform.tfvarsEdit terraform.tfvars:
project_id = "my-gcp-project"domain_name = "superplane.example.com"static_ip_name = "superplane-ip"letsencrypt_email = "admin@example.com"Configuration Options
Section titled “Configuration Options”| Variable | Description | Default |
|---|---|---|
project_id | GCP project ID | (required) |
domain_name | Domain name for SuperPlane | (required) |
static_ip_name | Name of pre-created static IP | (required) |
letsencrypt_email | Email for Let’s Encrypt | (required) |
region | GCP region | us-central1 |
zone | GCP zone | us-central1-a |
cluster_name | GKE cluster name | superplane |
node_count | Number of GKE nodes | 2 |
machine_type | GKE node machine type | e2-medium |
superplane_image_tag | SuperPlane image tag | stable |
installation.beaconEnabled | Enable anonymized beacon telemetry | true |
Step 5: Deploy
Section titled “Step 5: Deploy”terraform initterraform applyThe deployment takes 15-20 minutes and creates:
- GKE cluster
- Cloud SQL PostgreSQL instance with VPC peering
- Kubernetes secrets
- cert-manager with Let’s Encrypt
- SuperPlane deployment
Step 6: Verify
Section titled “Step 6: Verify”Configure kubectl:
gcloud container clusters get-credentials superplane --zone=us-central1-a \ --project=YOUR_PROJECT_IDCheck pods and ingress:
kubectl get pods -n superplanekubectl get ingress -n superplaneCheck SSL certificate status:
kubectl get certificate -n superplaneOnce the certificate shows Ready, access SuperPlane at https://your-domain.com.
Updating SuperPlane
Section titled “Updating SuperPlane”- Check the GitHub releases for the latest version tag.
- Update
superplane_image_taginterraform.tfvarswith the new tag. - Apply the changes:
terraform applyUninstalling
Section titled “Uninstalling”# Disable deletion protection for the database and the clusterterraform apply \ -var="gke_deletion_protection=false" \ -var="sql_deletion_protection=false"
# Then destroy all resourcesterraform destroy \ -var="gke_deletion_protection=false" \ -var="sql_deletion_protection=false"
# Delete the static IPgcloud compute addresses delete superplane-ip --global