Kvindo™ Cloud Docs


Language

Etcd Cluster

An Etcd Cluster is a managed distributed key-value store for service discovery, coordination, and configuration storage. Each instance runs on its own dedicated VM; the cluster is described as a single resource with one entry per node in spec.instances — there is no separate node-group resource.

Key concepts

• Cluster-wide sizing, per-instance identity — spec.vmOfferId/spec.volumeOfferId/spec.volumeSizeGiB apply identically to every instance (the cluster is homogeneous by design); only each instance's id and subnet (spec.instances[].id/vpcSubnetId) vary per node

• Instance id is caller-supplied — the platform diffs the desired instances array against the current one on every modify; reuse an instance's existing id to keep it, or supply a new id to add a node

• Scaling moves one step between valid sizes — a single request may only move the instance count to the adjacent allowed size (1↔3, 3↔5, 5↔7), and cannot add and remove instances in the same request (submit two separate modifies instead). To go from 1 node to 5, apply two separate modify requests: 1→3, then 3→5

• Subnet placement — every instance must share one Vpc (etcd peers across different VPCs cannot reach each other); an existing instance's vpcSubnetId is immutable — to move an instance to a different subnet, add a new instance there and remove the old one

• Cluster size — must be odd and between 1 and 7 (etcd needs a raft quorum to stay available, so an even count tolerates no more failures than the next-lower odd one, and 7 is etcd's own documented practical ceiling); any other count is rejected with a validation error

• Public access — private by default; set spec.createPublicIpv4 to give every instance a public IPv4. Immutable after creation

Parameters
UI Name API / kc name Terraform name Optional Format Default Is read only Description
Tier spec.tier spec.tier No string standard No Reserved for future use — only standard is accepted today
Etcd version spec.etcdVersion spec.etcd_version No string — etcd version 3.6.14 No 3.6.14 is currently the only supported version — any other value is rejected on both create and modify, so this field is effectively immutable for now
Root password spec.rootPassword spec.root_password No string (sensitive) — 8-64 chars, letters/digits/./_/- only — No Cluster-wide credential for etcdctl auth. Returned in plain text as spec.rootPassword on every read - treat API/CLI output as sensitive
Public IPv4 spec.createPublicIpv4 spec.create_public_ipv4 Yes boolean false No Give every instance a public IPv4
VM offer spec.vmOfferId spec.vm_offer_id No string (≤32) — compute offer g3-1c1-100 No Applies to every instance — see the Console catalog
Volume offer spec.volumeOfferId spec.volume_offer_id No string (≤32) — disk offer gp3-750 No Applies to every instance
Volume size spec.volumeSizeGiB spec.volume_size_gib No integer — GiB 10 No Applies to every instance
Instances spec.instances spec.instances No list of objects — No One entry per cluster node
Instance ID instances[].id instances[].id No ULID — No Caller-supplied — reuse across modifies to keep an existing instance
VPC subnet instances[].vpcSubnetId instances[].vpc_subnet_id No ULID — references a VPC Subnet — No Subnet for this instance
CA certificate status.caCert status.ca_cert — string — Yes Cluster's public CA certificate — pass to etcdctl --cacert to trust the cluster's TLS
Port status.port status.port — integer — Yes Port etcdctl connects to — always 2379 today
Instances status.instances status.instances — list of objects — Yes The provisioned cluster nodes
Instance ID instances[].id instances[].id — ULID — Yes Matches the spec instance id
Public IPv4 instances[].publicIpV4 instances[].public_ipv4 — string — Yes Set only when the cluster has public IPv4 enabled
Private IPv4 instances[].privateIpV4 instances[].private_ipv4 — string — Yes Address on the instance's VPC subnet
Examples

A private 3-node cluster on an existing subnet.

Terraform

Python SDK

kc CLI


Related pages

Resource docs

An unhandled error has occurred. Reload 🗙