Prerequisites
Before creating a DigitalOcean cluster, you need two credentials:DigitalOcean API Credential
A DigitalOcean personal access token with read/write permissions. See DigitalOcean 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 a DigitalOcean Cluster
Via the Platform UI
1
Navigate to Clusters
Go to Clusters in the Ankra dashboard and click Create Cluster.
2
Select DigitalOcean
Choose DigitalOcean as the provider.
3
Select Credentials
Pick your DigitalOcean API credential and SSH key credential from the dropdowns. You can also create new credentials directly from the wizard.
4
Choose Region
Select a DigitalOcean region (e.g.,
nyc3, fra1, lon1). Each region shows the location and country.5
Configure Nodes
Set your cluster topology:
- Bastion - Droplet size for the SSH bastion host (e.g.,
s-1vcpu-1gb) - Control Plane - Count (1 or 3) and size (e.g.,
s-2vcpu-4gb) - Workers - Count and size (e.g., 2×
s-2vcpu-4gb)
6
Choose Distribution
Pick the Kubernetes distribution:
kubeadm Vanilla upstream Kubernetes bootstrapped with
kubeadm and containerd (preselected). kubeadm clusters always use Cilium CNI and optionally support an external etcd topology with dedicated etcd droplets.
k3s Lightweight Kubernetes with a user-selectable CNI.See Kubernetes Distribution for details.7
Create & Track Progress
Click Create to start provisioning. A live progress view tracks credential setup, VPC creation, NAT gateway setup, SSH key deployment, bastion provisioning, droplet creation, Kubernetes installation (k3s or kubeadm), and Ankra Agent setup. The cluster appears with an offline state until provisioning completes, then transitions to online.
Via the CLI
Via the API
Cluster Configuration Options
DigitalOcean Regions
Available regions and sizes depend on your account. Use
ankra cluster digitalocean regions and ankra cluster digitalocean sizes to list what your credential can deploy.Common Droplet Sizes
Kubernetes Distribution
DigitalOcean clusters can be provisioned with either kubeadm (preselected in the create wizard) or k3s (the API and CLI default whendistribution is omitted).
kubeadm clusters always use Cilium CNI (eBPF-based networking, L7 policies, Hubble observability). The CNI cannot be changed after creation.
Advanced CNI features
k3s clusters can enable advanced CNI features at creation time viacni_features (also available as toggles in the create wizard). Features are fixed once the cluster is created.
External etcd topology (kubeadm)
By default kubeadm runs etcd stacked on the control plane nodes. For larger clusters you can run etcd on dedicated droplets by settingetcd_topology to external:
--distribution kubeadm, --etcd-topology external, --etcd-node-count 3, and --etcd-size s-2vcpu-4gb.
Node Groups
Node groups let you organize worker nodes into logical groups with independent droplet sizes, counts, labels, and taints. Each group can be scaled, resized, and configured independently.Via the Platform UI
Navigate to cluster Settings > Nodes to manage node groups. From this tab you can:- View all node groups with their droplet size, count, labels, and taints
- Add new node groups with a name, droplet size, count, and optional labels/taints
- Scale individual groups up or down (0–100 nodes)
- Upgrade the droplet size (upgrade only - see Droplet Size Changes)
- Edit labels and taints per group
- Delete a node group and all its nodes
List Node Groups
Add a Node Group
Scale a Node Group
Droplet Size Changes
Update Labels and Taints
Delete a Node Group
Node Group API Reference
Restarting a Node
Restart any node - a control plane node, a worker, or the bastion - as a tracked operation, from cluster Settings > Nodes in the dashboard, via the CLI, or via the API:Resizing the Bastion or Gateway
Resize the bastion without recreating the cluster - Ankra powers it off, resizes it, and powers it back on.Legacy Worker Scaling
The legacyscale-workers and worker-count endpoints still work for backward compatibility.
For new clusters, prefer using Node Groups for more granular control.
Upgrading Kubernetes Version
You can upgrade the Kubernetes version on all nodes in a DigitalOcean cluster. Upgrades are applied to control plane nodes first, then workers. Both k3s and kubeadm clusters are supported.Check Current Version
Upgrade Version
Stopping and Starting a Cluster
You can stop a DigitalOcean cluster to release its compute (node droplets, the bastion, and the VPC NAT gateway) while keeping its configuration, networking definition, and SSH keys. Starting the cluster re-provisions the compute and reconciles it back to a running state. This is useful for pausing non-production clusters to save cost. When starting, use--scope control_plane to bring up only the control plane first (for example to inspect or repair it), or --scope all (the default) to provision the whole cluster.
Stop and start are background operations. A start returns
409 if a stop or terminate operation is still running. The cluster’s saved topology is preserved while stopped - ankra cluster digitalocean nodes list includes the soft-deleted entries that are re-provisioned on the next start.--force (or ?force=true on the API) to delete them together with any load balancers the cluster created. Ankra deletes exactly the volumes it recorded for this cluster, never other volumes in the account.
Deprovisioning
Deprovisioning deletes all DigitalOcean resources (droplets, NAT gateway, VPC, SSH keys) and removes the cluster from Ankra.--force also works on a cluster that was stopped earlier: the volumes recorded at stop time are still known and get reclaimed.
Architecture
A DigitalOcean cluster provisions the following infrastructure:
All nodes are deployed within a private VPC. Cluster nodes are created as private droplets with no public IP - the bastion host is the only droplet with a public address and provides the only external SSH access point. Outbound traffic from the nodes (image pulls, package downloads, the Ankra Agent connection) leaves through a managed VPC NAT gateway set as the VPC’s default route. The tag-scoped cloud firewalls stay in place as defense in depth; inter-node and jump traffic stay on the VPC.
DigitalOcean bills the VPC NAT gateway separately (from $40/month per gateway). See DigitalOcean’s VPC NAT gateway pricing for current rates.
Clusters created before private-droplet support keep their original layout: all droplets carry public IPs and rely on tag-scoped cloud firewalls as the ingress boundary. Public networking is fixed at droplet creation, so existing clusters - including nodes added when scaling them - stay on that model. Only newly created clusters get private nodes and a NAT gateway.
Provider-native Managed Kubernetes (DOKS & UKS)
In addition to self-managed k3s or kubeadm on droplets, Ankra can provision and import provider-native managed Kubernetes services:
See Managed Kubernetes for the full guide covering live options and pricing, preflight checks, discovery and import, node pool autoscaling, and upgrades - across DOKS, UKS, GKE, OVHcloud MKS, AKS, and EKS.
Create a managed cluster from the platform UI or via the API:
Troubleshooting
Common Issues
DigitalOcean Account Quotas
DigitalOcean has default resource limits per account. If provisioning fails, check your quotas in the DigitalOcean Control Panel:- Droplets
- VPCs
- Load Balancers
- Volumes