Provider example
Aruba — NodePool, NodeClass & Workload
Full manifests and kubectl commands for Aruba Cloud.
Replace placeholders
<HOST_TAILSCALE_IP>→ Kind control-plane Tailscale IPyour-aruba-project-id→ Aruba Cloud project ID
Ensure secrets exist: tailscale-auth, aruba-api-credentials.
1. Create secrets
# Tailscale auth key (required by NodeClass)
kubectl create secret generic tailscale-auth --from-literal=authkey="<YOUR_TAILSCALE_AUTHKEY>" -n default
# Aruba API credentials (application key and secret from Aruba Cloud console)
kubectl create secret generic aruba-api-credentials \
--from-literal=ARUBA_API_KEY="<YOUR_APPLICATION_KEY>" \
--from-literal=ARUBA_API_SECRET="<YOUR_APPLICATION_SECRET>" \
-n default
2. NodePool
apiVersion: cloudburst.io/v1alpha1
kind: NodePool
metadata:
name: aruba-nodepool
namespace: default
spec:
requirements:
regionConstraint: "EU"
arch: ["x86_64"]
maxPriceEurPerHour: 0.15
allowedProviders: ["aruba"]
limits:
maxNodes: 3
minNodes: 0
template:
labels:
cloudburst.io/nodepool: "aruba-nodepool"
cloudburst.io/provider: "aruba"
disruption:
ttlSecondsAfterEmpty: 60
ttlSecondsUntilExpired: 3600
weight: 1
3. NodeClass
apiVersion: cloudburst.io/v1alpha1
kind: NodeClass
metadata:
name: aruba-nodeclass
namespace: default
spec:
aruba:
projectID: "your-aruba-project-id"
applicationKeySecretRef:
name: aruba-api-credentials
key: ARUBA_API_KEY
applicationSecretSecretRef:
name: aruba-api-credentials
key: ARUBA_API_SECRET
join:
hostApiServer: "https://<HOST_TAILSCALE_IP>:6443"
kindClusterName: "cloudburst"
tokenTtlMinutes: 60
tailscale:
authKeySecretRef:
name: tailscale-auth
key: authkey
bootstrap:
kubernetesVersion: "1.34.3"
4. Workload (triggers burst; targets Aruba nodes)
apiVersion: v1
kind: Pod
metadata:
name: aruba-workload
namespace: default
spec:
containers:
- name: workload
image: busybox:1.36
command: ["sleep", "infinity"]
resources:
requests:
cpu: "1500m"
memory: "2Gi"
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloudburst.io/provider
operator: In
values: ["aruba"]
5. Apply and verify
# Save the manifests above to aruba-example.yaml, then:
kubectl apply -f aruba-example.yaml
# Watch NodeClaim creation
kubectl get nodeclaims -w
# Once node is Ready, verify pod
kubectl get pods -o wide
kubectl get nodes -l cloudburst.io/provider=aruba