diff --git a/vcluster/_partials/config/controlPlane/backingStore/backing-store-migration.mdx b/vcluster/_partials/config/controlPlane/backingStore/backing-store-migration.mdx
deleted file mode 100644
index e15b39f39..000000000
--- a/vcluster/_partials/config/controlPlane/backingStore/backing-store-migration.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
-:::warning
-After deploying your vCluster, there are limited migration paths to change your backing store. Review the backing store migration options before deploying.
-:::
\ No newline at end of file
diff --git a/vcluster/_partials/config/controlPlane/distro/k0s.mdx b/vcluster/_partials/config/controlPlane/distro/k0s.mdx
deleted file mode 100644
index cdc7871d3..000000000
--- a/vcluster/_partials/config/controlPlane/distro/k0s.mdx
+++ /dev/null
@@ -1,3 +0,0 @@
-:::warning
-K0s distribution configuration options have been deprecated as of vCluster v0.25.0 and removed in v0.26.0.
-:::
\ No newline at end of file
diff --git a/vcluster/_partials/config/privateNodes.mdx b/vcluster/_partials/config/privateNodes.mdx
new file mode 100755
index 000000000..8f77467c0
--- /dev/null
+++ b/vcluster/_partials/config/privateNodes.mdx
@@ -0,0 +1,701 @@
+
+
+
+
+## `privateNodes` required object pro {#privateNodes}
+
+PrivateNodes holds configuration for vCluster private nodes mode.
+
+
+
+
+
+
+
+
+
+### `enabled` required boolean false pro {#privateNodes-enabled}
+
+Enabled defines if dedicated nodes should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+### `importNodeBinaries` required boolean true pro {#privateNodes-importNodeBinaries}
+
+ImportNodeBinaries defines to use the loft-sh/kubernetes:VERSION-full image to also copy the node binaries to the control plane. This allows upgrades and
+joining new nodes into the cluster without having to download the binaries from the internet.
+
+
+
+
+
+
+
+
+
+
+
+
+### `kubelet` required object pro {#privateNodes-kubelet}
+
+Kubelet holds kubelet configuration that is used for all nodes.
+
+
+
+
+
+
+
+
+
+#### `cgroupDriver` required string pro {#privateNodes-kubelet-cgroupDriver}
+
+CgroupDriver defines the cgroup driver to use for the kubelet.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### `autoUpgrade` required object pro {#privateNodes-autoUpgrade}
+
+AutoUpgrade holds configuration for auto upgrade.
+
+
+
+
+
+
+
+
+
+#### `enabled` required boolean true pro {#privateNodes-autoUpgrade-enabled}
+
+Enabled defines if auto upgrade should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `image` required string pro {#privateNodes-autoUpgrade-image}
+
+Image is the image for the auto upgrade pod started by vCluster. If empty defaults to the controlPlane.statefulSet.image.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `imagePullPolicy` required string pro {#privateNodes-autoUpgrade-imagePullPolicy}
+
+ImagePullPolicy is the policy how to pull the image.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `nodeSelector` required object pro {#privateNodes-autoUpgrade-nodeSelector}
+
+NodeSelector is the node selector for the auto upgrade. If empty will select all worker nodes.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `bundleRepository` required string pro {#privateNodes-autoUpgrade-bundleRepository}
+
+BundleRepository is the repository to use for downloading the Kubernetes bundle. Defaults to https://github.com/loft-sh/kubernetes/releases/download
+
+
+
+
+
+
+
+
+
+
+
+
+#### `binariesPath` required string pro {#privateNodes-autoUpgrade-binariesPath}
+
+BinariesPath is the base path for the kubeadm binaries. Defaults to /usr/local/bin
+
+
+
+
+
+
+
+
+
+
+
+
+#### `cniBinariesPath` required string pro {#privateNodes-autoUpgrade-cniBinariesPath}
+
+CNIBinariesPath is the base path for the CNI binaries. Defaults to /opt/cni/bin
+
+
+
+
+
+
+
+
+
+
+
+
+#### `concurrency` required integer 1 pro {#privateNodes-autoUpgrade-concurrency}
+
+Concurrency is the number of nodes that can be upgraded at the same time.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### `joinNode` required object pro {#privateNodes-joinNode}
+
+JoinNode holds configuration specifically used during joining the node (see "kubeadm join").
+
+
+
+
+
+
+
+
+
+#### `preJoinCommands` required string[] pro {#privateNodes-joinNode-preJoinCommands}
+
+PreJoinCommands are commands that will be executed before the join process starts.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `postJoinCommands` required string[] pro {#privateNodes-joinNode-postJoinCommands}
+
+PostJoinCommands are commands that will be executed after the join process starts.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `containerd` required object pro {#privateNodes-joinNode-containerd}
+
+Containerd holds configuration for the containerd join process.
+
+
+
+
+
+
+
+
+
+##### `enabled` required boolean true pro {#privateNodes-joinNode-containerd-enabled}
+
+Enabled defines if containerd should be installed and configured by vCluster.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `registry` required object pro {#privateNodes-joinNode-containerd-registry}
+
+Registry holds configuration for how containerd should be configured to use a registries.
+
+
+
+
+
+
+
+
+
+##### `configPath` required string pro {#privateNodes-joinNode-containerd-registry-configPath}
+
+ConfigPath is the path to the containerd registry config.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `mirrors` required {key: object} pro {#privateNodes-joinNode-containerd-registry-mirrors}
+
+Mirrors holds configuration for the containerd registry mirrors. E.g. myregistry.io:5000 or docker.io. See https://github.com/containerd/containerd/blob/main/docs/hosts.md for more details.
+
+
+
+
+
+
+
+
+
+##### `server` required string pro {#privateNodes-joinNode-containerd-registry-mirrors-server}
+
+Server is the fallback server to use for the containerd registry mirror. E.g. https://registry-1.docker.io. See https://github.com/containerd/containerd/blob/main/docs/hosts.md for more details.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `caCert` required string[] pro {#privateNodes-joinNode-containerd-registry-mirrors-caCert}
+
+CACert are paths to CA certificates to use for the containerd registry mirror.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `skipVerify` required boolean pro {#privateNodes-joinNode-containerd-registry-mirrors-skipVerify}
+
+SkipVerify is a boolean to skip the certificate verification for the containerd registry mirror and allows http connections.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `capabilities` required string[] pro {#privateNodes-joinNode-containerd-registry-mirrors-capabilities}
+
+Capabilities is a list of capabilities to enable for the containerd registry mirror. If empty, will use pull and resolve capabilities.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `hosts` required object[] pro {#privateNodes-joinNode-containerd-registry-mirrors-hosts}
+
+Hosts holds configuration for the containerd registry mirror hosts. See https://github.com/containerd/containerd/blob/main/docs/hosts.md for more details.
+
+
+
+
+
+
+
+
+
+##### `server` required string pro {#privateNodes-joinNode-containerd-registry-mirrors-hosts-server}
+
+Server is the server to use for the containerd registry mirror host. E.g. http://192.168.31.250:5000.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `caCert` required string[] pro {#privateNodes-joinNode-containerd-registry-mirrors-hosts-caCert}
+
+CACert are paths to CA certificates to use for the containerd registry mirror host.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `skipVerify` required boolean pro {#privateNodes-joinNode-containerd-registry-mirrors-hosts-skipVerify}
+
+SkipVerify is a boolean to skip the certificate verification for the containerd registry mirror and allows http connections.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `capabilities` required string[] pro {#privateNodes-joinNode-containerd-registry-mirrors-hosts-capabilities}
+
+Capabilities is a list of capabilities to enable for the containerd registry mirror. If empty, will use pull and resolve capabilities.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `importImages` required string[] pro {#privateNodes-joinNode-containerd-importImages}
+
+ImportImages is a list of images to import into the containerd registry from local files. If the path is a folder, all files that end with .tar or .tar.gz in the folder will be imported.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `pauseImage` required string pro {#privateNodes-joinNode-containerd-pauseImage}
+
+PauseImage is the image for the pause container.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#### `caCertPath` required string pro {#privateNodes-joinNode-caCertPath}
+
+CACertPath is the path to the SSL certificate authority used to
+secure communications between node and control-plane.
+Defaults to "/etc/kubernetes/pki/ca.crt".
+
+
+
+
+
+
+
+
+
+
+
+
+#### `skipPhases` required string[] pro {#privateNodes-joinNode-skipPhases}
+
+SkipPhases is a list of phases to skip during command execution.
+The list of phases can be obtained with the "kubeadm join --help" command.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `nodeRegistration` required object pro {#privateNodes-joinNode-nodeRegistration}
+
+NodeRegistration holds configuration for the node registration similar to the kubeadm node registration.
+
+
+
+
+
+
+
+
+
+##### `criSocket` required string pro {#privateNodes-joinNode-nodeRegistration-criSocket}
+
+CRI socket is the socket for the CRI.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `kubeletExtraArgs` required object[] pro {#privateNodes-joinNode-nodeRegistration-kubeletExtraArgs}
+
+KubeletExtraArgs passes through extra arguments to the kubelet. The arguments here are passed to the kubelet command line via the environment file
+kubeadm writes at runtime for the kubelet to source. This overrides the generic base-level configuration in the kubelet-config ConfigMap
+Flags have higher priority when parsing. These values are local and specific to the node kubeadm is executing on.
+An argument name in this list is the flag name as it appears on the command line except without leading dash(es).
+Extra arguments will override existing default arguments. Duplicate extra arguments are allowed.
+
+
+
+
+
+
+
+
+
+##### `name` required string pro {#privateNodes-joinNode-nodeRegistration-kubeletExtraArgs-name}
+
+Name is the name of the argument.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string pro {#privateNodes-joinNode-nodeRegistration-kubeletExtraArgs-value}
+
+Value is the value of the argument.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `taints` required object[] pro {#privateNodes-joinNode-nodeRegistration-taints}
+
+Taints are additional taints to set for the kubelet.
+
+
+
+
+
+
+
+
+
+##### `key` required string pro {#privateNodes-joinNode-nodeRegistration-taints-key}
+
+Required. The taint key to be applied to a node.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string pro {#privateNodes-joinNode-nodeRegistration-taints-value}
+
+The taint value corresponding to the taint key.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `effect` required string pro {#privateNodes-joinNode-nodeRegistration-taints-effect}
+
+Required. The effect of the taint on pods
+that do not tolerate the taint.
+Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `ignorePreflightErrors` required string[] pro {#privateNodes-joinNode-nodeRegistration-ignorePreflightErrors}
+
+IgnorePreflightErrors provides a slice of pre-flight errors to be ignored when the current node is registered, e.g. 'IsPrivilegedUser,Swap'.
+Value 'all' ignores errors from all checks.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `imagePullPolicy` required string pro {#privateNodes-joinNode-nodeRegistration-imagePullPolicy}
+
+ImagePullPolicy specifies the policy for image pulling during kubeadm "init" and "join" operations.
+The value of this field must be one of "Always", "IfNotPresent" or "Never".
+If this field is unset kubeadm will default it to "IfNotPresent", or pull the required images if not present on the host.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vcluster/_partials/config/privateNodes/autoUpgrade.mdx b/vcluster/_partials/config/privateNodes/autoUpgrade.mdx
new file mode 100755
index 000000000..c5ec7657b
--- /dev/null
+++ b/vcluster/_partials/config/privateNodes/autoUpgrade.mdx
@@ -0,0 +1,133 @@
+
+
+
+
+## `autoUpgrade` required object pro {#autoUpgrade}
+
+AutoUpgrade holds configuration for auto upgrade.
+
+
+
+
+
+
+
+
+
+### `enabled` required boolean true pro {#autoUpgrade-enabled}
+
+Enabled defines if auto upgrade should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+### `image` required string pro {#autoUpgrade-image}
+
+Image is the image for the auto upgrade pod started by vCluster. If empty defaults to the controlPlane.statefulSet.image.
+
+
+
+
+
+
+
+
+
+
+
+
+### `imagePullPolicy` required string pro {#autoUpgrade-imagePullPolicy}
+
+ImagePullPolicy is the policy how to pull the image.
+
+
+
+
+
+
+
+
+
+
+
+
+### `nodeSelector` required object pro {#autoUpgrade-nodeSelector}
+
+NodeSelector is the node selector for the auto upgrade. If empty will select all worker nodes.
+
+
+
+
+
+
+
+
+
+
+
+
+### `bundleRepository` required string pro {#autoUpgrade-bundleRepository}
+
+BundleRepository is the repository to use for downloading the Kubernetes bundle. Defaults to https://github.com/loft-sh/kubernetes/releases/download
+
+
+
+
+
+
+
+
+
+
+
+
+### `binariesPath` required string pro {#autoUpgrade-binariesPath}
+
+BinariesPath is the base path for the kubeadm binaries. Defaults to /usr/local/bin
+
+
+
+
+
+
+
+
+
+
+
+
+### `cniBinariesPath` required string pro {#autoUpgrade-cniBinariesPath}
+
+CNIBinariesPath is the base path for the CNI binaries. Defaults to /opt/cni/bin
+
+
+
+
+
+
+
+
+
+
+
+
+### `concurrency` required integer 1 pro {#autoUpgrade-concurrency}
+
+Concurrency is the number of nodes that can be upgraded at the same time.
+
+
+
+
+
+
+
+
+