Skip to main content
Ankra builds Ankra 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.

Before you start

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.

Create the cluster

Dashboard

1

Open the create dialog

Go to Clusters, click 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 (the wizard offers 1, 3 or 5; the API accepts any count from 1 to 9) 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. The router, storage, load balancers and transfer are not in the total; see Cost.
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 click Run preflight. The checks run 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. Then click Create cluster; a progress view tracks the network, router, firewall, bastion, servers, Kubernetes installation and Ankra Agent.

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, and at most 64 nodes in all, control planes included, because of the pod range it is given (see Network ranges and their limits). A request that plans more, counting each node group’s autoscaling maximum, is refused before anything is provisioned.

Verify

  1. The cluster moves from Provisioning to Online in the clusters list once the Ankra Agent has connected.
  2. Point kubectl at it through Ankra (this needs a Cluster Access grant) and check the nodes:
    Every control plane and worker should be Ready. See Accessing Clusters with kubectl.

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

Ankra Cloud bills the cluster’s resources to your Ankra Cloud account. A cluster is made of:
  • Servers - the bastion, the control planes and the workers, each at its plan price.
  • Public IPv4 - one address, held by the bastion. The nodes hold none, and IPv6 is not billed.
  • The router with NAT - one for each cluster, billed monthly while NAT is enabled.
  • Load balancers - the ones the cloud controller creates for LoadBalancer Services, the networking stack’s Traefik included.
  • Persistent volumes - the storages the CSI driver provisions, by tier and size.
  • Transfer - outbound traffic beyond what each server includes.
The wizard’s estimate covers the servers and the public IPv4 address only. For the current price of every line, see Billing in the Ankra Cloud documentation.

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>. The charts’ own behaviour, values and annotations are documented by Ankra Cloud: Kubernetes cloud controller manager and Kubernetes CSI driver. 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. Deleting the Service deletes its load balancer; Ankra itself never deletes one, so remove your LoadBalancer Services before you terminate the cluster, or a load balancer still bound then stays in your Ankra Cloud account. 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.

Operate it

Day-2 tasks work as on every Ankra Managed provider, from the dashboard or the API - the released CLI has no Ankra Cloud commands yet:

Troubleshooting