Quickstart
In about 10 minutes, you'll run a control plane and deploy the hub API and review its resources in the Upbound Console.
Control planes and Upbound
A Kubernetes control plane is the central management layer for your cluster. It exposes the Kubernetes API, stores cluster data, schedules pods, and runs the control loops that keep everything in sync.
Crossplane applies that idea to resources outside the cluster: databases, IAM policies, compute, and anything else with an API. You manage each one with a provider, a package that lets Crossplane provision resources on an external service. Crossplane doesn't just create infrastructure, it reconciles it. If someone edits a security group in a cloud console, Crossplane returns it to your desired state, the same resilience Kubernetes gives your workloads.
Upbound Crossplane (UXP) adds operational features Crossplane lacks out of the box: a secrets proxy, backup and restore, and control plane insights. Spaces go further, hosting many isolated control planes on shared infrastructure instead of a new cluster for each one.
Prerequisites:
Before you begin, make sure you have:
kindkubectlhelm- An Upbound account
Run the installation script
The script creates a kind cluster, installs the control plane and Hub components.
The hub installation in this quickstart is free to try from July 31st, 2026 to October 29th, 2026.
Quickstart install script
#!/usr/bin/env bash
set -euo pipefail
for bin in kind helm kubectl up; do
command -v "$bin" >/dev/null 2>&1 || { echo "error: '$bin' not found on PATH" >&2; exit 1; }
done
echo "==> Creating KIND cluster 'hub-quickstart'"
kind create cluster --name hub-quickstart
echo "==> Installing the hub (demo)"
helm upgrade --install hub oci://xpkg.upbound.io/upbound/hub \
-n hub --create-namespace --set global.demo.enabled=true --version 1.0.0-rc.2
echo "==> Waiting for hub components"
kubectl -n hub wait --for=condition=ready pod --all --timeout=5m
echo "==> Forwarding the Console gateway to https://hub.127.0.0.1.nip.io:8443"
gateway_svc=$(kubectl -n hub get svc -l gateway.envoyproxy.io/owning-gateway-name=hub-gateway -o jsonpath='{.items[0].metadata.name}')
kubectl -n hub port-forward "svc/${gateway_svc}" 8443:8443 &
pf_pid=$!
trap 'kill "$pf_pid" 2>/dev/null || true' EXIT
cat <<'EOF'
Hub: https://hub.127.0.0.1.nip.io:8443 (login admin / admin)
Hub port-forward running. When you're done with this quickstart, press Ctrl+C to stop it.
EOF
wait "$pf_pid"
Download and run it:
curl -fsSL "https://docs.upbound.io/manifests/getstarted/quickstart.sh" -o quickstart.sh
bash quickstart.sh
The script keeps a Console port-forward running in your terminal. Leave it running and open a new terminal for the following steps.
Check out the Console
The hub resources appear in the Console automatically.
Clean up
Once you're finished with this quickstart, be sure to clean up the kind resources you created.
kind delete cluster --name hub-quickstart
Next steps
- Builders workshop for real cloud resources.
- Hub overview for the full-fleet story.