Documentation
Upgrade or uninstall
Upgrade or remove a single-VM install, or a Terraform install on AWS, Azure, or Google Cloud.Use the section that matches the install. A single VM upgrades with ./install.sh. A cloud install upgrades with Terraform.
Upgrade a single VM
Section titled “Upgrade a single VM”Download the new superplane-single-host.tar.gz from the SuperPlane releases. From the existing install directory, replace the Compose file and the scripts. Leave superplane.env, oidc/, fleet-manager.env, and Caddyfile in place.
mkdir -p /tmp/superplane-releasetar -C /tmp/superplane-release -xzf superplane-single-host.tar.gzcp /tmp/superplane-release/superplane/docker-compose.yml .cp /tmp/superplane-release/superplane/install.sh .cp /tmp/superplane-release/superplane/enable-runners.sh .chmod +x install.sh enable-runners.sh./install.sh./install.sh keeps the existing secrets, pulls the new images, and migrates the database when the app starts. Confirm the health check:
docker compose pscurl -fsS "https://superplane.example.com/health"When runners are enabled, open Start runners on this VM and run the command again.
Uninstall a single VM
Section titled “Uninstall a single VM”docker compose --profile runners down -v --remove-orphansDelete superplane.env, fleet-manager.env, and oidc/ after the backup is stored somewhere else.
Upgrade a cloud install
Section titled “Upgrade a cloud install”- In your Terraform checkout, set
superplane_chart_versionto1.0.0-rc4. Leavesuperplane_image_tagempty. The chart version has novprefix. Move to a newer Terraform installer tag only when the release notes require it. - Set the new runner image IDs from the release notes. On Google Cloud, build a new image with Packer when the runner tools change, or keep the current image.
runner_image_amd64must not be empty while runners are enabled. Google Cloud now enables runners and GCS blob storage by default. To keep an older install without them, setenable_runners = falseandenable_gcs_blob_storage = false. - Apply, then run the Fleet Manager Helm command from Fleet setup again:
terraform plan -out tfplanterraform apply tfplan- Confirm the installation:
kubectl get pods -n superplanekubectl get certificate -n superplaneTo change how many runner machines stay up, edit warmCapacity and maxCapacity in fleet-manager-values.yaml and run that same Helm command. Each AWS or Azure machine uses 2 vCPUs. The Google Cloud default machine type uses 4.
Uninstall a cloud install
Section titled “Uninstall a cloud install”Export anything you need first. This deletes the cluster, the database, and file storage.
export AWS_REGION=us-east-1FLEET_MANAGER_ID=$(helm get values fleet-manager -n superplane --all --output json | jq -er '.manager.id')RUNNER_INSTANCE_PROFILE_ARN=$(aws iam get-instance-profile \ --instance-profile-name "$(terraform output -raw runner_instance_profile_name)" \ --query 'InstanceProfile.Arn' --output text)helm uninstall fleet-manager -n superplaneSet AWS_REGION from region in terraform.tfvars. Terminate any instances that are still running:
aws ec2 describe-instances --region "$AWS_REGION" \ --filters "Name=tag:superplane_fleet_manager_id,Values=${FLEET_MANAGER_ID}" \ "Name=iam-instance-profile.arn,Values=${RUNNER_INSTANCE_PROFILE_ARN}" \ "Name=instance-state-name,Values=pending,running,stopping,stopped" \ --query 'Reservations[].Instances[].InstanceId' --output textTurn off RDS deletion protection, apply that change, and empty the S3 bucket from terraform output -raw blob_storage_bucket:
rds_deletion_protection = falseterraform plan -target=aws_db_instance.superplane -out tfplanterraform apply tfplanhelm uninstall fleet-manager -n superplaneaz vm list -g "$(terraform output -raw runner_resource_group)" -d -o tableDelete any sprunner- virtual machines that remain.
helm uninstall fleet-manager -n superplaneTurn off deletion protection, then destroy. Terraform does not delete the static IP.
gke_deletion_protection = falsesql_deletion_protection = falseblob_bucket_force_destroy = trueterraform plan -out tfplanterraform apply tfplanterraform plan -destroy -out tfplanterraform apply tfplangcloud compute addresses delete superplane-ip --globalOn AWS and Azure, destroy after the steps in the tab:
terraform plan -destroy -out tfplanterraform apply tfplanterraform apply tfplan deletes resources because the plan is a destroy plan. If the AWS destroy stops on the load balancer, use the AWS installer README. Do not delete the Terraform state while a destroy is incomplete.