Skip to content

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.

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.

Terminal window
mkdir -p /tmp/superplane-release
tar -C /tmp/superplane-release -xzf superplane-single-host.tar.gz
cp /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:

Terminal window
docker compose ps
curl -fsS "https://superplane.example.com/health"

When runners are enabled, open Start runners on this VM and run the command again.

Terminal window
docker compose --profile runners down -v --remove-orphans

Delete superplane.env, fleet-manager.env, and oidc/ after the backup is stored somewhere else.

  1. In your Terraform checkout, set superplane_chart_version to 1.0.0-rc4. Leave superplane_image_tag empty. The chart version has no v prefix. Move to a newer Terraform installer tag only when the release notes require it.
  2. 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_amd64 must 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, set enable_runners = false and enable_gcs_blob_storage = false.
  3. Apply, then run the Fleet Manager Helm command from Fleet setup again:
Terminal window
terraform plan -out tfplan
terraform apply tfplan
  1. Confirm the installation:
Terminal window
kubectl get pods -n superplane
kubectl get certificate -n superplane

To 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.

Export anything you need first. This deletes the cluster, the database, and file storage.

Terminal window
export AWS_REGION=us-east-1
FLEET_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 superplane

Set AWS_REGION from region in terraform.tfvars. Terminate any instances that are still running:

Terminal window
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 text

Turn off RDS deletion protection, apply that change, and empty the S3 bucket from terraform output -raw blob_storage_bucket:

rds_deletion_protection = false
Terminal window
terraform plan -target=aws_db_instance.superplane -out tfplan
terraform apply tfplan

On AWS and Azure, destroy after the steps in the tab:

Terminal window
terraform plan -destroy -out tfplan
terraform apply tfplan

terraform 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.