etcd structure
kcp has made some changes to etcd storage paths to support logical clusters and APIExport identities. Please see below for details.
Built-in APIs
Built-in APIs, such as namespaces
, configmaps
, clusterroles
, etc., use the following storage path structure:
Let's break down the segments in the etcd path for this example ConfigMap instance:
Segment name | Description |
---|---|
registry | etcd prefix |
core | API group name |
configmaps | API resource name |
root | logical cluster name |
default | namespace |
kube-root-ca.crt | ConfigMap name |
Standard custom resource instances
Custom resource instances for a CustomResourceDefinition in a workspace use the following storage path structure:
/etcd prefix/API group name/API resource name/"customresources"/logical cluster name/[namespace, if applicable]/name
Let's break down the segments in the etcd path for this example APIBinding instance:
Segment name | Description |
---|---|
registry | etcd prefix |
apis.kcp.io | API group name |
apibindings | API resource name |
customresources | hard-coded (as opposed to an APIExport identity hash) |
2cynbfy2m0wtjqcs | logical cluster name |
scheduling.kcp.io-1mc2w | APIBinding name |
"Bound" custom resource instances
Custom resource instances for an API provided by an APIExport, bound by an APIBinding, use the following storage path structure:
/etcd prefix/API group name/API resource name/APIExport identity hash/logical cluster name/[namespace, if applicable]
/name
Let's break down the segments in the etcd path for this example Workspace instance:
/registry/tenancy.kcp.io/workspaces/cbf732f90c9b7eac67e3d8f8e4c22cf8de0e36acefab6bbab738a85535c0d4cf/root/compute
Segment name | Description |
---|---|
registry | etcd prefix |
tenancy.kcp.io | API group name |
workspaces | API resource name |
cbf732f90c9b7eac67e3d8f8e4c22cf8de0e36acefab6bbab738a85535c0d4cf | APIExport identity hash |
root | logical cluster name |
compute | Workspace name |