Skip to main content
Glama

create_ankracloud_cluster

Destructive

Create and provision a new self-managed Kubernetes cluster on Ankra Cloud: k3s or kubeadm on Ankra Cloud servers in one zone, reached through a bastion server that holds the cluster's one public IPv4. Ankra creates a private network (or adopts private_network_id), a router with NAT for the nodes' egress and a firewall that admits only the private network to the nodes; the Ankra Cloud cloud controller manager is always installed. The organisation's built-in Ankra Cloud credential is used unless credential_id names a stored one (list_provider_credentials with provider='ankracloud'). Zones and plans come from list_managed_k8s_options with provider='ankracloud_k8s': its locations are the zones and its node sizes are the plans, with monthly prices. The create runs a preflight first (credential, billing standing of the built-in account, zone offers compute, every plan and the template exist, an adopted network lives in the zone, quota) and refuses with every failing item when it cannot proceed; nothing is written on refusal. A managed Ankra Cloud Kubernetes cluster (Ankra Cloud runs the control plane) is create_managed_cluster with provider='ankracloud_k8s', not this tool. Only available to organisations with Ankra Cloud enabled.

Input Schema

NameRequiredDescriptionDefault
cniNoContainer network plugin. Default: 'cilium'. kubeadm accepts only cilium.
nameYesCluster name. Must be unique within the organisation.
zoneYesAnkra Cloud zone the servers are placed in (e.g., 'se-sto1'). Get the deployable zones from list_managed_k8s_options with provider='ankracloud_k8s'.
templateNoPublic Ankra Cloud operating-system template every server boots. Default: 'debian-13'.
descriptionNoOptional cluster description.
include_dnsNoProvision the cluster's Ankra-managed DNS zone. Default: true.
worker_planNoAnkra Cloud plan for worker nodes. Required when worker_count is above zero.
bastion_planYesAnkra Cloud plan for the bastion server (e.g., 'premium-2xcpu-4gb'). Plans are the node sizes list_managed_k8s_options returns for provider='ankracloud_k8s'.
distributionNoKubernetes distribution. Default: 'kubeadm' (vanilla upstream Kubernetes with Cilium). 'k3s' is the lightweight alternative. kubeadm supports only the cilium CNI on Ankra Cloud.
worker_countNoNumber of worker nodes. Default: 1.
credential_idNoUUID of the Ankra Cloud credential. Get from list_provider_credentials with provider='ankracloud'. Omit it to use the organisation's built-in Ankra Cloud credential, which is the normal case.
gitops_branchNoBranch of the GitOps repository. Default: 'master'.
gitops_providerNoProvider of the GitOps repository: 'github' (the default when omitted) or 'bitbucket_cloud'. Pass the credential's provider from list_gitops_credentials.
gitops_repo_slugNoBitbucket Cloud repository slug of the GitOps repository (from list_gitops_repositories). Only with gitops_provider 'bitbucket_cloud', together with gitops_workspace.
gitops_workspaceNoBitbucket Cloud workspace of the GitOps repository (from list_gitops_repositories). Only with gitops_provider 'bitbucket_cloud', together with gitops_repo_slug.
network_ip_rangeNoCreated network only: the private IPv4 CIDR Ankra creates the cluster network with. Omit it for a range derived per cluster. Refused alongside private_network_id.
retention_policyNoStorage retention on teardown. Default: 'retain'.
worker_disk_tierNoStorage tier of each worker's root disk. Omit it for the zone's default tier. local-nvme puts the disk on the node's own fast disks (the right choice for CI nodes); standard, maxiops and hdd are the zone's Ankra Storage tiers.
bastion_disk_tierNoStorage tier of the bastion's root disk. Omit it for the zone's default tier. local-nvme puts the disk on the node's own fast disks (the right choice for CI nodes); standard, maxiops and hdd are the zone's Ankra Storage tiers.
gitops_repositoryNoOptional GitOps repository to connect at creation: 'owner/repo' on GitHub, 'workspace/repo_slug' on Bitbucket Cloud; requires gitops_credential_name.
control_plane_planYesAnkra Cloud plan for control plane nodes.
include_networkingNoInstall the platform networking stack (ingress, cert-manager, external-dns). Default: true.
kubernetes_versionNoKubernetes version. If not specified, uses the latest supported version.
private_network_idNoId of an existing Ankra Cloud private network in the same zone to adopt; it is never deleted with the cluster. Refused alongside network_ip_range. Omit it to have Ankra create a private network for the cluster.
bastion_allowed_ipsNoIPv4 or IPv6 addresses or CIDRs allowed to SSH to the bastion's public IPv4 (e.g., '203.0.113.4/32'). Omit it to admit SSH from the internet; access is still key-only.
control_plane_countNoNumber of control plane nodes. Default: 1.
ssh_key_credential_idNoUUID of an SSH key credential to install on the bastion and nodes. Get from list_provider_credentials with provider='ssh-key'. Omit it to use only the key Ankra generates for the cluster.
worker_disk_gibibytesNoRoot disk size of each worker in GiB. Omit it for the plan's included disk. Keep it small when workloads keep their data on persistent volumes.
bastion_disk_gibibytesNoRoot disk size of the bastion in GiB. Omit it for the plan's included disk. Ankra Cloud refuses a size below the plan's and the template's minimum.
gitops_credential_nameNoName of the git credential, GitHub or Bitbucket Cloud, that can read the GitOps repository (see list_gitops_credentials). Requires gitops_repository, or for Bitbucket Cloud gitops_workspace and gitops_repo_slug.
control_plane_disk_tierNoStorage tier of each control plane's root disk. Omit it for the zone's default tier. local-nvme puts the disk on the node's own fast disks (the right choice for CI nodes); standard, maxiops and hdd are the zone's Ankra Storage tiers.
control_plane_disk_gibibytesNoRoot disk size of each control plane in GiB. Omit it for the plan's included disk.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / bastion_disk_gibibytes
      Added value: +{
      +  "description": "Root disk size of the bastion in GiB. Omit it for the plan's included disk. Ankra Cloud refuses a size below the plan's and the template's minimum.",
      +  "maximum": 4096,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / bastion_disk_tier
      Added value: +{
      +  "description": "Storage tier of the bastion's root disk. Omit it for the zone's default tier. local-nvme puts the disk on the node's own fast disks (the right choice for CI nodes); standard, maxiops and hdd are the zone's Ankra Storage tiers.",
      +  "enum": [
      +    "local-nvme",
      +    "standard",
      +    "maxiops",
      +    "hdd"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / control_plane_disk_gibibytes
      Added value: +{
      +  "description": "Root disk size of each control plane in GiB. Omit it for the plan's included disk.",
      +  "maximum": 4096,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / control_plane_disk_tier
      Added value: +{
      +  "description": "Storage tier of each control plane's root disk. Omit it for the zone's default tier. local-nvme puts the disk on the node's own fast disks (the right choice for CI nodes); standard, maxiops and hdd are the zone's Ankra Storage tiers.",
      +  "enum": [
      +    "local-nvme",
      +    "standard",
      +    "maxiops",
      +    "hdd"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / worker_disk_gibibytes
      Added value: +{
      +  "description": "Root disk size of each worker in GiB. Omit it for the plan's included disk. Keep it small when workloads keep their data on persistent volumes.",
      +  "maximum": 4096,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / worker_disk_tier
      Added value: +{
      +  "description": "Storage tier of each worker's root disk. Omit it for the zone's default tier. local-nvme puts the disk on the node's own fast disks (the right choice for CI nodes); standard, maxiops and hdd are the zone's Ankra Storage tiers.",
      +  "enum": [
      +    "local-nvme",
      +    "standard",
      +    "maxiops",
      +    "hdd"
      +  ],
      +  "type": "string"
      +}
  2. Added

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say it is a non-idempotent, destructive write. The description adds what is actually built (private network or adopted one, NAT router, firewall admitting only the private network, bastion holding the one public IPv4, CCM always installed) and a full preflight contract: every failing item is reported and 'nothing is written on refusal'. It also discloses that an adopted network is never deleted with the cluster, which materially tempers the destructiveHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause and the sibling disambiguation is placed after the scope details, which is sensible ordering. It is a dense ~200-word block with no paragraph breaks, and the enumerated preflight checklist is the one stretch that could be shortened without losing decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 32-parameter, destructive, no-output-schema creation tool, the description covers prerequisites, provisioning side effects, defaults for credentials, and refusal semantics. The only gap is that it says nothing about what the call returns or whether it is synchronous versus long-running, which an agent needs in order to decide whether to wait or poll.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description still adds relational meaning beyond the schema by explaining that list_managed_k8s_options locations map to zones and node sizes map to plans, and that preflight validates credential, billing, zone compute, plan/template existence, adopted-network zone and quota. It does not, however, add syntax or defaults for most of the 32 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Create and provision a new self-managed Kubernetes cluster on Ankra Cloud'), then narrows scope: k3s or kubeadm, self-managed, one zone, bastion-fronted. It is unmistakable against siblings such as create_managed_cluster or create_aws_cluster.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent away from this tool ('A managed Ankra Cloud Kubernetes cluster ... is create_managed_cluster with provider=ankracloud_k8s, not this tool') and states the enabling prerequisite ('Only available to organisations with Ankra Cloud enabled'). It also names the two prerequisite lookup tools (list_managed_k8s_options, list_provider_credentials) and what to read from them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources