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.