Skip to content

Documentation

Install SuperPlane

Install SuperPlane on AWS, Azure, or Google Cloud with Terraform, then create the owner account and install Fleet Manager.

Install SuperPlane from published images. Terraform creates the cluster. You create the owner account in the browser, then run the Fleet Manager commands the product prints.

Select AWS, Azure, or Google Cloud once. The tabs on this page stay in sync. Plan for 45 minutes. You need a domain you control, such as superplane.example.com.

Install Terraform 1.5 or later, kubectl, Helm 3.12 or later, and git.

Install the AWS CLI. The account must be able to create EKS, VPC, RDS, S3, EFS, IAM, and EC2 resources.

Terminal window
export AWS_PROFILE=your_aws_profile
aws sts get-caller-identity

Terraform cannot use an aws login source profile to assume a role, but the AWS CLI can. When terraform plan reports failed to load assume role, export the credentials and clear the profile:

Terminal window
eval "$(aws configure export-credentials --profile your_aws_profile --format env)"
unset AWS_PROFILE
aws sts get-caller-identity

Clear AWS_PROFILE so Terraform uses the exported credentials. Run the export again when those credentials expire.

Use us-east-1. Copy the newest public AMI for each architecture into terraform.tfvars:

Terminal window
aws ec2 describe-images \
--region us-east-1 \
--owners 802589444644 \
--filters 'Name=name,Values=superplane-runner-*' 'Name=is-public,Values=true' \
--query 'sort_by(Images,&CreationDate)[].[Architecture,ImageId,CreationDate]' \
--output table

Clone the Terraform installer at a fixed release tag. This keeps the infrastructure configuration stable until you choose to upgrade it.

Terminal window
git clone --branch v0.1.0 --depth 1 https://github.com/superplanehq/terraform.git
cd terraform
Terminal window
cd aws
cp terraform.tfvars.example terraform.tfvars
domain_name = "superplane.example.com"
letsencrypt_email = "[email protected]"
region = "us-east-1"
runner_image_amd64 = "latest_amd64_ami"
runner_image_arm64 = "latest_arm64_ami"
superplane_chart_version = "1.0.0-rc4"

Use the AMI IDs from the command above. x86_64 is amd64. Leave superplane_image_tag and helm_chart_path empty. The chart version has no v prefix. An empty image tag selects the image for that chart. The plan stops when runner_image_amd64 is empty. An empty arm64 AMI disables that architecture in the fleet wizard.

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

The apply takes 15–25 minutes. On Google Cloud it also waits for the certificate, which can add about 15 minutes.

Terminal window
terraform output -raw kubectl_config_command

Run the printed command.

The command updates kubeconfig for the EKS cluster.

Terminal window
kubectl get nodes

Every node is Ready.

Terminal window
kubectl get svc -n traefik traefik \
-o jsonpath='{.status.loadBalancer.ingress[0].hostname}'

Create a CNAME for the host in domain_name. For superplane.example.com, the name is superplane. Point it at the hostname above.

Terminal window
dig +short superplane.example.com CNAME @8.8.8.8

The command must print the load balancer hostname.

An entry in /etc/hosts does not issue the certificate. Wait until the certificate is ready. AWS and Azure usually take 5–10 minutes. Google Cloud can take 15.

Terminal window
kubectl get certificate -n superplane
kubectl get pods -n superplane

The certificate is Ready, and every pod is Running.

Terminal window
terraform output -raw superplane_url

SuperPlane creates an organization named Demo for this account.

  1. On Create the owner account, enter the name, email, and password. The password needs 8 or more characters, one number, and one capital letter. Select Continue.

    Create the owner account form
    Create the owner account. This screen is the same on every cloud.
  2. On Choose an edition, select Continue with Community. Select Enterprise only when you have a license file or a license key.

    Choose an edition with Community selected
  3. On Send email from this installation, select Skip for now.

    SMTP form with Skip for now
  1. On Set up runner fleets, select Set up fleets.

    Set up runner fleets
  2. On Choose a cloud provider, select the provider Terraform loaded, then select Continue.

    Choose a cloud provider
  3. On Configure the default fleet, keep e1-large-amd64. The default Warm capacity is 1. The default Maximum capacity is 10. Change either value when you need a different number of machines. Each AWS or Azure machine uses 2 vCPUs. Select Generate install command.

    Configure the default fleet
    The machine type list follows the provider. Capacity is the same on every cloud.
  4. On Create the chart values, copy the command and run it. It writes fleet-manager-values.yaml. Select Continue.

    Create the chart values
  5. On Install the chart, run the Helm command in the same directory. When the page says Fleet Manager created the selected fleets, select Finish installation.

    Install the chart with Finish installation

The machine type is m8a.large for amd64 and m8g.large for arm64. If the file contains <RUNNER_IMAGE>, the AMI was empty at apply time. Set it, run terraform apply again, and reload the wizard.

Start a task on the default fleet. With the default capacity, one machine is ready and the fleet can run 10 machines. The quickstart connects a repository. Use your installation URL.

When something fails, use Troubleshooting. To move to a newer chart or remove the stack, use Upgrade and uninstall.