Skip to main content

External etcd

Enabling this feature deploys etcd on the host cluster in the same namespace as the virtual cluster and configures the control plane to use it as the backing store. vCluster deploys etcd with a StatefulSet, Service, and headless Service.

controlPlane:
backingStore:
etcd:
deploy:
enabled: true
...

You can customize the StatefulSet that vCluster uses to deploy etcd. One of the more common customizations is to set resource requests:

controlPlane:
backingStore:
etcd:
deploy:
enabled: true
statefulSet:
resources:
requests:
cpu: 20m
memory: 150Mi

Add optional annotations to each etcd component.

controlPlane:
backingStore:
etcd:
deploy:
enabled: true
statefulSet:
annotations:
app.kubernetes.io/part-of: "etcd"
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
service:
annotations:
app.kubernetes.io/part-of: "etcd"
headlessService:
annotations:
app.kubernetes.io/part-of: "etcd"
warning

After deploying your vCluster, changing the backing store of vCluster is not supported.

Migrate to embedded etcd​


Pro Feature

This feature is available in the vCluster Pro tier. Contact us for more details and to start a trial.

For vCluster Pro users, it is possible to migrate the backing store of a virtual cluster from the external to embedded etcd controlPlane.backingstore.etcd.embedded.

Config reference​

deploy required object pro​

Deploy defines to use an external etcd that is deployed by the helm chart

enabled required boolean false pro​

Enabled defines that an external etcd should be deployed.

statefulSet required object pro​

StatefulSet holds options for the external etcd statefulSet.

enabled required boolean true pro​

Enabled defines if the statefulSet should be deployed

EnableServiceLinks for the StatefulSet pod

image required object pro​

Image is the image to use for the external etcd statefulSet

registry required string registry.k8s.io pro​

Registry is the registry of the container image, e.g. my-registry.com or ghcr.io. This setting can be globally overridden via the controlPlane.advanced.defaultImageRegistry option. Empty means docker hub.

repository required string etcd pro​

Repository is the repository of the container image, e.g. my-repo/my-image

tag required string 3.5.15-0 pro​

Tag is the tag of the container image, e.g. latest

imagePullPolicy required string pro​

ImagePullPolicy is the pull policy for the external etcd image

env required object[] [] pro​

Env are extra environment variables

extraArgs required string[] [] pro​

ExtraArgs are appended to the etcd command.

resources required object pro​

Resources the etcd can consume

limits required object pro​

Limits are resource limits for the container

requests required object map[cpu:20m memory:150Mi] pro​

Requests are minimal resources that will be consumed by the container

pods required object pro​

Pods defines extra metadata for the etcd pods.

annotations required object {} pro​

Annotations are extra annotations for this resource.

labels required object {} pro​

Labels are extra labels for this resource.

highAvailability required object pro​

HighAvailability are high availability options

replicas required integer 1 pro​

Replicas are the amount of pods to use.

scheduling required object pro​

Scheduling options for the etcd pods.

nodeSelector required object {} pro​

NodeSelector is the node selector to apply to the pod.

affinity required object {} pro​

Affinity is the affinity to apply to the pod.

tolerations required object[] [] pro​

Tolerations are the tolerations to apply to the pod.

priorityClassName required string pro​

PriorityClassName is the priority class name for the the pod.

podManagementPolicy required string Parallel pro​

PodManagementPolicy is the statefulSet pod management policy.

topologySpreadConstraints required object[] [] pro​

TopologySpreadConstraints are the topology spread constraints for the pod.

security required object pro​

Security options for the etcd pods.

podSecurityContext required object {} pro​

PodSecurityContext specifies security context options on the pod level.

containerSecurityContext required object {} pro​

ContainerSecurityContext specifies security context options on the container level.

persistence required object pro​

Persistence options for the etcd pods.

volumeClaim required object pro​

VolumeClaim can be used to configure the persistent volume claim.

enabled required boolean true pro​

Enabled enables deploying a persistent volume claim.

accessModes required string[] [ReadWriteOnce] pro​

AccessModes are the persistent volume claim access modes.

retentionPolicy required string Retain pro​

RetentionPolicy is the persistent volume claim retention policy.

size required string 5Gi pro​

Size is the persistent volume claim storage size.

storageClass required string pro​

StorageClass is the persistent volume claim storage class.

volumeClaimTemplates required object[] [] pro​

VolumeClaimTemplates defines the volumeClaimTemplates for the statefulSet

addVolumes required object[] [] pro​

AddVolumes defines extra volumes for the pod

addVolumeMounts required object[] pro​

AddVolumeMounts defines extra volume mounts for the container

name required string pro​

This must match the Name of a Volume.

readOnly required boolean pro​

Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.

mountPath required string pro​

Path within the container at which the volume should be mounted. Must not contain ':'.

subPath required string pro​

Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root).

mountPropagation required string pro​

mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10.

subPathExpr required string pro​

Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive.

annotations required object {} pro​

Annotations are extra annotations for this resource.

labels required object {} pro​

Labels are extra labels for this resource.

service required object pro​

Service holds options for the external etcd service.

enabled required boolean true pro​

Enabled defines if the etcd service should be deployed

annotations required object {} pro​

Annotations are extra annotations for the external etcd service

headlessService required object pro​

HeadlessService holds options for the external etcd headless service.

enabled required boolean true pro​

Enabled defines if the etcd headless service should be deployed

annotations required object {} pro​

Annotations are extra annotations for the external etcd headless service