Skip to main content

anycloud root and anycloud placement

A root is the one Kubernetes control plane an installation registers. Placements are cloud-specific VM pools recorded inside that root: each placement owns its own compute credential, region, optional zone, and VM type. Deleting a placement never deletes the root or a sibling placement.

Roots and placements are distinct from anycloud cluster records. An existing independent cluster is not reinterpreted as a root or a placement.

In this release the commands below manage the records only. Every anycloud placement create is refused with PLACEMENTS_UNAVAILABLE because placement VM provisioning has not shipped, so placement list, status, and delete have nothing to act on yet. Root registration, inspection, and deletion are fully functional.

Register the root​

anycloud root register <name> --kubeconfig <path> [--expect-identity <uid>]

The API accepts only a single-context kubeconfig whose cluster has an https:// server and inline certificate-authority-data, and whose user has an inline token or inline client-certificate-data and client-key-data. Exec credential plugins, auth providers, token or certificate file paths, insecure-skip-tls-verify, proxy-url, plain http:// servers, and documents with more than one cluster, user, or context are refused with KUBERNETES_ROOT_INVALID before anything is contacted. The supplied identity needs get on the kube-system namespace.

The API reads the root's kube-system namespace UID, stores that identity with an encrypted copy of the normalized connection, and never returns either the kubeconfig or the token. Registration fails when the root cannot be reached (KUBERNETES_ROOT_UNREACHABLE, with no upstream detail in the response), when --expect-identity names a different UID than the root reports, or when a root is already registered.

An installation has exactly one active root. To register a different control plane, delete the existing root record first.

Inspect and delete the root​

anycloud root list
anycloud root status <id-or-name>
anycloud root delete <id-or-name>

status reports the lifecycle state, Kubernetes identity, connection revision, and the number of placements that are not yet deleted. Deletion is rejected while any placement still references the root. A registered root owns no infrastructure, so deletion forgets the record and its connection material immediately and returns deleted. Each command accepts --json; rm is an alias for delete.

Create a placement​

anycloud placement create <name> \
[--root <id-or-name>] \
--credentials <name> \
--region <region> \
[--zone <zone>] \
--vm-type <type> \
--min-vms <count> \
--max-vms <count>

--root is optional and must resolve to the registered root when given. The credential, region, zone, and VM type are fixed for the placement's whole life. --zone must belong to --region (us-east-1a, us-central1-a) or be a single digit on Azure; other providers accept no zone. --min-vms and --max-vms must be equal and at least one.

As noted above, this release refuses every creation request before storing any intent.

Inspect and delete a placement​

anycloud placement list [--root <id-or-name>]
anycloud placement status <id-or-name>
anycloud placement delete <id-or-name>

status and delete accept the placement ID or its name. Deletion is rejected while Deployments or Workloads target the placement; otherwise the placement is marked deleting and its root and sibling placements stay usable. terminate and rm are aliases for delete. Each command accepts --json.