Skip to main content
Ankra builds self-managed Kubernetes clusters on Ankra Cloud servers: a private network with a NAT router, a bastion server, control plane and worker servers on the private network, kubeadm or k3s installed over SSH, and the Ankra Cloud cloud controller manager and CSI driver deployed as a stack. You own the control plane and every server; Ankra provisions, upgrades and repairs them.
Closed beta. Ankra Cloud as a cluster provider is in closed beta. The workflow is stable but the surface may still change, and it is enabled per organisation on request - until it is, Ankra Cloud does not appear in the create-cluster dialog or among the credential providers, and its endpoints are not served. Contact support to have it turned on for your organisation.
This is the self-managed lane. If you want the Ankra team to run the control plane for you, use Ankra Cloud Kubernetes instead; the comparison table sets the two side by side.

Prerequisites

Ankra Cloud Credential

An Ankra Cloud API token (act_...) from a user allowed to create servers, networks and routers. The same credential serves both self-managed clusters and Ankra Cloud Kubernetes. See Ankra Cloud Credentials.

SSH Key Credential

An SSH public key for server access. You can provide your own or let Ankra generate one. See SSH Key Credentials.

Creating an Ankra Cloud cluster

Via the Platform UI

1

Open the create dialog

Go to Clusters → Create Cluster and pick Ankra Cloud under Ankra Managed (kubeadm or k3s on Ankra Cloud servers).
2

Credentials & Zone

Pick the Ankra Cloud credential, or add one inline with Add Ankra Cloud credential. Choose the Runtime credential the in-cluster cloud controller and CSI driver use: the default reuses the provisioning credential, and a separate, dedicated credential limits what those components can reach. Pick an SSH key, then the zone. Zones, plans and templates load live from your Ankra Cloud account; a zone that runs no servers (a network-only location such as Stockholm) is refused.
3

Private Network & Bastion

Choose Create a dedicated network (Ankra creates and owns the network and its router; the wizard proposes 10.64.0.0/20) or Use an existing network in the zone. Pick the bastion plan, and optionally restrict Bastion allowed IPs to the CIDRs that may reach the bastion over SSH; empty allows any address. Storage retention on teardown decides whether persistent volumes are kept (the default) or deleted when the cluster is deprovisioned.
4

Compute

Set the control-plane count (1, 3 or 5) and plan, then one or more worker node groups, each with its own plan, count, labels and taints. The cost summary prices every server from the live plan catalog, plus public IPv4. Storage, load balancers and transfer are not in the total.
5

Kubernetes

Choose the server template (default debian-13), the distribution and the Kubernetes version:
  • kubeadm (default) - vanilla Kubernetes with containerd and Cilium. Cilium is the only CNI kubeadm accepts on Ankra Cloud. etcd runs stacked on the control-plane nodes, or on 3 or 5 dedicated external etcd servers with their own plan.
  • k3s - a single binary with batteries included, with a choice of CNI.
6

GitOps

Optionally connect a Git repository, and Ankra commits the cluster’s stacks to it. Two checkboxes are on by default:
  • Include Networking Stack - Traefik, cert-manager and a Let’s Encrypt ClusterIssuer, with Traefik behind an Ankra Cloud load balancer.
  • Include DNS Integration - external-dns, so Ingress hostnames publish their DNS records automatically.
Skipping GitOps still deploys the cloud controller manager and CSI driver; the ankracloud-cloud-provider stack is then not committed to Git.
7

Preflight & Review

Name the cluster and create it. Preflight checks run first against your account: the credential authenticates, the zone offers compute, every plan and the template exist, an existing network lives in the chosen zone, and kubeadm is paired with Cilium. Any failing check blocks creation and says why.A live progress view then tracks the network, router, firewall, bastion, servers, Kubernetes installation and Ankra Agent. The cluster shows offline until provisioning finishes, then online.

Via the API

Plans are account-wide; list them, and the zones, templates and networks the wizard offers, with GET /api/v1/clusters/ankracloud/plans?credential_id=<id> (and /zones, /templates, /networks?zone=<zone> alongside). POST /api/v1/clusters/ankracloud/preflight takes the same body and answers the checks without creating anything. A cluster has at most 100 workers across its node groups.

Network design

Ankra Cloud servers are IPv6-first. Nodes do not rely on the per-server IPv4 translation (CLAT) Ankra Cloud offers IPv6-only servers; pod and node IPv4 traffic leaves through the router’s NAT instead. Every server Ankra creates carries the labels platform.ankra.io/managed-by=ankra-platform, platform.ankra.io/cluster-id=<cluster-id> and platform.ankra.io/role, so you can find a cluster’s servers in the Ankra Cloud console.

Cost

Servers are billed by Ankra Cloud at their plan price. A public IPv4 address costs €3 a month per address; the bastion holds one, and the nodes hold none. IPv6 is not billed. Load balancers the cloud controller creates, persistent volumes and transfer are billed by Ankra Cloud on top and are not part of the wizard’s estimate.

Cloud controller and storage

After the Ankra Agent is installed, Ankra deploys the ankracloud-cloud-provider stack into kube-system: the ankra-cloud-ccm and ankra-cloud-csi charts, sharing the runtime credential’s token through the Secret ankra-cloud (SOPS-encrypted when the stack is committed to Git). Every kubelet runs with --cloud-provider=external, and the controller links each node to its server as ankracloud://<zone>/<server-id>. LoadBalancer Services. ankra-cloud-ccm gives each Service of type LoadBalancer an Ankra Cloud load balancer on the cluster’s private network, with the nodes’ private addresses as members. The networking stack’s Traefik uses one, with externalTrafficPolicy: Local so the client address is preserved. Persistent volumes. ankra-cloud-csi provisions Ankra Cloud storages. It installs four StorageClasses: Volumes are ReadWriteOnce and created in the zone of the node their pod is scheduled on.

Managing an Ankra Cloud cluster

Once the cluster is online:
  • Node groups - add, scale, re-plan, label and taint worker groups from cluster Settings → Nodes.
  • Restart a node - restart a single server from the node list.
  • Bastion and control plane - resize the bastion or the control-plane servers from cluster settings.
  • Upgrade Kubernetes - from cluster settings.
  • Stop and start - a stop powers the servers off and keeps them, with their disks; a start powers them on again. See Stop cluster.

Deprovisioning

Deprovisioning deletes the servers, the bastion, the router, the firewall rules and the private network Ankra created, then removes the cluster from Ankra. A network you adopted with private_network_id is left in place. Persistent volumes follow the retention policy and are deleted only once you accept it - see persistent volumes.
This action is irreversible. All data on the cluster’s servers is permanently deleted.
Go to your cluster → Settings → General → Danger Zone and click Terminate.

Troubleshooting