Skip to main content
A location backed by your own servers takes the place of a cloud region: Control Plane deploys every workload in a GVC that spans it onto your hardware, and one GVC can span it and cloud regions at once. It is a CPLN BYOK location, so its workloads reach AWS, GCP, and Azure services through Universal Cloud Identity, and private addresses in your network through their external firewall.

Pick a Path for Your Hardware

Prerequisites

  • The create and use permissions on locations. For the Linux servers path, also create and clusterAdmin on Managed Kubernetes clusters.
  • The cpln CLI and kubectl.
  • Capacity for the BYOK components, which run on your nodes beside your workloads: at least 2 nodes with 2 CPUs and 8 GB of memory each, as listed with the rest of the BYOK requirements.
  • For an existing cluster: at least one node labeled cpln.io/nodeType=core, a load balancer controller that assigns LoadBalancer services an address, a default StorageClass, and no service mesh.
  • For Linux servers: each server meets the Generic provider server requirements.
  • Outbound internet access from every node. For an air-gapped site, contact support@controlplane.com.

Create the Location

1

Open the location form

Click Locations in the left menu, then click New.
2

Create the location

Enter a name such as my-hardware and click Create. The location page opens.

Connect Your Hardware

1

Label the core nodes

BYOK runs its critical system pods on nodes labeled cpln.io/nodeType=core. Label at least one:
2

Generate the install command

In the Console, open the location and choose Actions > Install. The Install Location dialog shows the command and the time left to apply it under Expires In. With the CLI:
The first line of the output is the deadline:
The link downloads the location’s install token, so treat the command as a secret.
3

Apply the command to the cluster

With kubectl pointed at the cluster, run the kubectl apply command before its deadline. It creates the cpln-byok-agent deployment in the kube-system namespace.
4

Wait for the agent

The agent then installs the rest of the BYOK components into namespaces of their own, such as controlplane, istio-system, and monitoring. Rerun kubectl get pods -A until every pod reports Running or Completed.
To serve the same location from another cluster, repeat these steps on that cluster.

Deploy a Workload to the Location

Create a GVC that spans the location, then a workload in it:
To add the location to a GVC that already exists:
Adding the location to an existing GVC deploys every workload already in that GVC onto your hardware.

Verify

The my-hardware row reports ready=true once the workload runs on your hardware. Its endpoints resolve to the address your load balancer controller gave the BYOK ingress gateway, so they answer from any network that can reach that address.

Troubleshoot

The install command’s link expired before kubectl ran it. Generate a new command and apply it before the deadline on its first line.
BYOK pods stay Pending, and kubectl describe pod reports this event. The BYOK components alone fill nodes smaller than the BYOK requirements. Add nodes or memory until every node meets them.
The BYOK components claim persistent volumes from the cluster’s default StorageClass, and the cluster has none. Install a storage provisioner or mark an existing StorageClass as the default.
The LoadBalancer services in the istio-system namespace stay <pending>, and workloads never report ready. On an existing cluster, install a load balancer controller. On Linux servers with only private addresses, label the nodes with cpln.io/allowPrivateIPs=true as described in Ingress IPs.

When to Use Something Else

  • Workloads stay in the cloud and only need to reach something in your network, such as a database: use a wormhole agent or native networking.
  • You want to declare Control Plane resources from kubectl or Argo CD: use the Kubernetes operator.
  • A single server, or nodes below the BYOK requirements: the BYOK components need that capacity before any workload runs.

Next Steps

CPLN BYOK

Settings, cloud provider recommendations, and the uninstall procedure.

Generic Provider

Networking, ingress IPs, and the full server requirements.