diff --git a/configsrc/vcluster/0.26.0/default_values.yaml b/configsrc/vcluster/0.26.0/default_values.yaml
index 5a1eb9327..b64bc1104 100644
--- a/configsrc/vcluster/0.26.0/default_values.yaml
+++ b/configsrc/vcluster/0.26.0/default_values.yaml
@@ -178,7 +178,7 @@ controlPlane:
image:
registry: "registry.k8s.io"
repository: "etcd"
- tag: "3.5.21-0"
+ tag: "3.5.25-0"
imagePullPolicy: ""
extraArgs: []
env: []
@@ -647,4 +647,4 @@ telemetry:
enabled: true
logging:
- encoding: console
\ No newline at end of file
+ encoding: console
diff --git a/configsrc/vcluster/0.26.0/vcluster.schema.json b/configsrc/vcluster/0.26.0/vcluster.schema.json
index b4ef260cf..f425d6a44 100644
--- a/configsrc/vcluster/0.26.0/vcluster.schema.json
+++ b/configsrc/vcluster/0.26.0/vcluster.schema.json
@@ -125,10 +125,6 @@
"type": "object",
"description": "NodeSelector is the node selector for the auto upgrade. If empty will select all worker nodes."
},
- "bundleRepository": {
- "type": "string",
- "description": "BundleRepository is the repository to use for downloading the Kubernetes bundle. Defaults to https://github.com/loft-sh/kubernetes/releases/download"
- },
"binariesPath": {
"type": "string",
"description": "BinariesPath is the base path for the kubeadm binaries. Defaults to /usr/local/bin"
@@ -272,21 +268,17 @@
"additionalProperties": false,
"type": "object"
},
- "ClusterIssuersSyncConfig": {
+ "CloudControllerManager": {
"properties": {
"enabled": {
"type": "boolean",
- "description": "Enabled defines if this option should be enabled."
- },
- "selector": {
- "$ref": "#/$defs/LabelSelector",
- "description": "Selector defines what cluster issuers should be imported."
+ "description": "Enabled defines if the embedded cloud controller manager should be enabled. This defaults to true, but can be disabled if you want to use\nan external cloud controller manager such as AWS or GCP. The cloud controller manager is responsible for setting the node's ip addresses as well\nas the provider id for the node and other node metadata."
}
},
"additionalProperties": false,
"type": "object"
},
- "ClusterStoresSyncConfig": {
+ "ClusterIssuersSyncConfig": {
"properties": {
"enabled": {
"type": "boolean",
@@ -294,7 +286,7 @@
},
"selector": {
"$ref": "#/$defs/LabelSelector",
- "description": "Selector defines what cluster stores should be synced"
+ "description": "Selector defines what cluster issuers should be imported."
}
},
"additionalProperties": false,
@@ -338,13 +330,6 @@
"$ref": "#/$defs/ContainerdRegistry",
"description": "Registry holds configuration for how containerd should be configured to use a registries."
},
- "importImages": {
- "items": {
- "type": "string"
- },
- "type": "array",
- "description": "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": {
"type": "string",
"description": "PauseImage is the image for the pause container."
@@ -377,6 +362,10 @@
"type": "array",
"description": "Capabilities is a list of capabilities to enable for the containerd registry mirror. If empty, will use pull and resolve capabilities."
},
+ "overridePath": {
+ "type": "boolean",
+ "description": "OverridePath is a boolean to override the path for the containerd registry mirror."
+ },
"hosts": {
"items": {
"$ref": "#/$defs/ContainerdMirrorHost"
@@ -411,6 +400,10 @@
},
"type": "array",
"description": "Capabilities is a list of capabilities to enable for the containerd registry mirror. If empty, will use pull and resolve capabilities."
+ },
+ "overridePath": {
+ "type": "boolean",
+ "description": "OverridePath is a boolean to override the path for the containerd registry mirror."
}
},
"additionalProperties": false,
@@ -428,6 +421,35 @@
},
"type": "object",
"description": "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."
+ },
+ "auth": {
+ "additionalProperties": {
+ "$ref": "#/$defs/ContainerdRegistryAuth"
+ },
+ "type": "object",
+ "description": "Auth holds configuration for the containerd registry auth. See https://github.com/containerd/containerd/blob/main/docs/cri/registry.md#configure-registry-credentials for more details."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
+ "ContainerdRegistryAuth": {
+ "properties": {
+ "username": {
+ "type": "string",
+ "description": "Username is the username for the containerd registry."
+ },
+ "password": {
+ "type": "string",
+ "description": "Password is the password for the containerd registry."
+ },
+ "identityToken": {
+ "type": "string",
+ "description": "IdentityToken is the token for the containerd registry."
+ },
+ "auth": {
+ "type": "string",
+ "description": "Auth is the auth config for the containerd registry."
}
},
"additionalProperties": false,
@@ -517,9 +539,17 @@
"$ref": "#/$defs/Registry",
"description": "Registry allows enabling an embedded docker image registry in vCluster. This is useful for air-gapped environments or when you don't have a public registry available to distribute images."
},
+ "cloudControllerManager": {
+ "$ref": "#/$defs/CloudControllerManager",
+ "description": "CloudControllerManager holds configuration for the embedded cloud controller manager. This is only available when private nodes are enabled.\nThe cloud controller manager is responsible for setting the node's ip addresses as well as the provider id for the node and other node metadata."
+ },
"globalMetadata": {
"$ref": "#/$defs/ControlPlaneGlobalMetadata",
"description": "GlobalMetadata is metadata that will be added to all resources deployed by Helm."
+ },
+ "kubeVip": {
+ "$ref": "#/$defs/KubeVip",
+ "description": "KubeVip holds configuration for embedded kube-vip that announces the virtual cluster endpoint IP on layer 2."
}
},
"additionalProperties": false,
@@ -868,8 +898,8 @@
"description": "Additional labels or annotations for the statefulSet pods."
},
"image": {
- "$ref": "#/$defs/StatefulSetImage",
- "description": "Image is the image for the controlPlane statefulSet container"
+ "$ref": "#/$defs/Image",
+ "description": "Image is the image for the controlPlane statefulSet container\nIt defaults to the vCluster pro repository that includes the optional pro modules that are turned off by default.\nIf you still want to use the pure OSS build, set the repository to 'loft-sh/vcluster-oss'."
},
"imagePullPolicy": {
"type": "string",
@@ -907,6 +937,16 @@
"dnsConfig": {
"$ref": "#/$defs/PodDNSConfig",
"description": "Specifies the DNS parameters of a pod."
+ },
+ "initContainers": {
+ "items": true,
+ "type": "array",
+ "description": "InitContainers are additional init containers for the statefulSet."
+ },
+ "sidecarContainers": {
+ "items": true,
+ "type": "array",
+ "description": "SidecarContainers are additional sidecar containers for the statefulSet."
}
},
"additionalProperties": false,
@@ -1090,7 +1130,11 @@
},
"dataSource": {
"type": "string",
- "description": "DataSource is the kine dataSource to use for the database. This depends on the database format.\nThis is optional for the embedded database. Examples:\n* mysql: mysql://username:password@tcp(hostname:3306)/k3s\n* postgres: postgres://username:password@hostname:5432/k3s"
+ "description": "DataSource is the kine dataSource to use for the database. This depends on the database format.\nThis is optional for the external database. Examples:\n* mysql: mysql://username:password@tcp(hostname:3306)/k3s\n* postgres: postgres://username:password@hostname:5432/k3s"
+ },
+ "identityProvider": {
+ "type": "string",
+ "description": "IdentityProvider is the kine identity provider to use when generating temporary authentication tokens for enhanced security.\nThis is optional for the external database. Examples:\n* aws: RDS IAM Authentication"
},
"keyFile": {
"type": "string",
@@ -1171,6 +1215,10 @@
"metricsServer": {
"$ref": "#/$defs/DeployMetricsServer",
"description": "MetricsServer holds dedicated metrics server configuration."
+ },
+ "volumeSnapshotController": {
+ "$ref": "#/$defs/VolumeSnapshotController",
+ "description": "VolumeSnapshotController holds dedicated CSI snapshot-controller configuration."
}
},
"additionalProperties": false,
@@ -1295,7 +1343,7 @@
},
"scheduler": {
"$ref": "#/$defs/DistroContainerEnabled",
- "description": "Scheduler holds configuration specific to starting the scheduler. Enable this via controlPlane.advanced.virtualScheduler.enabled"
+ "description": "Scheduler holds configuration specific to starting the scheduler."
},
"image": {
"$ref": "#/$defs/Image",
@@ -1324,6 +1372,119 @@
"additionalProperties": false,
"type": "object"
},
+ "DynamicNodePool": {
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name is the name of this NodePool"
+ },
+ "nodeTypeSelector": {
+ "items": {
+ "$ref": "#/$defs/Requirement"
+ },
+ "type": "array",
+ "description": "NodeTypeSelector filters the types of nodes that can be provisioned by this pool.\nAll requirements must be met for a node type to be eligible."
+ },
+ "taints": {
+ "items": {
+ "$ref": "#/$defs/KubeletJoinTaint"
+ },
+ "type": "array",
+ "description": "Taints are the taints to apply to the nodes in this pool."
+ },
+ "nodeLabels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object",
+ "description": "NodeLabels are the labels to apply to the nodes in this pool."
+ },
+ "limits": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object",
+ "description": "Limits specify the maximum resources that can be provisioned by this node pool,\nmapping to the 'limits' field in Karpenter's NodePool API."
+ },
+ "disruption": {
+ "$ref": "#/$defs/DynamicNodePoolDisruption",
+ "description": "Disruption contains the parameters that relate to Karpenter's disruption logic"
+ },
+ "terminationGracePeriod": {
+ "type": "string",
+ "description": "TerminationGracePeriod is the maximum duration the controller will wait before forcefully deleting the pods on a node, measured from when deletion is first initiated.\n\nWarning: this feature takes precedence over a Pod's terminationGracePeriodSeconds value, and bypasses any blocked PDBs or the karpenter.sh/do-not-disrupt annotation.\n\nThis field is intended to be used by cluster administrators to enforce that nodes can be cycled within a given time period.\nWhen set, drifted nodes will begin draining even if there are pods blocking eviction. Draining will respect PDBs and the do-not-disrupt annotation until the TGP is reached.\n\nKarpenter will preemptively delete pods so their terminationGracePeriodSeconds align with the node's terminationGracePeriod.\nIf a pod would be terminated without being granted its full terminationGracePeriodSeconds prior to the node timeout,\nthat pod will be deleted at T = node timeout - pod terminationGracePeriodSeconds.\n\nThe feature can also be used to allow maximum time limits for long-running jobs which can delay node termination with preStop hooks.\nDefaults to 30s. Set to Never to wait indefinitely for pods to be drained."
+ },
+ "expireAfter": {
+ "type": "string",
+ "description": "The amount of time a Node can live on the cluster before being removed"
+ },
+ "weight": {
+ "type": "integer",
+ "description": "Weight is the weight of this node pool."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "name"
+ ]
+ },
+ "DynamicNodePoolDisruption": {
+ "properties": {
+ "consolidateAfter": {
+ "type": "string",
+ "description": "ConsolidateAfter is the duration the controller will wait\nbefore attempting to terminate nodes that are underutilized.\nRefer to ConsolidationPolicy for how underutilization is considered."
+ },
+ "consolidationPolicy": {
+ "type": "string",
+ "description": "ConsolidationPolicy describes which nodes Karpenter can disrupt through its consolidation\nalgorithm. This policy defaults to \"WhenEmptyOrUnderutilized\" if not specified"
+ },
+ "budgets": {
+ "items": {
+ "$ref": "#/$defs/DynamicNodePoolDisruptionBudget"
+ },
+ "type": "array",
+ "description": "Budgets is a list of Budgets.\nIf there are multiple active budgets, Karpenter uses\nthe most restrictive value. If left undefined,\nthis will default to one budget with a value to 10%."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
+ "DynamicNodePoolDisruptionBudget": {
+ "properties": {
+ "nodes": {
+ "type": "string",
+ "description": "Nodes dictates the maximum number of NodeClaims owned by this NodePool\nthat can be terminating at once. This is calculated by counting nodes that\nhave a deletion timestamp set, or are actively being deleted by Karpenter.\nThis field is required when specifying a budget."
+ },
+ "schedule": {
+ "type": "string",
+ "description": "Schedule specifies when a budget begins being active, following\nthe upstream cronjob syntax. If omitted, the budget is always active.\nTimezones are not supported."
+ },
+ "duration": {
+ "type": "string",
+ "description": "Duration determines how long a Budget is active since each Schedule hit.\nOnly minutes and hours are accepted, as cron does not work in seconds.\nIf omitted, the budget is always active.\nThis is required if Schedule is set."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
+ "EnableAutoSwitch": {
+ "properties": {
+ "enabled": {
+ "oneOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "description": "Enabled defines if this option should be enabled."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
"EnableAutoSwitchWithPatches": {
"properties": {
"enabled": {
@@ -1386,6 +1547,19 @@
"additionalProperties": false,
"type": "object"
},
+ "EnableSwitchSelector": {
+ "properties": {
+ "selector": {
+ "$ref": "#/$defs/StandardLabelSelector"
+ },
+ "enabled": {
+ "type": "boolean",
+ "description": "Enabled defines if this option should be enabled."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
"EnableSwitchWithPatches": {
"properties": {
"enabled": {
@@ -1661,17 +1835,9 @@
"$ref": "#/$defs/ExperimentalSyncSettings",
"description": "SyncSettings are advanced settings for the syncer controller."
},
- "genericSync": {
- "$ref": "#/$defs/ExperimentalGenericSync",
- "description": "GenericSync holds options to generically sync resources from virtual cluster to host."
- },
- "isolatedControlPlane": {
- "$ref": "#/$defs/ExperimentalIsolatedControlPlane",
- "description": "IsolatedControlPlane is a feature to run the vCluster control plane in a different Kubernetes cluster than the workloads themselves."
- },
"virtualClusterKubeConfig": {
"$ref": "#/$defs/VirtualClusterKubeConfig",
- "description": "VirtualClusterKubeConfig allows you to override distro specifics and specify where vCluster will find the required certificates and vCluster config."
+ "description": "VirtualClusterKubeConfig allows you to override distro specifics and specify where vCluster will find the required certificates and vCluster config.\nDeprecated: Removed in 0.29.0."
},
"denyProxyRequests": {
"items": {
@@ -1797,82 +1963,8 @@
"additionalProperties": false,
"type": "object"
},
- "ExperimentalGenericSync": {
- "properties": {
- "version": {
- "type": "string",
- "description": "Version is the config version"
- },
- "export": {
- "items": {
- "$ref": "#/$defs/Export"
- },
- "type": "array",
- "description": "Exports syncs a resource from the virtual cluster to the host"
- },
- "import": {
- "items": {
- "$ref": "#/$defs/Import"
- },
- "type": "array",
- "description": "Imports syncs a resource from the host cluster to virtual cluster"
- },
- "hooks": {
- "$ref": "#/$defs/Hooks",
- "description": "Hooks are hooks that can be used to inject custom patches before syncing"
- },
- "clusterRole": {
- "$ref": "#/$defs/ExperimentalGenericSyncExtraRules"
- },
- "role": {
- "$ref": "#/$defs/ExperimentalGenericSyncExtraRules"
- }
- },
- "additionalProperties": false,
- "type": "object"
- },
- "ExperimentalGenericSyncExtraRules": {
- "properties": {
- "extraRules": {
- "items": true,
- "type": "array"
- }
- },
- "additionalProperties": false,
- "type": "object"
- },
- "ExperimentalIsolatedControlPlane": {
- "properties": {
- "enabled": {
- "type": "boolean",
- "description": "Enabled specifies if the isolated control plane feature should be enabled."
- },
- "headless": {
- "type": "boolean",
- "description": "Headless states that Helm should deploy the vCluster in headless mode for the isolated control plane."
- },
- "kubeConfig": {
- "type": "string",
- "description": "KubeConfig is the path where to find the remote workload cluster kubeconfig."
- },
- "namespace": {
- "type": "string",
- "description": "Namespace is the namespace where to sync the workloads into."
- },
- "service": {
- "type": "string",
- "description": "Service is the vCluster service in the remote cluster."
- }
- },
- "additionalProperties": false,
- "type": "object"
- },
"ExperimentalSyncSettings": {
"properties": {
- "targetNamespace": {
- "type": "string",
- "description": "TargetNamespace is the namespace where the workloads should get synced to."
- },
"setOwner": {
"type": "boolean",
"description": "SetOwner specifies if vCluster should set an owner reference on the synced objects to the vCluster service. This allows for easy garbage collection."
@@ -1889,45 +1981,6 @@
"additionalProperties": false,
"type": "object"
},
- "Export": {
- "properties": {
- "apiVersion": {
- "type": "string",
- "description": "APIVersion of the object to sync"
- },
- "kind": {
- "type": "string",
- "description": "Kind of the object to sync"
- },
- "optional": {
- "type": "boolean"
- },
- "replaceOnConflict": {
- "type": "boolean",
- "description": "ReplaceWhenInvalid determines if the controller should try to recreate the object\nif there is a problem applying"
- },
- "patches": {
- "items": {
- "$ref": "#/$defs/Patch"
- },
- "type": "array",
- "description": "Patches are the patches to apply on the virtual cluster objects\nwhen syncing them from the host cluster"
- },
- "reversePatches": {
- "items": {
- "$ref": "#/$defs/Patch"
- },
- "type": "array",
- "description": "ReversePatches are the patches to apply to host cluster objects\nafter it has been synced to the virtual cluster"
- },
- "selector": {
- "$ref": "#/$defs/Selector",
- "description": "Selector is a label selector to select the synced objects in the virtual cluster.\nIf empty, all objects will be synced."
- }
- },
- "additionalProperties": false,
- "type": "object"
- },
"ExportKubeConfig": {
"properties": {
"context": {
@@ -2045,7 +2098,11 @@
},
"dataSource": {
"type": "string",
- "description": "DataSource is the kine dataSource to use for the database. This depends on the database format.\nThis is optional for the embedded database. Examples:\n* mysql: mysql://username:password@tcp(hostname:3306)/k3s\n* postgres: postgres://username:password@hostname:5432/k3s"
+ "description": "DataSource is the kine dataSource to use for the database. This depends on the database format.\nThis is optional for the external database. Examples:\n* mysql: mysql://username:password@tcp(hostname:3306)/k3s\n* postgres: postgres://username:password@hostname:5432/k3s"
+ },
+ "identityProvider": {
+ "type": "string",
+ "description": "IdentityProvider is the kine identity provider to use when generating temporary authentication tokens for enhanced security.\nThis is optional for the external database. Examples:\n* aws: RDS IAM Authentication"
},
"keyFile": {
"type": "string",
@@ -2150,6 +2207,10 @@
"type": "boolean",
"description": "Enabled defines whether the external secret integration is enabled or not"
},
+ "version": {
+ "type": "string",
+ "description": "Version defines the version of the external secrets operator to use. If empty, the storage version will be used."
+ },
"webhook": {
"$ref": "#/$defs/EnableSwitch",
"description": "Webhook defines whether the host webhooks are reused or not"
@@ -2165,78 +2226,50 @@
},
"ExternalSecretsSync": {
"properties": {
- "externalSecrets": {
- "$ref": "#/$defs/EnableSwitch",
- "description": "ExternalSecrets defines if external secrets should get synced from the virtual cluster to the host cluster."
- },
- "stores": {
- "$ref": "#/$defs/EnableSwitch",
- "description": "Stores defines if secret stores should get synced from the virtual cluster to the host cluster and then bi-directionally."
+ "toHost": {
+ "$ref": "#/$defs/ExternalSecretsSyncToHostConfig",
+ "description": "ToHost defines what resources are synced from the virtual cluster to the host"
},
- "clusterStores": {
- "$ref": "#/$defs/ClusterStoresSyncConfig",
- "description": "ClusterStores defines if cluster secrets stores should get synced from the host cluster to the virtual cluster."
+ "fromHost": {
+ "$ref": "#/$defs/ExternalSecretsSyncFromHostConfig",
+ "description": "FromHost defines what resources are synced from the host cluster to the virtual cluster"
}
},
"additionalProperties": false,
"type": "object"
},
- "FromHostMappings": {
+ "ExternalSecretsSyncFromHostConfig": {
"properties": {
- "byName": {
- "additionalProperties": {
- "type": "string"
- },
- "type": "object",
- "description": "ByName is a map of host-object-namespace/host-object-name: virtual-object-namespace/virtual-object-name.\nThere are several wildcards supported:\n1. To match all objects in host namespace and sync them to different namespace in vCluster:\nbyName:\n \"foo/*\": \"foo-in-virtual/*\"\n2. To match specific object in the host namespace and sync it to the same namespace with the same name:\nbyName:\n \"foo/my-object\": \"foo/my-object\"\n3. To match specific object in the host namespace and sync it to the same namespace with different name:\nbyName:\n \"foo/my-object\": \"foo/my-virtual-object\"\n4. To match all objects in the vCluster host namespace and sync them to a different namespace in vCluster:\nbyName:\n \"\": \"my-virtual-namespace/*\"\n5. To match specific objects in the vCluster host namespace and sync them to a different namespace in vCluster:\nbyName:\n \"/my-object\": \"my-virtual-namespace/my-object\""
+ "clusterStores": {
+ "$ref": "#/$defs/EnableSwitchSelector",
+ "description": "ClusterStores defines if cluster secrets stores should get synced from the host cluster to the virtual cluster."
}
},
"additionalProperties": false,
"type": "object"
},
- "Hook": {
+ "ExternalSecretsSyncToHostConfig": {
"properties": {
- "apiVersion": {
- "type": "string",
- "description": "APIVersion of the object to sync"
- },
- "kind": {
- "type": "string",
- "description": "Kind of the object to sync"
- },
- "verbs": {
- "items": {
- "type": "string"
- },
- "type": "array",
- "description": "Verbs are the verbs that the hook should mutate"
+ "externalSecrets": {
+ "$ref": "#/$defs/SelectorConfig",
+ "description": "ExternalSecrets allows to configure if only a subset of ExternalSecrets matching a label selector should get synced from the virtual cluster to the host cluster."
},
- "patches": {
- "items": {
- "$ref": "#/$defs/Patch"
- },
- "type": "array",
- "description": "Patches are the patches to apply on the object to be synced"
+ "stores": {
+ "$ref": "#/$defs/EnableSwitchSelector",
+ "description": "Stores defines if secret stores should get synced from the virtual cluster to the host cluster and then bi-directionally."
}
},
"additionalProperties": false,
"type": "object"
},
- "Hooks": {
+ "FromHostMappings": {
"properties": {
- "hostToVirtual": {
- "items": {
- "$ref": "#/$defs/Hook"
- },
- "type": "array",
- "description": "HostToVirtual is a hook that is executed before syncing from the host to the virtual cluster"
- },
- "virtualToHost": {
- "items": {
- "$ref": "#/$defs/Hook"
+ "byName": {
+ "additionalProperties": {
+ "type": "string"
},
- "type": "array",
- "description": "VirtualToHost is a hook that is executed before syncing from the virtual to the host cluster"
+ "type": "object",
+ "description": "ByName is a map of host-object-namespace/host-object-name: virtual-object-namespace/virtual-object-name.\nThere are several wildcards supported:\n1. To match all objects in host namespace and sync them to different namespace in vCluster:\nbyName:\n \"foo/*\": \"foo-in-virtual/*\"\n2. To match specific object in the host namespace and sync it to the same namespace with the same name:\nbyName:\n \"foo/my-object\": \"foo/my-object\"\n3. To match specific object in the host namespace and sync it to the same namespace with different name:\nbyName:\n \"foo/my-object\": \"foo/my-virtual-object\"\n4. To match all objects in the vCluster host namespace and sync them to a different namespace in vCluster:\nbyName:\n \"\": \"my-virtual-namespace/*\"\n5. To match specific objects in the vCluster host namespace and sync them to a different namespace in vCluster:\nbyName:\n \"/my-object\": \"my-virtual-namespace/my-object\""
}
},
"additionalProperties": false,
@@ -2302,7 +2335,7 @@
},
"tag": {
"type": "string",
- "description": "Tag is the tag of the container image, e.g. latest. If set to the default, it will use the host Kubernetes version."
+ "description": "Tag is the tag of the container image, and is the default version."
}
},
"additionalProperties": false,
@@ -2318,41 +2351,6 @@
"additionalProperties": false,
"type": "object"
},
- "Import": {
- "properties": {
- "apiVersion": {
- "type": "string",
- "description": "APIVersion of the object to sync"
- },
- "kind": {
- "type": "string",
- "description": "Kind of the object to sync"
- },
- "optional": {
- "type": "boolean"
- },
- "replaceOnConflict": {
- "type": "boolean",
- "description": "ReplaceWhenInvalid determines if the controller should try to recreate the object\nif there is a problem applying"
- },
- "patches": {
- "items": {
- "$ref": "#/$defs/Patch"
- },
- "type": "array",
- "description": "Patches are the patches to apply on the virtual cluster objects\nwhen syncing them from the host cluster"
- },
- "reversePatches": {
- "items": {
- "$ref": "#/$defs/Patch"
- },
- "type": "array",
- "description": "ReversePatches are the patches to apply to host cluster objects\nafter it has been synced to the virtual cluster"
- }
- },
- "additionalProperties": false,
- "type": "object"
- },
"IngressNginx": {
"properties": {
"enabled": {
@@ -2388,6 +2386,10 @@
"istio": {
"$ref": "#/$defs/Istio",
"description": "Istio syncs DestinationRules, Gateways and VirtualServices from virtual cluster to the host."
+ },
+ "netris": {
+ "type": "object",
+ "description": "Netris integration helps configuring netris networking for vCluster."
}
},
"additionalProperties": false,
@@ -2433,19 +2435,26 @@
},
"JoinConfiguration": {
"properties": {
+ "preInstallCommands": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "description": "PreInstallCommands are commands that will be executed before containerd, kubelet etc. is installed."
+ },
"preJoinCommands": {
"items": {
"type": "string"
},
"type": "array",
- "description": "PreJoinCommands are commands that will be executed before the join process starts."
+ "description": "PreJoinCommands are commands that will be executed before kubeadm join is executed."
},
"postJoinCommands": {
"items": {
"type": "string"
},
"type": "array",
- "description": "PostJoinCommands are commands that will be executed after the join process starts."
+ "description": "PostJoinCommands are commands that will be executed after kubeadm join is executed."
},
"containerd": {
"$ref": "#/$defs/ContainerdJoin",
@@ -2592,6 +2601,28 @@
},
"type": "array",
"description": "ExtraArgs are additional arguments to pass to the kube-proxy."
+ },
+ "config": {
+ "type": "object",
+ "description": "Config is the config for the kube-proxy that will be merged into the default kube-proxy config. More information can be found here:\nhttps://kubernetes.io/docs/reference/config-api/kube-proxy-config.v1alpha1/#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration"
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
+ "KubeVip": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enabled defines if embedded kube-vip should be enabled."
+ },
+ "interface": {
+ "type": "string",
+ "description": "Interface is the network interface on which the VIP is announced."
+ },
+ "gateway": {
+ "type": "string",
+ "description": "Gateway is the gateway address in CIDR notation (e.g., 10.100.0.1/24).\nThis is used to configure policy-based routing for the VIP and must include the subnet prefix."
}
},
"additionalProperties": false,
@@ -2653,9 +2684,9 @@
},
"Kubelet": {
"properties": {
- "cgroupDriver": {
- "type": "string",
- "description": "CgroupDriver defines the cgroup driver to use for the kubelet."
+ "config": {
+ "type": "object",
+ "description": "Config is the config for the kubelet that will be merged into the default kubelet config. More information can be found here:\nhttps://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/#kubelet-config-k8s-io-v1beta1-KubeletConfiguration"
}
},
"additionalProperties": false,
@@ -3198,90 +3229,6 @@
"additionalProperties": false,
"type": "object"
},
- "Patch": {
- "properties": {
- "op": {
- "type": "string",
- "description": "Operation is the type of the patch"
- },
- "fromPath": {
- "type": "string",
- "description": "FromPath is the path from the other object"
- },
- "path": {
- "type": "string",
- "description": "Path is the path of the patch"
- },
- "namePath": {
- "type": "string",
- "description": "NamePath is the path to the name of a child resource within Path"
- },
- "namespacePath": {
- "type": "string",
- "description": "NamespacePath is path to the namespace of a child resource within Path"
- },
- "value": {
- "description": "Value is the new value to be set to the path"
- },
- "regex": {
- "type": "string",
- "description": "Regex - is regular expresion used to identify the Name,\nand optionally Namespace, parts of the field value that\nwill be replaced with the rewritten Name and/or Namespace"
- },
- "conditions": {
- "items": {
- "$ref": "#/$defs/PatchCondition"
- },
- "type": "array",
- "description": "Conditions are conditions that must be true for\nthe patch to get executed"
- },
- "ignore": {
- "type": "boolean",
- "description": "Ignore determines if the path should be ignored if handled as a reverse patch"
- },
- "sync": {
- "$ref": "#/$defs/PatchSync",
- "description": "Sync defines if a specialized syncer should be initialized using values\nfrom the rewriteName operation as Secret/Configmap names to be synced"
- }
- },
- "additionalProperties": false,
- "type": "object"
- },
- "PatchCondition": {
- "properties": {
- "path": {
- "type": "string",
- "description": "Path is the path within the object to select"
- },
- "subPath": {
- "type": "string",
- "description": "SubPath is the path below the selected object to select"
- },
- "equal": {
- "description": "Equal is the value the path should be equal to"
- },
- "notEqual": {
- "description": "NotEqual is the value the path should not be equal to"
- },
- "empty": {
- "type": "boolean",
- "description": "Empty means that the path value should be empty or unset"
- }
- },
- "additionalProperties": false,
- "type": "object"
- },
- "PatchSync": {
- "properties": {
- "secret": {
- "type": "boolean"
- },
- "configmap": {
- "type": "boolean"
- }
- },
- "additionalProperties": false,
- "type": "object"
- },
"PlatformAPIKey": {
"properties": {
"secretName": {
@@ -3575,10 +3522,6 @@
"type": "boolean",
"description": "Enabled defines if dedicated nodes should be enabled."
},
- "importNodeBinaries": {
- "type": "boolean",
- "description": "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\njoining new nodes into the cluster without having to download the binaries from the internet."
- },
"kubelet": {
"$ref": "#/$defs/Kubelet",
"description": "Kubelet holds kubelet configuration that is used for all nodes."
@@ -3590,12 +3533,82 @@
"joinNode": {
"$ref": "#/$defs/JoinConfiguration",
"description": "JoinNode holds configuration specifically used during joining the node (see \"kubeadm join\")."
+ },
+ "autoNodes": {
+ "items": {
+ "$ref": "#/$defs/PrivateNodesAutoNodes"
+ },
+ "type": "array",
+ "description": "AutoNodes stores auto nodes configuration."
+ },
+ "vpn": {
+ "$ref": "#/$defs/PrivateNodesVPN",
+ "description": "VPN holds configuration for the private nodes vpn. This can be used to connect the private nodes to the control plane or\nconnect the private nodes to each other if they are not running in the same network. Platform connection is required for the vpn to work."
}
},
"additionalProperties": false,
"type": "object",
"description": "PrivateNodes enables private nodes for vCluster."
},
+ "PrivateNodesAutoNodes": {
+ "properties": {
+ "provider": {
+ "type": "string",
+ "description": "Provider is the node provider of the nodes in this pool."
+ },
+ "properties": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object",
+ "description": "Properties are the node provider properties. This is a simple key value map and can contain things\nlike region, subscription, etc. that is then used by the node provider to create the nodes and node environment."
+ },
+ "static": {
+ "items": {
+ "$ref": "#/$defs/StaticNodePool"
+ },
+ "type": "array",
+ "description": "Static defines static node pools. Static node pools have a fixed size and are not scaled automatically."
+ },
+ "dynamic": {
+ "items": {
+ "$ref": "#/$defs/DynamicNodePool"
+ },
+ "type": "array",
+ "description": "Dynamic defines dynamic node pools. Dynamic node pools are scaled automatically based on the requirements within the cluster.\nKarpenter is used under the hood to handle the scheduling of the nodes."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "provider"
+ ],
+ "description": "PrivateNodesAutoNodes defines auto nodes"
+ },
+ "PrivateNodesVPN": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enabled defines if the private nodes vpn should be enabled."
+ },
+ "nodeToNode": {
+ "$ref": "#/$defs/PrivateNodesVPNNodeToNode",
+ "description": "NodeToNode holds configuration for the node to node vpn. This can be used to connect the private nodes to each other if they are not running in the same network."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
+ "PrivateNodesVPNNodeToNode": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enabled defines if the node to node vpn should be enabled."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
"RBAC": {
"properties": {
"role": {
@@ -3605,6 +3618,10 @@
"clusterRole": {
"$ref": "#/$defs/RBACClusterRole",
"description": "ClusterRole holds virtual cluster cluster role configuration"
+ },
+ "enableVolumeSnapshotRules": {
+ "$ref": "#/$defs/EnableAutoSwitch",
+ "description": "EnableVolumeSnapshotRules enables all required volume snapshot rules in the Role and\nClusterRole."
}
},
"additionalProperties": false,
@@ -3766,6 +3783,35 @@
"additionalProperties": false,
"type": "object"
},
+ "Requirement": {
+ "properties": {
+ "property": {
+ "type": "string",
+ "description": "Property is the property on the node type to select."
+ },
+ "operator": {
+ "type": "string",
+ "description": "Operator is the comparison operator, such as \"In\", \"NotIn\", \"Exists\". If empty, defaults to \"In\"."
+ },
+ "values": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "description": "Values is the list of values to use for comparison. This is mutually exclusive with value."
+ },
+ "value": {
+ "type": "string",
+ "description": "Value is the value to use for comparison. This is mutually exclusive with values."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "property"
+ ],
+ "description": "KarpenterRequirement defines a scheduling requirement for a dynamic node pool."
+ },
"ResolveDNS": {
"properties": {
"hostname": {
@@ -3948,14 +3994,10 @@
"additionalProperties": false,
"type": "object"
},
- "Selector": {
+ "SelectorConfig": {
"properties": {
- "labelSelector": {
- "additionalProperties": {
- "type": "string"
- },
- "type": "object",
- "description": "LabelSelector are the labels to select the object from"
+ "selector": {
+ "$ref": "#/$defs/StandardLabelSelector"
}
},
"additionalProperties": false,
@@ -4079,13 +4121,9 @@
"type": "string",
"description": "DataDir defines the data directory for the standalone mode."
},
- "bundleRepository": {
- "type": "string",
- "description": "BundleRepository is the repository to use for downloading the Kubernetes bundle. Defaults to https://github.com/loft-sh/kubernetes/releases/download"
- },
- "bundle": {
- "type": "string",
- "description": "Bundle is a path to a Kubernetes bundle to use for the standalone mode. If empty, will use the bundleRepository to download the bundle."
+ "autoNodes": {
+ "$ref": "#/$defs/StandaloneAutoNodes",
+ "description": "AutoNodes automatically deploys nodes for standalone mode."
},
"joinNode": {
"$ref": "#/$defs/StandaloneJoinNode",
@@ -4095,29 +4133,53 @@
"additionalProperties": false,
"type": "object"
},
+ "StandaloneAutoNodes": {
+ "properties": {
+ "provider": {
+ "type": "string",
+ "description": "Provider is the node provider of the nodes in this pool."
+ },
+ "quantity": {
+ "type": "integer",
+ "description": "Quantity is the number of nodes to deploy for standalone mode."
+ },
+ "nodeTypeSelector": {
+ "items": {
+ "$ref": "#/$defs/Requirement"
+ },
+ "type": "array",
+ "description": "NodeTypeSelector filters the types of nodes that can be provisioned by this pool.\nAll requirements must be met for a node type to be eligible."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object"
+ },
"StandaloneJoinNode": {
"properties": {
"enabled": {
"type": "boolean",
"description": "Enabled defines if the standalone node should be joined into the cluster. If false, only the control plane binaries will be executed and no node will show up in the actual cluster."
},
- "name": {
- "type": "string",
- "description": "Name defines the name of the standalone node. If empty the node will get the hostname as name."
+ "preInstallCommands": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "description": "PreInstallCommands are commands that will be executed before containerd, kubelet etc. is installed."
},
"preJoinCommands": {
"items": {
"type": "string"
},
"type": "array",
- "description": "PreJoinCommands are commands that will be executed before the join process starts."
+ "description": "PreJoinCommands are commands that will be executed before kubeadm join is executed."
},
"postJoinCommands": {
"items": {
"type": "string"
},
"type": "array",
- "description": "PostJoinCommands are commands that will be executed after the join process starts."
+ "description": "PostJoinCommands are commands that will be executed after kubeadm join is executed."
},
"containerd": {
"$ref": "#/$defs/ContainerdJoin",
@@ -4183,23 +4245,48 @@
"type": "object",
"description": "StartupProbe defines the configuration for the startup probe."
},
- "StatefulSetImage": {
+ "StaticNodePool": {
"properties": {
- "registry": {
+ "name": {
"type": "string",
- "description": "Configure the registry of the container image, e.g. my-registry.com or ghcr.io\nIt defaults to ghcr.io and can be overriding either by using this field or controlPlane.advanced.defaultImageRegistry"
+ "description": "Name is the name of this static nodePool"
},
- "repository": {
- "type": "string",
- "description": "Configure the repository of the container image, e.g. my-repo/my-image.\nIt defaults to the vCluster pro repository that includes the optional pro modules that are turned off by default.\nIf you still want to use the pure OSS build, use 'loft-sh/vcluster-oss' instead."
+ "nodeTypeSelector": {
+ "items": {
+ "$ref": "#/$defs/Requirement"
+ },
+ "type": "array",
+ "description": "NodeTypeSelector filters the types of nodes that can be provisioned by this pool.\nAll requirements must be met for a node type to be eligible."
},
- "tag": {
+ "taints": {
+ "items": {
+ "$ref": "#/$defs/KubeletJoinTaint"
+ },
+ "type": "array",
+ "description": "Taints are the taints to apply to the nodes in this pool."
+ },
+ "nodeLabels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object",
+ "description": "NodeLabels are the labels to apply to the nodes in this pool."
+ },
+ "terminationGracePeriod": {
"type": "string",
- "description": "Tag is the tag of the container image, e.g. latest"
+ "description": "TerminationGracePeriod is the maximum duration the controller will wait before forcefully deleting the pods on a node, measured from when deletion is first initiated.\n\nWarning: this feature takes precedence over a Pod's terminationGracePeriodSeconds value, and bypasses any blocked PDBs or the karpenter.sh/do-not-disrupt annotation.\n\nThis field is intended to be used by cluster administrators to enforce that nodes can be cycled within a given time period.\nWhen set, drifted nodes will begin draining even if there are pods blocking eviction. Draining will respect PDBs and the do-not-disrupt annotation until the TGP is reached.\n\nKarpenter will preemptively delete pods so their terminationGracePeriodSeconds align with the node's terminationGracePeriod.\nIf a pod would be terminated without being granted its full terminationGracePeriodSeconds prior to the node timeout,\nthat pod will be deleted at T = node timeout - pod terminationGracePeriodSeconds.\n\nThe feature can also be used to allow maximum time limits for long-running jobs which can delay node termination with preStop hooks.\nDefaults to 30s. Set to Never to wait indefinitely for pods to be drained."
+ },
+ "quantity": {
+ "type": "integer",
+ "description": "Quantity is the number of desired nodes in this pool."
}
},
"additionalProperties": false,
- "type": "object"
+ "type": "object",
+ "required": [
+ "name",
+ "quantity"
+ ]
},
"Sync": {
"properties": {
@@ -4440,7 +4527,7 @@
"SyncRewriteHostsInitContainer": {
"properties": {
"image": {
- "type": "string",
+ "$ref": "#/$defs/Image",
"description": "Image is the image virtual cluster should use to rewrite this FQDN."
},
"resources": {
@@ -4477,6 +4564,10 @@
"$ref": "#/$defs/EnableSwitchWithPatches",
"description": "Endpoints defines if endpoints created within the virtual cluster should get synced to the host cluster."
},
+ "endpointSlices": {
+ "$ref": "#/$defs/EnableSwitchWithPatches",
+ "description": "EndpointSlices defines if endpointslices created within the virtual cluster should get synced to the host cluster."
+ },
"networkPolicies": {
"$ref": "#/$defs/EnableSwitchWithPatches",
"description": "NetworkPolicies defines if network policies created within the virtual cluster should get synced to the host cluster."
@@ -4900,6 +4991,17 @@
},
"additionalProperties": false,
"type": "object"
+ },
+ "VolumeSnapshotController": {
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enabled defines if the CSI volumes snapshot-controller should be enabled."
+ }
+ },
+ "additionalProperties": false,
+ "type": "object",
+ "description": "VolumeSnapshotController defines CSI volumes snapshot-controller configuration."
}
},
"properties": {
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane.mdx
index 1703c847e..a8c7ad8ac 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane.mdx
@@ -206,7 +206,7 @@ ExtraArgs are additional arguments to pass to the distro binary.
##### `scheduler` required object {#controlPlane-distro-k8s-scheduler}
-Scheduler holds configuration specific to starting the scheduler. Enable this via controlPlane.advanced.virtualScheduler.enabled
+Scheduler holds configuration specific to starting the scheduler.
@@ -309,7 +309,7 @@ Repository is the repository of the container image, e.g. my-repo/my-image
##### `tag` required string v1.32.8 {#controlPlane-distro-k8s-image-tag}
-Tag is the tag of the container image, e.g. latest. If set to the default, it will use the host Kubernetes version.
+Tag is the tag of the container image, and is the default version.
@@ -475,7 +475,7 @@ Repository is the repository of the container image, e.g. my-repo/my-image
##### `tag` required string v1.32.7-k3s1 {#controlPlane-distro-k3s-image-tag}
-Tag is the tag of the container image, e.g. latest. If set to the default, it will use the host Kubernetes version.
+Tag is the tag of the container image, and is the default version.
@@ -627,12 +627,24 @@ DataDir defines the data directory for the standalone mode.
+
+
+
+#### `autoNodes` required object {#controlPlane-standalone-autoNodes}
+
+AutoNodes automatically deploys nodes for standalone mode.
+
+
+
+
+
+
-#### `bundleRepository` required string https://github.com/loft-sh/kubernetes/releases/download {#controlPlane-standalone-bundleRepository}
+##### `provider` required string {#controlPlane-standalone-autoNodes-provider}
-BundleRepository is the repository to use for downloading the Kubernetes bundle. Defaults to https://github.com/loft-sh/kubernetes/releases/download
+Provider is the node provider of the nodes in this pool.
@@ -645,9 +657,9 @@ BundleRepository is the repository to use for downloading the Kubernetes bundle.
-#### `bundle` required string {#controlPlane-standalone-bundle}
+##### `quantity` required integer {#controlPlane-standalone-autoNodes-quantity}
-Bundle is a path to a Kubernetes bundle to use for the standalone mode. If empty, will use the bundleRepository to download the bundle.
+Quantity is the number of nodes to deploy for standalone mode.
@@ -657,6 +669,85 @@ Bundle is a path to a Kubernetes bundle to use for the standalone mode. If empty
+
+
+
+##### `nodeTypeSelector` required object[] {#controlPlane-standalone-autoNodes-nodeTypeSelector}
+
+NodeTypeSelector filters the types of nodes that can be provisioned by this pool.
+All requirements must be met for a node type to be eligible.
+
+
+
+
+
+
+
+
+
+##### `property` required string {#controlPlane-standalone-autoNodes-nodeTypeSelector-property}
+
+Property is the property on the node type to select.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `operator` required string {#controlPlane-standalone-autoNodes-nodeTypeSelector-operator}
+
+Operator is the comparison operator, such as "In", "NotIn", "Exists". If empty, defaults to "In".
+
+
+
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#controlPlane-standalone-autoNodes-nodeTypeSelector-values}
+
+Values is the list of values to use for comparison. This is mutually exclusive with value.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string {#controlPlane-standalone-autoNodes-nodeTypeSelector-value}
+
+Value is the value to use for comparison. This is mutually exclusive with values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -687,9 +778,9 @@ Enabled defines if the standalone node should be joined into the cluster. If fal
-##### `name` required string {#controlPlane-standalone-joinNode-name}
+##### `preInstallCommands` required string[] {#controlPlane-standalone-joinNode-preInstallCommands}
-Name defines the name of the standalone node. If empty the node will get the hostname as name.
+PreInstallCommands are commands that will be executed before containerd, kubelet etc. is installed.
@@ -704,7 +795,7 @@ Name defines the name of the standalone node. If empty the node will get the hos
##### `preJoinCommands` required string[] {#controlPlane-standalone-joinNode-preJoinCommands}
-PreJoinCommands are commands that will be executed before the join process starts.
+PreJoinCommands are commands that will be executed before kubeadm join is executed.
@@ -719,7 +810,7 @@ PreJoinCommands are commands that will be executed before the join process start
##### `postJoinCommands` required string[] {#controlPlane-standalone-joinNode-postJoinCommands}
-PostJoinCommands are commands that will be executed after the join process starts.
+PostJoinCommands are commands that will be executed after kubeadm join is executed.
@@ -855,6 +946,21 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
+
+
+
+##### `overridePath` required boolean {#controlPlane-standalone-joinNode-containerd-registry-mirrors-overridePath}
+
+OverridePath is a boolean to override the path for the containerd registry mirror.
+
+
+
+
+
+
+
+
+
@@ -926,6 +1032,18 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
+
+
+
+
+##### `overridePath` required boolean {#controlPlane-standalone-joinNode-containerd-registry-mirrors-hosts-overridePath}
+
+OverridePath is a boolean to override the path for the containerd registry mirror.
+
+
+
+
+
@@ -936,12 +1054,54 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
+
+
+
+##### `auth` required {key: object} {#controlPlane-standalone-joinNode-containerd-registry-auth}
+
+Auth holds configuration for the containerd registry auth. See https://github.com/containerd/containerd/blob/main/docs/cri/registry.md#configure-registry-credentials for more details.
+
+
+
+
+
+
+
+
+
+##### `username` required string {#controlPlane-standalone-joinNode-containerd-registry-auth-username}
+
+Username is the username for the containerd registry.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `password` required string {#controlPlane-standalone-joinNode-containerd-registry-auth-password}
+
+Password is the password for the containerd registry.
+
+
+
+
+
+
+
+
+
-##### `importImages` required string[] {#controlPlane-standalone-joinNode-containerd-importImages}
+##### `identityToken` required string {#controlPlane-standalone-joinNode-containerd-registry-auth-identityToken}
-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.
+IdentityToken is the token for the containerd registry.
@@ -951,6 +1111,27 @@ ImportImages is a list of images to import into the containerd registry from loc
+
+
+
+##### `auth` required string {#controlPlane-standalone-joinNode-containerd-registry-auth-auth}
+
+Auth is the auth config for the containerd registry.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1396,9 +1577,9 @@ Repository is the repository of the container image, e.g. my-repo/my-image
-##### `tag` required string 3.5.21-0 {#controlPlane-backingStore-etcd-deploy-statefulSet-image-tag}
+##### `tag` required string 3.5.25-0 {#controlPlane-backingStore-etcd-deploy-statefulSet-image-tag}
-Tag is the tag of the container image, e.g. latest. If set to the default, it will use the host Kubernetes version.
+Tag is the tag of the container image, and is the default version.
@@ -2239,7 +2420,7 @@ Enabled defines if the database should be used.
##### `dataSource` required string {#controlPlane-backingStore-database-embedded-dataSource}
DataSource is the kine dataSource to use for the database. This depends on the database format.
-This is optional for the embedded database. Examples:
+This is optional for the external database. Examples:
* mysql: mysql://username:password@tcp(hostname:3306)/k3s
* postgres: postgres://username:password@hostname:5432/k3s
@@ -2251,6 +2432,23 @@ This is optional for the embedded database. Examples:
+
+
+
+##### `identityProvider` required string {#controlPlane-backingStore-database-embedded-identityProvider}
+
+IdentityProvider is the kine identity provider to use when generating temporary authentication tokens for enhanced security.
+This is optional for the external database. Examples:
+* aws: RDS IAM Authentication
+
+
+
+
+
+
+
+
+
@@ -2347,7 +2545,7 @@ Enabled defines if the database should be used.
##### `dataSource` required string {#controlPlane-backingStore-database-external-dataSource}
DataSource is the kine dataSource to use for the database. This depends on the database format.
-This is optional for the embedded database. Examples:
+This is optional for the external database. Examples:
* mysql: mysql://username:password@tcp(hostname:3306)/k3s
* postgres: postgres://username:password@hostname:5432/k3s
@@ -2359,6 +2557,23 @@ This is optional for the embedded database. Examples:
+
+
+
+##### `identityProvider` required string {#controlPlane-backingStore-database-external-identityProvider}
+
+IdentityProvider is the kine identity provider to use when generating temporary authentication tokens for enhanced security.
+This is optional for the external database. Examples:
+* aws: RDS IAM Authentication
+
+
+
+
+
+
+
+
+
@@ -4096,6 +4311,8 @@ Labels are extra labels for this resource.
#### `image` required object {#controlPlane-statefulSet-image}
Image is the image for the controlPlane statefulSet container
+It defaults to the vCluster pro repository that includes the optional pro modules that are turned off by default.
+If you still want to use the pure OSS build, set the repository to 'loft-sh/vcluster-oss'.
@@ -4107,8 +4324,8 @@ Image is the image for the controlPlane statefulSet container
##### `registry` required string ghcr.io {#controlPlane-statefulSet-image-registry}
-Configure the registry of the container image, e.g. my-registry.com or ghcr.io
-It defaults to ghcr.io and can be overriding either by using this field or controlPlane.advanced.defaultImageRegistry
+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.
@@ -4123,9 +4340,7 @@ It defaults to ghcr.io and can be overriding either by using this field or contr
##### `repository` required string loft-sh/vcluster-pro {#controlPlane-statefulSet-image-repository}
-Configure the repository of the container image, e.g. my-repo/my-image.
-It defaults to the vCluster pro repository that includes the optional pro modules that are turned off by default.
-If you still want to use the pure OSS build, use 'loft-sh/vcluster-oss' instead.
+Repository is the repository of the container image, e.g. my-repo/my-image
@@ -4140,7 +4355,7 @@ If you still want to use the pure OSS build, use 'loft-sh/vcluster-oss' instead.
##### `tag` required string {#controlPlane-statefulSet-image-tag}
-Tag is the tag of the container image, e.g. latest
+Tag is the tag of the container image, and is the default version.
@@ -4336,6 +4551,36 @@ Required.
+
+
+
+
+
+
+
+#### `initContainers` required object[] {#controlPlane-statefulSet-initContainers}
+
+InitContainers are additional init containers for the statefulSet.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `sidecarContainers` required object[] {#controlPlane-statefulSet-sidecarContainers}
+
+SidecarContainers are additional sidecar containers for the statefulSet.
+
+
+
+
+
@@ -4987,6 +5232,39 @@ Config is the regular docker registry config. See https://distribution.github.io
+
+
+
+#### `cloudControllerManager` required object {#controlPlane-advanced-cloudControllerManager}
+
+CloudControllerManager holds configuration for the embedded cloud controller manager. This is only available when private nodes are enabled.
+The cloud controller manager is responsible for setting the node's ip addresses as well as the provider id for the node and other node metadata.
+
+
+
+
+
+
+
+
+
+##### `enabled` required boolean {#controlPlane-advanced-cloudControllerManager-enabled}
+
+Enabled defines if the embedded cloud controller manager should be enabled. This defaults to true, but can be disabled if you want to use
+an external cloud controller manager such as AWS or GCP. The cloud controller manager is responsible for setting the node's ip addresses as well
+as the provider id for the node and other node metadata.
+
+
+
+
+
+
+
+
+
+
+
+
@@ -5010,6 +5288,67 @@ Annotations are extra annotations for this resource.
+
+
+
+
+
+
+
+
+
+
+#### `kubeVip` required object {#controlPlane-advanced-kubeVip}
+
+KubeVip holds configuration for embedded kube-vip that announces the virtual cluster endpoint IP on layer 2.
+
+
+
+
+
+
+
+
+
+##### `enabled` required boolean {#controlPlane-advanced-kubeVip-enabled}
+
+Enabled defines if embedded kube-vip should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `interface` required string {#controlPlane-advanced-kubeVip-interface}
+
+Interface is the network interface on which the VIP is announced.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `gateway` required string {#controlPlane-advanced-kubeVip-gateway}
+
+Gateway is the gateway address in CIDR notation (e.g., 10.100.0.1/24).
+This is used to configure policy-based routing for the VIP and must include the subnet prefix.
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/advanced.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/advanced.mdx
index 010245e51..82d1d73c3 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/advanced.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/advanced.mdx
@@ -583,6 +583,39 @@ Config is the regular docker registry config. See https://distribution.github.io
+
+
+
+### `cloudControllerManager` required object {#advanced-cloudControllerManager}
+
+CloudControllerManager holds configuration for the embedded cloud controller manager. This is only available when private nodes are enabled.
+The cloud controller manager is responsible for setting the node's ip addresses as well as the provider id for the node and other node metadata.
+
+
+
+
+
+
+
+
+
+#### `enabled` required boolean {#advanced-cloudControllerManager-enabled}
+
+Enabled defines if the embedded cloud controller manager should be enabled. This defaults to true, but can be disabled if you want to use
+an external cloud controller manager such as AWS or GCP. The cloud controller manager is responsible for setting the node's ip addresses as well
+as the provider id for the node and other node metadata.
+
+
+
+
+
+
+
+
+
+
+
+
@@ -606,6 +639,67 @@ Annotations are extra annotations for this resource.
+
+
+
+
+
+
+
+
+
+
+### `kubeVip` required object {#advanced-kubeVip}
+
+KubeVip holds configuration for embedded kube-vip that announces the virtual cluster endpoint IP on layer 2.
+
+
+
+
+
+
+
+
+
+#### `enabled` required boolean {#advanced-kubeVip-enabled}
+
+Enabled defines if embedded kube-vip should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `interface` required string {#advanced-kubeVip-interface}
+
+Interface is the network interface on which the VIP is announced.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `gateway` required string {#advanced-kubeVip-gateway}
+
+Gateway is the gateway address in CIDR notation (e.g., 10.100.0.1/24).
+This is used to configure policy-based routing for the VIP and must include the subnet prefix.
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/advanced/kubeVip.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/advanced/kubeVip.mdx
new file mode 100755
index 000000000..ce5918fc8
--- /dev/null
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/advanced/kubeVip.mdx
@@ -0,0 +1,59 @@
+
+
+
+
+## `kubeVip` required object {#kubeVip}
+
+KubeVip holds configuration for embedded kube-vip that announces the virtual cluster endpoint IP on layer 2.
+
+
+
+
+
+
+
+
+
+### `enabled` required boolean {#kubeVip-enabled}
+
+Enabled defines if embedded kube-vip should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+### `interface` required string {#kubeVip-interface}
+
+Interface is the network interface on which the VIP is announced.
+
+
+
+
+
+
+
+
+
+
+
+
+### `gateway` required string {#kubeVip-gateway}
+
+Gateway is the gateway address in CIDR notation (e.g., 10.100.0.1/24).
+This is used to configure policy-based routing for the VIP and must include the subnet prefix.
+
+
+
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore.mdx
index d7063dcd8..0bce636d5 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore.mdx
@@ -213,9 +213,9 @@ Repository is the repository of the container image, e.g. my-repo/my-image
-##### `tag` required string 3.5.21-0 {#backingStore-etcd-deploy-statefulSet-image-tag}
+##### `tag` required string 3.5.25-0 {#backingStore-etcd-deploy-statefulSet-image-tag}
-Tag is the tag of the container image, e.g. latest. If set to the default, it will use the host Kubernetes version.
+Tag is the tag of the container image, and is the default version.
@@ -1056,7 +1056,7 @@ Enabled defines if the database should be used.
##### `dataSource` required string {#backingStore-database-embedded-dataSource}
DataSource is the kine dataSource to use for the database. This depends on the database format.
-This is optional for the embedded database. Examples:
+This is optional for the external database. Examples:
* mysql: mysql://username:password@tcp(hostname:3306)/k3s
* postgres: postgres://username:password@hostname:5432/k3s
@@ -1068,6 +1068,23 @@ This is optional for the embedded database. Examples:
+
+
+
+##### `identityProvider` required string {#backingStore-database-embedded-identityProvider}
+
+IdentityProvider is the kine identity provider to use when generating temporary authentication tokens for enhanced security.
+This is optional for the external database. Examples:
+* aws: RDS IAM Authentication
+
+
+
+
+
+
+
+
+
@@ -1164,7 +1181,7 @@ Enabled defines if the database should be used.
##### `dataSource` required string {#backingStore-database-external-dataSource}
DataSource is the kine dataSource to use for the database. This depends on the database format.
-This is optional for the embedded database. Examples:
+This is optional for the external database. Examples:
* mysql: mysql://username:password@tcp(hostname:3306)/k3s
* postgres: postgres://username:password@hostname:5432/k3s
@@ -1176,6 +1193,23 @@ This is optional for the embedded database. Examples:
+
+
+
+##### `identityProvider` required string {#backingStore-database-external-identityProvider}
+
+IdentityProvider is the kine identity provider to use when generating temporary authentication tokens for enhanced security.
+This is optional for the external database. Examples:
+* aws: RDS IAM Authentication
+
+
+
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/database/embedded.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/database/embedded.mdx
index 70081669f..68acfd589 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/database/embedded.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/database/embedded.mdx
@@ -32,7 +32,7 @@ Enabled defines if the database should be used.
### `dataSource` required string {#embedded-dataSource}
DataSource is the kine dataSource to use for the database. This depends on the database format.
-This is optional for the embedded database. Examples:
+This is optional for the external database. Examples:
* mysql: mysql://username:password@tcp(hostname:3306)/k3s
* postgres: postgres://username:password@hostname:5432/k3s
@@ -44,6 +44,23 @@ This is optional for the embedded database. Examples:
+
+
+
+### `identityProvider` required string {#embedded-identityProvider}
+
+IdentityProvider is the kine identity provider to use when generating temporary authentication tokens for enhanced security.
+This is optional for the external database. Examples:
+* aws: RDS IAM Authentication
+
+
+
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/database/external.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/database/external.mdx
index 1220ab551..5d1bad4ab 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/database/external.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/database/external.mdx
@@ -32,7 +32,7 @@ Enabled defines if the database should be used.
### `dataSource` required string {#external-dataSource}
DataSource is the kine dataSource to use for the database. This depends on the database format.
-This is optional for the embedded database. Examples:
+This is optional for the external database. Examples:
* mysql: mysql://username:password@tcp(hostname:3306)/k3s
* postgres: postgres://username:password@hostname:5432/k3s
@@ -44,6 +44,23 @@ This is optional for the embedded database. Examples:
+
+
+
+### `identityProvider` required string {#external-identityProvider}
+
+IdentityProvider is the kine identity provider to use when generating temporary authentication tokens for enhanced security.
+This is optional for the external database. Examples:
+* aws: RDS IAM Authentication
+
+
+
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/etcd/deploy.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/etcd/deploy.mdx
index 0e4e42fb8..78cee2e9f 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/etcd/deploy.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/backingStore/etcd/deploy.mdx
@@ -114,9 +114,9 @@ Repository is the repository of the container image, e.g. my-repo/my-image
-##### `tag` required string 3.5.21-0 {#deploy-statefulSet-image-tag}
+##### `tag` required string 3.5.25-0 {#deploy-statefulSet-image-tag}
-Tag is the tag of the container image, e.g. latest. If set to the default, it will use the host Kubernetes version.
+Tag is the tag of the container image, and is the default version.
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro.mdx
index eaa921253..b6d13e7a5 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro.mdx
@@ -179,7 +179,7 @@ ExtraArgs are additional arguments to pass to the distro binary.
#### `scheduler` required object {#distro-k8s-scheduler}
-Scheduler holds configuration specific to starting the scheduler. Enable this via controlPlane.advanced.virtualScheduler.enabled
+Scheduler holds configuration specific to starting the scheduler.
@@ -282,7 +282,7 @@ Repository is the repository of the container image, e.g. my-repo/my-image
##### `tag` required string v1.32.8 {#distro-k8s-image-tag}
-Tag is the tag of the container image, e.g. latest. If set to the default, it will use the host Kubernetes version.
+Tag is the tag of the container image, and is the default version.
@@ -448,7 +448,7 @@ Repository is the repository of the container image, e.g. my-repo/my-image
##### `tag` required string v1.32.7-k3s1 {#distro-k3s-image-tag}
-Tag is the tag of the container image, e.g. latest. If set to the default, it will use the host Kubernetes version.
+Tag is the tag of the container image, and is the default version.
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro/k3s.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro/k3s.mdx
index 2d347a209..2f65ba953 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro/k3s.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro/k3s.mdx
@@ -89,7 +89,7 @@ Repository is the repository of the container image, e.g. my-repo/my-image
#### `tag` required string v1.32.7-k3s1 {#k3s-image-tag}
-Tag is the tag of the container image, e.g. latest. If set to the default, it will use the host Kubernetes version.
+Tag is the tag of the container image, and is the default version.
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro/k8s.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro/k8s.mdx
index 51999c5c2..0e78b86f7 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro/k8s.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/distro/k8s.mdx
@@ -167,7 +167,7 @@ ExtraArgs are additional arguments to pass to the distro binary.
### `scheduler` required object {#k8s-scheduler}
-Scheduler holds configuration specific to starting the scheduler. Enable this via controlPlane.advanced.virtualScheduler.enabled
+Scheduler holds configuration specific to starting the scheduler.
@@ -270,7 +270,7 @@ Repository is the repository of the container image, e.g. my-repo/my-image
#### `tag` required string v1.32.8 {#k8s-image-tag}
-Tag is the tag of the container image, e.g. latest. If set to the default, it will use the host Kubernetes version.
+Tag is the tag of the container image, and is the default version.
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/standalone.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/standalone.mdx
index 3e000e73a..a5adc557d 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/standalone.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/standalone.mdx
@@ -42,12 +42,82 @@ DataDir defines the data directory for the standalone mode.
+
+
+
+### `autoNodes` required object {#standalone-autoNodes}
+
+AutoNodes automatically deploys nodes for standalone mode.
+
+
+
+
+
+
+
+
+
+#### `provider` required string {#standalone-autoNodes-provider}
+
+Provider is the node provider of the nodes in this pool.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `quantity` required integer {#standalone-autoNodes-quantity}
+
+Quantity is the number of nodes to deploy for standalone mode.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `nodeTypeSelector` required object[] {#standalone-autoNodes-nodeTypeSelector}
+
+NodeTypeSelector filters the types of nodes that can be provisioned by this pool.
+All requirements must be met for a node type to be eligible.
+
+
+
+
+
+
+
+
+
+##### `property` required string {#standalone-autoNodes-nodeTypeSelector-property}
+
+Property is the property on the node type to select.
+
+
+
+
+
+
+
+
+
-### `bundleRepository` required string https://github.com/loft-sh/kubernetes/releases/download {#standalone-bundleRepository}
+##### `operator` required string {#standalone-autoNodes-nodeTypeSelector-operator}
-BundleRepository is the repository to use for downloading the Kubernetes bundle. Defaults to https://github.com/loft-sh/kubernetes/releases/download
+Operator is the comparison operator, such as "In", "NotIn", "Exists". If empty, defaults to "In".
@@ -60,9 +130,9 @@ BundleRepository is the repository to use for downloading the Kubernetes bundle.
-### `bundle` required string {#standalone-bundle}
+##### `values` required string[] {#standalone-autoNodes-nodeTypeSelector-values}
-Bundle is a path to a Kubernetes bundle to use for the standalone mode. If empty, will use the bundleRepository to download the bundle.
+Values is the list of values to use for comparison. This is mutually exclusive with value.
@@ -72,6 +142,27 @@ Bundle is a path to a Kubernetes bundle to use for the standalone mode. If empty
+
+
+
+##### `value` required string {#standalone-autoNodes-nodeTypeSelector-value}
+
+Value is the value to use for comparison. This is mutually exclusive with values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -102,9 +193,9 @@ Enabled defines if the standalone node should be joined into the cluster. If fal
-#### `name` required string {#standalone-joinNode-name}
+#### `preInstallCommands` required string[] {#standalone-joinNode-preInstallCommands}
-Name defines the name of the standalone node. If empty the node will get the hostname as name.
+PreInstallCommands are commands that will be executed before containerd, kubelet etc. is installed.
@@ -119,7 +210,7 @@ Name defines the name of the standalone node. If empty the node will get the hos
#### `preJoinCommands` required string[] {#standalone-joinNode-preJoinCommands}
-PreJoinCommands are commands that will be executed before the join process starts.
+PreJoinCommands are commands that will be executed before kubeadm join is executed.
@@ -134,7 +225,7 @@ PreJoinCommands are commands that will be executed before the join process start
#### `postJoinCommands` required string[] {#standalone-joinNode-postJoinCommands}
-PostJoinCommands are commands that will be executed after the join process starts.
+PostJoinCommands are commands that will be executed after kubeadm join is executed.
@@ -270,6 +361,21 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
+
+
+
+##### `overridePath` required boolean {#standalone-joinNode-containerd-registry-mirrors-overridePath}
+
+OverridePath is a boolean to override the path for the containerd registry mirror.
+
+
+
+
+
+
+
+
+
@@ -341,12 +447,81 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
+
+
+
+
+##### `overridePath` required boolean {#standalone-joinNode-containerd-registry-mirrors-hosts-overridePath}
+
+OverridePath is a boolean to override the path for the containerd registry mirror.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `auth` required {key: object} {#standalone-joinNode-containerd-registry-auth}
+
+Auth holds configuration for the containerd registry auth. See https://github.com/containerd/containerd/blob/main/docs/cri/registry.md#configure-registry-credentials for more details.
+
+
+
+
+
+
+
+
+
+##### `username` required string {#standalone-joinNode-containerd-registry-auth-username}
+
+Username is the username for the containerd registry.
+
+
+
+
+
+
+
+
+
+##### `password` required string {#standalone-joinNode-containerd-registry-auth-password}
+
+Password is the password for the containerd registry.
+
+
+
+
+
+
+
+
+
+##### `identityToken` required string {#standalone-joinNode-containerd-registry-auth-identityToken}
+
+IdentityToken is the token for the containerd registry.
+
+
+
+
+
@@ -354,14 +529,20 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
-##### `importImages` required string[] {#standalone-joinNode-containerd-importImages}
+##### `auth` required string {#standalone-joinNode-containerd-registry-auth-auth}
-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.
+Auth is the auth config for the containerd registry.
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/standalone/joinNode.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/standalone/joinNode.mdx
index 52e0ed235..b7e787c38 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/standalone/joinNode.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/standalone/joinNode.mdx
@@ -29,9 +29,9 @@ Enabled defines if the standalone node should be joined into the cluster. If fal
-### `name` required string {#joinNode-name}
+### `preInstallCommands` required string[] {#joinNode-preInstallCommands}
-Name defines the name of the standalone node. If empty the node will get the hostname as name.
+PreInstallCommands are commands that will be executed before containerd, kubelet etc. is installed.
@@ -46,7 +46,7 @@ Name defines the name of the standalone node. If empty the node will get the hos
### `preJoinCommands` required string[] {#joinNode-preJoinCommands}
-PreJoinCommands are commands that will be executed before the join process starts.
+PreJoinCommands are commands that will be executed before kubeadm join is executed.
@@ -61,7 +61,7 @@ PreJoinCommands are commands that will be executed before the join process start
### `postJoinCommands` required string[] {#joinNode-postJoinCommands}
-PostJoinCommands are commands that will be executed after the join process starts.
+PostJoinCommands are commands that will be executed after kubeadm join is executed.
@@ -197,6 +197,21 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
+
+
+
+##### `overridePath` required boolean {#joinNode-containerd-registry-mirrors-overridePath}
+
+OverridePath is a boolean to override the path for the containerd registry mirror.
+
+
+
+
+
+
+
+
+
@@ -268,12 +283,81 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
+
+
+
+
+##### `overridePath` required boolean {#joinNode-containerd-registry-mirrors-hosts-overridePath}
+
+OverridePath is a boolean to override the path for the containerd registry mirror.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `auth` required {key: object} {#joinNode-containerd-registry-auth}
+
+Auth holds configuration for the containerd registry auth. See https://github.com/containerd/containerd/blob/main/docs/cri/registry.md#configure-registry-credentials for more details.
+
+
+
+
+
+
+
+
+
+##### `username` required string {#joinNode-containerd-registry-auth-username}
+
+Username is the username for the containerd registry.
+
+
+
+
+
+
+
+
+
+##### `password` required string {#joinNode-containerd-registry-auth-password}
+
+Password is the password for the containerd registry.
+
+
+
+
+
+
+
+
+
+##### `identityToken` required string {#joinNode-containerd-registry-auth-identityToken}
+
+IdentityToken is the token for the containerd registry.
+
+
+
+
+
@@ -281,14 +365,20 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
-#### `importImages` required string[] {#joinNode-containerd-importImages}
+##### `auth` required string {#joinNode-containerd-registry-auth-auth}
-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.
+Auth is the auth config for the containerd registry.
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/statefulSet.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/statefulSet.mdx
index c065091ae..528a2799d 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/statefulSet.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/controlPlane/statefulSet.mdx
@@ -914,6 +914,8 @@ Labels are extra labels for this resource.
### `image` required object {#statefulSet-image}
Image is the image for the controlPlane statefulSet container
+It defaults to the vCluster pro repository that includes the optional pro modules that are turned off by default.
+If you still want to use the pure OSS build, set the repository to 'loft-sh/vcluster-oss'.
@@ -925,8 +927,8 @@ Image is the image for the controlPlane statefulSet container
#### `registry` required string ghcr.io {#statefulSet-image-registry}
-Configure the registry of the container image, e.g. my-registry.com or ghcr.io
-It defaults to ghcr.io and can be overriding either by using this field or controlPlane.advanced.defaultImageRegistry
+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.
@@ -941,9 +943,7 @@ It defaults to ghcr.io and can be overriding either by using this field or contr
#### `repository` required string loft-sh/vcluster-pro {#statefulSet-image-repository}
-Configure the repository of the container image, e.g. my-repo/my-image.
-It defaults to the vCluster pro repository that includes the optional pro modules that are turned off by default.
-If you still want to use the pure OSS build, use 'loft-sh/vcluster-oss' instead.
+Repository is the repository of the container image, e.g. my-repo/my-image
@@ -958,7 +958,7 @@ If you still want to use the pure OSS build, use 'loft-sh/vcluster-oss' instead.
#### `tag` required string {#statefulSet-image-tag}
-Tag is the tag of the container image, e.g. latest
+Tag is the tag of the container image, and is the default version.
@@ -1154,6 +1154,36 @@ Required.
+
+
+
+
+
+
+
+### `initContainers` required object[] {#statefulSet-initContainers}
+
+InitContainers are additional init containers for the statefulSet.
+
+
+
+
+
+
+
+
+
+
+
+
+### `sidecarContainers` required object[] {#statefulSet-sidecarContainers}
+
+SidecarContainers are additional sidecar containers for the statefulSet.
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/deploy.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/deploy.mdx
index c6eb080cc..f10d35dec 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/deploy.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/deploy.mdx
@@ -139,6 +139,22 @@ ExtraArgs are additional arguments to pass to the kube-proxy.
+
+
+
+
+
+
+
+#### `config` required object {#deploy-kubeProxy-config}
+
+Config is the config for the kube-proxy that will be merged into the default kube-proxy config. More information can be found here:
+https://kubernetes.io/docs/reference/config-api/kube-proxy-config.v1alpha1/#kubeproxy-config-k8s-io-v1alpha1-KubeProxyConfiguration
+
+
+
+
+
@@ -484,6 +500,36 @@ Enabled defines if metrics server should be enabled.
+
+
+
+
+
+
+
+
+
+
+### `volumeSnapshotController` required object {#deploy-volumeSnapshotController}
+
+VolumeSnapshotController holds dedicated CSI snapshot-controller configuration.
+
+
+
+
+
+
+
+
+
+#### `enabled` required boolean {#deploy-volumeSnapshotController-enabled}
+
+Enabled defines if the CSI volumes snapshot-controller should be enabled.
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental.mdx
index 2293604ce..3ffe742b5 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental.mdx
@@ -338,21 +338,6 @@ SyncSettings are advanced settings for the syncer controller.
-
-
-
-#### `targetNamespace` required string {#experimental-syncSettings-targetNamespace}
-
-TargetNamespace is the namespace where the workloads should get synced to.
-
-
-
-
-
-
-
-
-
@@ -401,2158 +386,13 @@ VirtualMetricsBindAddress is the bind address for the virtual manager
-
-
-
-### `genericSync` required object {#experimental-genericSync}
-
-GenericSync holds options to generically sync resources from virtual cluster to host.
-
-
-
-
-
-
-
-
-
-#### `version` required string {#experimental-genericSync-version}
-
-Version is the config version
-
-
-
-
-
-
-
-
-
-
-
-
-#### `export` required object[] {#experimental-genericSync-export}
-
-Exports syncs a resource from the virtual cluster to the host
-
-
-
-
-
-
-
-
-
-##### `apiVersion` required string {#experimental-genericSync-export-apiVersion}
-
-APIVersion of the object to sync
-
-
-
-
-
-
-
-
-
-
-
-
-##### `kind` required string {#experimental-genericSync-export-kind}
-
-Kind of the object to sync
-
-
-
-
-
-
-
-
-
-
-
-
-##### `optional` required boolean {#experimental-genericSync-export-optional}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `replaceOnConflict` required boolean {#experimental-genericSync-export-replaceOnConflict}
-
-ReplaceWhenInvalid determines if the controller should try to recreate the object
-if there is a problem applying
-
-
-
-
-
-
-
-
-
-
-
-
-##### `patches` required object[] {#experimental-genericSync-export-patches}
-
-Patches are the patches to apply on the virtual cluster objects
-when syncing them from the host cluster
-
-
-
-
-
-
-
-
-
-##### `op` required string {#experimental-genericSync-export-patches-op}
-
-Operation is the type of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `fromPath` required string {#experimental-genericSync-export-patches-fromPath}
-
-FromPath is the path from the other object
-
-
-
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-export-patches-path}
-
-Path is the path of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namePath` required string {#experimental-genericSync-export-patches-namePath}
-
-NamePath is the path to the name of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namespacePath` required string {#experimental-genericSync-export-patches-namespacePath}
-
-NamespacePath is path to the namespace of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `value` required object {#experimental-genericSync-export-patches-value}
-
-Value is the new value to be set to the path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `regex` required string {#experimental-genericSync-export-patches-regex}
-
-Regex - is regular expresion used to identify the Name,
-and optionally Namespace, parts of the field value that
-will be replaced with the rewritten Name and/or Namespace
-
-
-
-
-
-
-
-
-
-
-
-
-##### `conditions` required object[] {#experimental-genericSync-export-patches-conditions}
-
-Conditions are conditions that must be true for
-the patch to get executed
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-export-patches-conditions-path}
-
-Path is the path within the object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `subPath` required string {#experimental-genericSync-export-patches-conditions-subPath}
-
-SubPath is the path below the selected object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `equal` required object {#experimental-genericSync-export-patches-conditions-equal}
-
-Equal is the value the path should be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `notEqual` required object {#experimental-genericSync-export-patches-conditions-notEqual}
-
-NotEqual is the value the path should not be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `empty` required boolean {#experimental-genericSync-export-patches-conditions-empty}
-
-Empty means that the path value should be empty or unset
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `ignore` required boolean {#experimental-genericSync-export-patches-ignore}
-
-Ignore determines if the path should be ignored if handled as a reverse patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `sync` required object {#experimental-genericSync-export-patches-sync}
-
-Sync defines if a specialized syncer should be initialized using values
-from the rewriteName operation as Secret/Configmap names to be synced
-
-
-
-
-
-
-
-
-
-##### `secret` required boolean {#experimental-genericSync-export-patches-sync-secret}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `configmap` required boolean {#experimental-genericSync-export-patches-sync-configmap}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `reversePatches` required object[] {#experimental-genericSync-export-reversePatches}
-
-ReversePatches are the patches to apply to host cluster objects
-after it has been synced to the virtual cluster
-
-
-
-
-
-
-
-
-
-##### `op` required string {#experimental-genericSync-export-reversePatches-op}
-
-Operation is the type of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `fromPath` required string {#experimental-genericSync-export-reversePatches-fromPath}
-
-FromPath is the path from the other object
-
-
-
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-export-reversePatches-path}
-
-Path is the path of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namePath` required string {#experimental-genericSync-export-reversePatches-namePath}
-
-NamePath is the path to the name of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namespacePath` required string {#experimental-genericSync-export-reversePatches-namespacePath}
-
-NamespacePath is path to the namespace of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `value` required object {#experimental-genericSync-export-reversePatches-value}
-
-Value is the new value to be set to the path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `regex` required string {#experimental-genericSync-export-reversePatches-regex}
-
-Regex - is regular expresion used to identify the Name,
-and optionally Namespace, parts of the field value that
-will be replaced with the rewritten Name and/or Namespace
-
-
-
-
-
-
-
-
-
-
-
-
-##### `conditions` required object[] {#experimental-genericSync-export-reversePatches-conditions}
-
-Conditions are conditions that must be true for
-the patch to get executed
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-export-reversePatches-conditions-path}
-
-Path is the path within the object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `subPath` required string {#experimental-genericSync-export-reversePatches-conditions-subPath}
-
-SubPath is the path below the selected object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `equal` required object {#experimental-genericSync-export-reversePatches-conditions-equal}
-
-Equal is the value the path should be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `notEqual` required object {#experimental-genericSync-export-reversePatches-conditions-notEqual}
-
-NotEqual is the value the path should not be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `empty` required boolean {#experimental-genericSync-export-reversePatches-conditions-empty}
-
-Empty means that the path value should be empty or unset
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `ignore` required boolean {#experimental-genericSync-export-reversePatches-ignore}
-
-Ignore determines if the path should be ignored if handled as a reverse patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `sync` required object {#experimental-genericSync-export-reversePatches-sync}
-
-Sync defines if a specialized syncer should be initialized using values
-from the rewriteName operation as Secret/Configmap names to be synced
-
-
-
-
-
-
-
-
-
-##### `secret` required boolean {#experimental-genericSync-export-reversePatches-sync-secret}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `configmap` required boolean {#experimental-genericSync-export-reversePatches-sync-configmap}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `selector` required object {#experimental-genericSync-export-selector}
-
-Selector is a label selector to select the synced objects in the virtual cluster.
-If empty, all objects will be synced.
-
-
-
-
-
-
-
-
-
-##### `labelSelector` required object {#experimental-genericSync-export-selector-labelSelector}
-
-LabelSelector are the labels to select the object from
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#### `import` required object[] {#experimental-genericSync-import}
-
-Imports syncs a resource from the host cluster to virtual cluster
-
-
-
-
-
-
-
-
-
-##### `apiVersion` required string {#experimental-genericSync-import-apiVersion}
-
-APIVersion of the object to sync
-
-
-
-
-
-
-
-
-
-
-
-
-##### `kind` required string {#experimental-genericSync-import-kind}
-
-Kind of the object to sync
-
-
-
-
-
-
-
-
-
-
-
-
-##### `optional` required boolean {#experimental-genericSync-import-optional}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `replaceOnConflict` required boolean {#experimental-genericSync-import-replaceOnConflict}
-
-ReplaceWhenInvalid determines if the controller should try to recreate the object
-if there is a problem applying
-
-
-
-
-
-
-
-
-
-
-
-
-##### `patches` required object[] {#experimental-genericSync-import-patches}
-
-Patches are the patches to apply on the virtual cluster objects
-when syncing them from the host cluster
-
-
-
-
-
-
-
-
-
-##### `op` required string {#experimental-genericSync-import-patches-op}
-
-Operation is the type of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `fromPath` required string {#experimental-genericSync-import-patches-fromPath}
-
-FromPath is the path from the other object
-
-
-
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-import-patches-path}
-
-Path is the path of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namePath` required string {#experimental-genericSync-import-patches-namePath}
-
-NamePath is the path to the name of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namespacePath` required string {#experimental-genericSync-import-patches-namespacePath}
-
-NamespacePath is path to the namespace of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `value` required object {#experimental-genericSync-import-patches-value}
-
-Value is the new value to be set to the path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `regex` required string {#experimental-genericSync-import-patches-regex}
-
-Regex - is regular expresion used to identify the Name,
-and optionally Namespace, parts of the field value that
-will be replaced with the rewritten Name and/or Namespace
-
-
-
-
-
-
-
-
-
-
-
-
-##### `conditions` required object[] {#experimental-genericSync-import-patches-conditions}
-
-Conditions are conditions that must be true for
-the patch to get executed
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-import-patches-conditions-path}
-
-Path is the path within the object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `subPath` required string {#experimental-genericSync-import-patches-conditions-subPath}
-
-SubPath is the path below the selected object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `equal` required object {#experimental-genericSync-import-patches-conditions-equal}
-
-Equal is the value the path should be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `notEqual` required object {#experimental-genericSync-import-patches-conditions-notEqual}
-
-NotEqual is the value the path should not be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `empty` required boolean {#experimental-genericSync-import-patches-conditions-empty}
-
-Empty means that the path value should be empty or unset
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `ignore` required boolean {#experimental-genericSync-import-patches-ignore}
-
-Ignore determines if the path should be ignored if handled as a reverse patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `sync` required object {#experimental-genericSync-import-patches-sync}
-
-Sync defines if a specialized syncer should be initialized using values
-from the rewriteName operation as Secret/Configmap names to be synced
-
-
-
-
-
-
-
-
-
-##### `secret` required boolean {#experimental-genericSync-import-patches-sync-secret}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `configmap` required boolean {#experimental-genericSync-import-patches-sync-configmap}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `reversePatches` required object[] {#experimental-genericSync-import-reversePatches}
-
-ReversePatches are the patches to apply to host cluster objects
-after it has been synced to the virtual cluster
-
-
-
-
-
-
-
-
-
-##### `op` required string {#experimental-genericSync-import-reversePatches-op}
-
-Operation is the type of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `fromPath` required string {#experimental-genericSync-import-reversePatches-fromPath}
-
-FromPath is the path from the other object
-
-
-
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-import-reversePatches-path}
-
-Path is the path of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namePath` required string {#experimental-genericSync-import-reversePatches-namePath}
-
-NamePath is the path to the name of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namespacePath` required string {#experimental-genericSync-import-reversePatches-namespacePath}
-
-NamespacePath is path to the namespace of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `value` required object {#experimental-genericSync-import-reversePatches-value}
-
-Value is the new value to be set to the path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `regex` required string {#experimental-genericSync-import-reversePatches-regex}
-
-Regex - is regular expresion used to identify the Name,
-and optionally Namespace, parts of the field value that
-will be replaced with the rewritten Name and/or Namespace
-
-
-
-
-
-
-
-
-
-
-
-
-##### `conditions` required object[] {#experimental-genericSync-import-reversePatches-conditions}
-
-Conditions are conditions that must be true for
-the patch to get executed
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-import-reversePatches-conditions-path}
-
-Path is the path within the object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `subPath` required string {#experimental-genericSync-import-reversePatches-conditions-subPath}
-
-SubPath is the path below the selected object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `equal` required object {#experimental-genericSync-import-reversePatches-conditions-equal}
-
-Equal is the value the path should be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `notEqual` required object {#experimental-genericSync-import-reversePatches-conditions-notEqual}
-
-NotEqual is the value the path should not be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `empty` required boolean {#experimental-genericSync-import-reversePatches-conditions-empty}
-
-Empty means that the path value should be empty or unset
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `ignore` required boolean {#experimental-genericSync-import-reversePatches-ignore}
-
-Ignore determines if the path should be ignored if handled as a reverse patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `sync` required object {#experimental-genericSync-import-reversePatches-sync}
-
-Sync defines if a specialized syncer should be initialized using values
-from the rewriteName operation as Secret/Configmap names to be synced
-
-
-
-
-
-
-
-
-
-##### `secret` required boolean {#experimental-genericSync-import-reversePatches-sync-secret}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `configmap` required boolean {#experimental-genericSync-import-reversePatches-sync-configmap}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#### `hooks` required object {#experimental-genericSync-hooks}
-
-Hooks are hooks that can be used to inject custom patches before syncing
-
-
-
-
-
-
-
-
-
-##### `hostToVirtual` required object[] {#experimental-genericSync-hooks-hostToVirtual}
-
-HostToVirtual is a hook that is executed before syncing from the host to the virtual cluster
-
-
-
-
-
-
-
-
-
-##### `apiVersion` required string {#experimental-genericSync-hooks-hostToVirtual-apiVersion}
-
-APIVersion of the object to sync
-
-
-
-
-
-
-
-
-
-
-
-
-##### `kind` required string {#experimental-genericSync-hooks-hostToVirtual-kind}
-
-Kind of the object to sync
-
-
-
-
-
-
-
-
-
-
-
-
-##### `verbs` required string[] {#experimental-genericSync-hooks-hostToVirtual-verbs}
-
-Verbs are the verbs that the hook should mutate
-
-
-
-
-
-
-
-
-
-
-
-
-##### `patches` required object[] {#experimental-genericSync-hooks-hostToVirtual-patches}
-
-Patches are the patches to apply on the object to be synced
-
-
-
-
-
-
-
-
-
-##### `op` required string {#experimental-genericSync-hooks-hostToVirtual-patches-op}
-
-Operation is the type of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `fromPath` required string {#experimental-genericSync-hooks-hostToVirtual-patches-fromPath}
-
-FromPath is the path from the other object
-
-
-
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-hooks-hostToVirtual-patches-path}
-
-Path is the path of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namePath` required string {#experimental-genericSync-hooks-hostToVirtual-patches-namePath}
-
-NamePath is the path to the name of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namespacePath` required string {#experimental-genericSync-hooks-hostToVirtual-patches-namespacePath}
-
-NamespacePath is path to the namespace of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `value` required object {#experimental-genericSync-hooks-hostToVirtual-patches-value}
-
-Value is the new value to be set to the path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `regex` required string {#experimental-genericSync-hooks-hostToVirtual-patches-regex}
-
-Regex - is regular expresion used to identify the Name,
-and optionally Namespace, parts of the field value that
-will be replaced with the rewritten Name and/or Namespace
-
-
-
-
-
-
-
-
-
-
-
-
-##### `conditions` required object[] {#experimental-genericSync-hooks-hostToVirtual-patches-conditions}
-
-Conditions are conditions that must be true for
-the patch to get executed
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-hooks-hostToVirtual-patches-conditions-path}
-
-Path is the path within the object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `subPath` required string {#experimental-genericSync-hooks-hostToVirtual-patches-conditions-subPath}
-
-SubPath is the path below the selected object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `equal` required object {#experimental-genericSync-hooks-hostToVirtual-patches-conditions-equal}
-
-Equal is the value the path should be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `notEqual` required object {#experimental-genericSync-hooks-hostToVirtual-patches-conditions-notEqual}
-
-NotEqual is the value the path should not be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `empty` required boolean {#experimental-genericSync-hooks-hostToVirtual-patches-conditions-empty}
-
-Empty means that the path value should be empty or unset
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `ignore` required boolean {#experimental-genericSync-hooks-hostToVirtual-patches-ignore}
-
-Ignore determines if the path should be ignored if handled as a reverse patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `sync` required object {#experimental-genericSync-hooks-hostToVirtual-patches-sync}
-
-Sync defines if a specialized syncer should be initialized using values
-from the rewriteName operation as Secret/Configmap names to be synced
-
-
-
-
-
-
-
-
-
-##### `secret` required boolean {#experimental-genericSync-hooks-hostToVirtual-patches-sync-secret}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `configmap` required boolean {#experimental-genericSync-hooks-hostToVirtual-patches-sync-configmap}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `virtualToHost` required object[] {#experimental-genericSync-hooks-virtualToHost}
-
-VirtualToHost is a hook that is executed before syncing from the virtual to the host cluster
-
-
-
-
-
-
-
-
-
-##### `apiVersion` required string {#experimental-genericSync-hooks-virtualToHost-apiVersion}
-
-APIVersion of the object to sync
-
-
-
-
-
-
-
-
-
-
-
-
-##### `kind` required string {#experimental-genericSync-hooks-virtualToHost-kind}
-
-Kind of the object to sync
-
-
-
-
-
-
-
-
-
-
-
-
-##### `verbs` required string[] {#experimental-genericSync-hooks-virtualToHost-verbs}
-
-Verbs are the verbs that the hook should mutate
-
-
-
-
-
-
-
-
-
-
-
-
-##### `patches` required object[] {#experimental-genericSync-hooks-virtualToHost-patches}
-
-Patches are the patches to apply on the object to be synced
-
-
-
-
-
-
-
-
-
-##### `op` required string {#experimental-genericSync-hooks-virtualToHost-patches-op}
-
-Operation is the type of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `fromPath` required string {#experimental-genericSync-hooks-virtualToHost-patches-fromPath}
-
-FromPath is the path from the other object
-
-
-
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-hooks-virtualToHost-patches-path}
-
-Path is the path of the patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namePath` required string {#experimental-genericSync-hooks-virtualToHost-patches-namePath}
-
-NamePath is the path to the name of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `namespacePath` required string {#experimental-genericSync-hooks-virtualToHost-patches-namespacePath}
-
-NamespacePath is path to the namespace of a child resource within Path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `value` required object {#experimental-genericSync-hooks-virtualToHost-patches-value}
-
-Value is the new value to be set to the path
-
-
-
-
-
-
-
-
-
-
-
-
-##### `regex` required string {#experimental-genericSync-hooks-virtualToHost-patches-regex}
-
-Regex - is regular expresion used to identify the Name,
-and optionally Namespace, parts of the field value that
-will be replaced with the rewritten Name and/or Namespace
-
-
-
-
-
-
-
-
-
-
-
-
-##### `conditions` required object[] {#experimental-genericSync-hooks-virtualToHost-patches-conditions}
-
-Conditions are conditions that must be true for
-the patch to get executed
-
-
-
-
-
-
-
-
-
-##### `path` required string {#experimental-genericSync-hooks-virtualToHost-patches-conditions-path}
-
-Path is the path within the object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `subPath` required string {#experimental-genericSync-hooks-virtualToHost-patches-conditions-subPath}
-
-SubPath is the path below the selected object to select
-
-
-
-
-
-
-
-
-
-
-
-
-##### `equal` required object {#experimental-genericSync-hooks-virtualToHost-patches-conditions-equal}
-
-Equal is the value the path should be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `notEqual` required object {#experimental-genericSync-hooks-virtualToHost-patches-conditions-notEqual}
-
-NotEqual is the value the path should not be equal to
-
-
-
-
-
-
-
-
-
-
-
-
-##### `empty` required boolean {#experimental-genericSync-hooks-virtualToHost-patches-conditions-empty}
-
-Empty means that the path value should be empty or unset
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `ignore` required boolean {#experimental-genericSync-hooks-virtualToHost-patches-ignore}
-
-Ignore determines if the path should be ignored if handled as a reverse patch
-
-
-
-
-
-
-
-
-
-
-
-
-##### `sync` required object {#experimental-genericSync-hooks-virtualToHost-patches-sync}
-
-Sync defines if a specialized syncer should be initialized using values
-from the rewriteName operation as Secret/Configmap names to be synced
-
-
-
-
-
-
-
-
-
-##### `secret` required boolean {#experimental-genericSync-hooks-virtualToHost-patches-sync-secret}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-##### `configmap` required boolean {#experimental-genericSync-hooks-virtualToHost-patches-sync-configmap}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#### `clusterRole` required object {#experimental-genericSync-clusterRole}
-
-
-
-
-
-
-
-
-
-
-
-##### `extraRules` required object[] [] {#experimental-genericSync-clusterRole-extraRules}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#### `role` required object {#experimental-genericSync-role}
-
-
-
-
-
-
-
-
-
-
-
-##### `extraRules` required object[] [] {#experimental-genericSync-role-extraRules}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-### `isolatedControlPlane` required object {#experimental-isolatedControlPlane}
-
-IsolatedControlPlane is a feature to run the vCluster control plane in a different Kubernetes cluster than the workloads themselves.
-
-
-
-
-
-
-
-
-
-#### `enabled` required boolean {#experimental-isolatedControlPlane-enabled}
-
-Enabled specifies if the isolated control plane feature should be enabled.
-
-
-
-
-
-
-
-
-
-
-
-
-#### `headless` required boolean false {#experimental-isolatedControlPlane-headless}
-
-Headless states that Helm should deploy the vCluster in headless mode for the isolated control plane.
-
-
-
-
-
-
-
-
-
-
-
-
-#### `kubeConfig` required string {#experimental-isolatedControlPlane-kubeConfig}
-
-KubeConfig is the path where to find the remote workload cluster kubeconfig.
-
-
-
-
-
-
-
-
-
-
-
-
-#### `namespace` required string {#experimental-isolatedControlPlane-namespace}
-
-Namespace is the namespace where to sync the workloads into.
-
-
-
-
-
-
-
-
-
-
-
-
-#### `service` required string {#experimental-isolatedControlPlane-service}
-
-Service is the vCluster service in the remote cluster.
-
-
-
-
-
-
-
-
-
-
-
-
### `virtualClusterKubeConfig` required object {#experimental-virtualClusterKubeConfig}
VirtualClusterKubeConfig allows you to override distro specifics and specify where vCluster will find the required certificates and vCluster config.
+Deprecated: Removed in 0.29.0.
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental/syncSettings.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental/syncSettings.mdx
index 6071875e5..657ad29fd 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental/syncSettings.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental/syncSettings.mdx
@@ -11,21 +11,6 @@ SyncSettings are advanced settings for the syncer controller.
-
-
-
-### `targetNamespace` required string {#syncSettings-targetNamespace}
-
-TargetNamespace is the namespace where the workloads should get synced to.
-
-
-
-
-
-
-
-
-
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental/virtualClusterKubeConfig.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental/virtualClusterKubeConfig.mdx
index 85bbb0f76..bf35dc7aa 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental/virtualClusterKubeConfig.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/experimental/virtualClusterKubeConfig.mdx
@@ -5,6 +5,7 @@
## `virtualClusterKubeConfig` required object {#virtualClusterKubeConfig}
VirtualClusterKubeConfig allows you to override distro specifics and specify where vCluster will find the required certificates and vCluster config.
+Deprecated: Removed in 0.29.0.
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/integrations.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/integrations.mdx
index 74fc8992c..7d0b70d44 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/integrations.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/integrations.mdx
@@ -506,6 +506,21 @@ Enabled defines whether the external secret integration is enabled or not
+
+
+
+#### `version` required string {#integrations-externalSecrets-version}
+
+Version defines the version of the external secrets operator to use. If empty, the storage version will be used.
+
+
+
+
+
+
+
+
+
@@ -551,9 +566,33 @@ Sync defines the syncing behavior for the integration
-##### `externalSecrets` required object {#integrations-externalSecrets-sync-externalSecrets}
+##### `toHost` required object {#integrations-externalSecrets-sync-toHost}
+
+ToHost defines what resources are synced from the virtual cluster to the host
+
+
+
+
+
+
+
+
+
+##### `externalSecrets` required object {#integrations-externalSecrets-sync-toHost-externalSecrets}
+
+ExternalSecrets allows to configure if only a subset of ExternalSecrets matching a label selector should get synced from the virtual cluster to the host cluster.
+
+
+
+
+
+
+
+
+
+##### `selector` required object {#integrations-externalSecrets-sync-toHost-externalSecrets-selector}
+
-ExternalSecrets defines if external secrets should get synced from the virtual cluster to the host cluster.
@@ -563,14 +602,77 @@ ExternalSecrets defines if external secrets should get synced from the virtual c
-##### `enabled` required boolean true {#integrations-externalSecrets-sync-externalSecrets-enabled}
+##### `matchLabels` required object {#integrations-externalSecrets-sync-toHost-externalSecrets-selector-matchLabels}
+
-Enabled defines if this option should be enabled.
+
+
+
+
+
+
+
+##### `matchExpressions` required object[] {#integrations-externalSecrets-sync-toHost-externalSecrets-selector-matchExpressions}
+
+
+
+
+
+
+
+
+
+
+
+##### `key` required string {#integrations-externalSecrets-sync-toHost-externalSecrets-selector-matchExpressions-key}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `operator` required string {#integrations-externalSecrets-sync-toHost-externalSecrets-selector-matchExpressions-operator}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#integrations-externalSecrets-sync-toHost-externalSecrets-selector-matchExpressions-values}
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -581,7 +683,7 @@ Enabled defines if this option should be enabled.
-##### `stores` required object {#integrations-externalSecrets-sync-stores}
+##### `stores` required object {#integrations-externalSecrets-sync-toHost-stores}
Stores defines if secret stores should get synced from the virtual cluster to the host cluster and then bi-directionally.
@@ -590,10 +692,100 @@ Stores defines if secret stores should get synced from the virtual cluster to th
+
+
+
+##### `selector` required object {#integrations-externalSecrets-sync-toHost-stores-selector}
+
+
+
+
+
+
+
+
-##### `enabled` required boolean false {#integrations-externalSecrets-sync-stores-enabled}
+##### `matchLabels` required object {#integrations-externalSecrets-sync-toHost-stores-selector-matchLabels}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `matchExpressions` required object[] {#integrations-externalSecrets-sync-toHost-stores-selector-matchExpressions}
+
+
+
+
+
+
+
+
+
+
+
+##### `key` required string {#integrations-externalSecrets-sync-toHost-stores-selector-matchExpressions-key}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `operator` required string {#integrations-externalSecrets-sync-toHost-stores-selector-matchExpressions-operator}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#integrations-externalSecrets-sync-toHost-stores-selector-matchExpressions-values}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `enabled` required boolean {#integrations-externalSecrets-sync-toHost-stores-enabled}
Enabled defines if this option should be enabled.
@@ -607,11 +799,26 @@ Enabled defines if this option should be enabled.
+
+
+
-##### `clusterStores` required object {#integrations-externalSecrets-sync-clusterStores}
+##### `fromHost` required object {#integrations-externalSecrets-sync-fromHost}
+
+FromHost defines what resources are synced from the host cluster to the virtual cluster
+
+
+
+
+
+
+
+
+
+##### `clusterStores` required object {#integrations-externalSecrets-sync-fromHost-clusterStores}
ClusterStores defines if cluster secrets stores should get synced from the host cluster to the virtual cluster.
@@ -620,12 +827,24 @@ ClusterStores defines if cluster secrets stores should get synced from the host
+
+
+
+##### `selector` required object {#integrations-externalSecrets-sync-fromHost-clusterStores-selector}
+
+
+
+
+
+
+
+
-##### `enabled` required boolean false {#integrations-externalSecrets-sync-clusterStores-enabled}
+##### `matchLabels` required object {#integrations-externalSecrets-sync-fromHost-clusterStores-selector-matchLabels}
+
-Enabled defines if this option should be enabled.
@@ -638,9 +857,9 @@ Enabled defines if this option should be enabled.
-##### `selector` required object {#integrations-externalSecrets-sync-clusterStores-selector}
+##### `matchExpressions` required object[] {#integrations-externalSecrets-sync-fromHost-clusterStores-selector-matchExpressions}
+
-Selector defines what cluster stores should be synced
@@ -650,9 +869,60 @@ Selector defines what cluster stores should be synced
-##### `labels` required object {} {#integrations-externalSecrets-sync-clusterStores-selector-labels}
+##### `key` required string {#integrations-externalSecrets-sync-fromHost-clusterStores-selector-matchExpressions-key}
+
-Labels defines what labels should be looked for
+
+
+
+
+
+
+
+
+
+
+
+
+##### `operator` required string {#integrations-externalSecrets-sync-fromHost-clusterStores-selector-matchExpressions-operator}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#integrations-externalSecrets-sync-fromHost-clusterStores-selector-matchExpressions-values}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `enabled` required boolean {#integrations-externalSecrets-sync-fromHost-clusterStores-enabled}
+
+Enabled defines if this option should be enabled.
@@ -1017,6 +1287,21 @@ Enabled defines if this option should be enabled.
+
+
+
+
+
+
+
+### `netris` required object {#integrations-netris}
+
+Netris integration helps configuring netris networking for vCluster.
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/integrations/externalSecrets.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/integrations/externalSecrets.mdx
index 38465c539..17fcc8c3c 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/integrations/externalSecrets.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/integrations/externalSecrets.mdx
@@ -29,6 +29,21 @@ Enabled defines whether the external secret integration is enabled or not
+
+
+
+### `version` required string {#externalSecrets-version}
+
+Version defines the version of the external secrets operator to use. If empty, the storage version will be used.
+
+
+
+
+
+
+
+
+
@@ -74,9 +89,33 @@ Sync defines the syncing behavior for the integration
-#### `externalSecrets` required object {#externalSecrets-sync-externalSecrets}
+#### `toHost` required object {#externalSecrets-sync-toHost}
+
+ToHost defines what resources are synced from the virtual cluster to the host
+
+
+
+
+
+
+
+
+
+##### `externalSecrets` required object {#externalSecrets-sync-toHost-externalSecrets}
+
+ExternalSecrets allows to configure if only a subset of ExternalSecrets matching a label selector should get synced from the virtual cluster to the host cluster.
+
+
+
+
+
+
+
+
+
+##### `selector` required object {#externalSecrets-sync-toHost-externalSecrets-selector}
+
-ExternalSecrets defines if external secrets should get synced from the virtual cluster to the host cluster.
@@ -86,14 +125,77 @@ ExternalSecrets defines if external secrets should get synced from the virtual c
-##### `enabled` required boolean true {#externalSecrets-sync-externalSecrets-enabled}
+##### `matchLabels` required object {#externalSecrets-sync-toHost-externalSecrets-selector-matchLabels}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `matchExpressions` required object[] {#externalSecrets-sync-toHost-externalSecrets-selector-matchExpressions}
+
+
+
+
+
+
+
+
+
+
+
+##### `key` required string {#externalSecrets-sync-toHost-externalSecrets-selector-matchExpressions-key}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `operator` required string {#externalSecrets-sync-toHost-externalSecrets-selector-matchExpressions-operator}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#externalSecrets-sync-toHost-externalSecrets-selector-matchExpressions-values}
+
-Enabled defines if this option should be enabled.
+
+
+
+
+
+
@@ -104,7 +206,7 @@ Enabled defines if this option should be enabled.
-#### `stores` required object {#externalSecrets-sync-stores}
+##### `stores` required object {#externalSecrets-sync-toHost-stores}
Stores defines if secret stores should get synced from the virtual cluster to the host cluster and then bi-directionally.
@@ -113,10 +215,100 @@ Stores defines if secret stores should get synced from the virtual cluster to th
+
+
+
+##### `selector` required object {#externalSecrets-sync-toHost-stores-selector}
+
+
+
+
+
+
+
+
-##### `enabled` required boolean false {#externalSecrets-sync-stores-enabled}
+##### `matchLabels` required object {#externalSecrets-sync-toHost-stores-selector-matchLabels}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `matchExpressions` required object[] {#externalSecrets-sync-toHost-stores-selector-matchExpressions}
+
+
+
+
+
+
+
+
+
+
+
+##### `key` required string {#externalSecrets-sync-toHost-stores-selector-matchExpressions-key}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `operator` required string {#externalSecrets-sync-toHost-stores-selector-matchExpressions-operator}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#externalSecrets-sync-toHost-stores-selector-matchExpressions-values}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `enabled` required boolean {#externalSecrets-sync-toHost-stores-enabled}
Enabled defines if this option should be enabled.
@@ -130,11 +322,26 @@ Enabled defines if this option should be enabled.
+
+
+
+
+
+
+
+#### `fromHost` required object {#externalSecrets-sync-fromHost}
+
+FromHost defines what resources are synced from the host cluster to the virtual cluster
+
+
+
+
+
-#### `clusterStores` required object {#externalSecrets-sync-clusterStores}
+##### `clusterStores` required object {#externalSecrets-sync-fromHost-clusterStores}
ClusterStores defines if cluster secrets stores should get synced from the host cluster to the virtual cluster.
@@ -143,12 +350,24 @@ ClusterStores defines if cluster secrets stores should get synced from the host
+
+
+
+##### `selector` required object {#externalSecrets-sync-fromHost-clusterStores-selector}
+
+
+
+
+
+
+
+
-##### `enabled` required boolean false {#externalSecrets-sync-clusterStores-enabled}
+##### `matchLabels` required object {#externalSecrets-sync-fromHost-clusterStores-selector-matchLabels}
+
-Enabled defines if this option should be enabled.
@@ -161,21 +380,72 @@ Enabled defines if this option should be enabled.
-##### `selector` required object {#externalSecrets-sync-clusterStores-selector}
+##### `matchExpressions` required object[] {#externalSecrets-sync-fromHost-clusterStores-selector-matchExpressions}
+
+
+
+
+
+
+
+
+
+
+
+##### `key` required string {#externalSecrets-sync-fromHost-clusterStores-selector-matchExpressions-key}
+
-Selector defines what cluster stores should be synced
+
+
+
-##### `labels` required object {} {#externalSecrets-sync-clusterStores-selector-labels}
+##### `operator` required string {#externalSecrets-sync-fromHost-clusterStores-selector-matchExpressions-operator}
+
+
+
+
-Labels defines what labels should be looked for
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#externalSecrets-sync-fromHost-clusterStores-selector-matchExpressions-values}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `enabled` required boolean {#externalSecrets-sync-fromHost-clusterStores-enabled}
+
+Enabled defines if this option should be enabled.
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes.mdx
index 72eda3177..e9306702e 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes.mdx
@@ -26,22 +26,6 @@ Enabled defines if dedicated nodes should be enabled.
-
-
-
-### `importNodeBinaries` required boolean true {#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.
-
-
-
-
-
-
-
-
-
@@ -57,9 +41,10 @@ Kubelet holds kubelet configuration that is used for all nodes.
-#### `cgroupDriver` required string {#privateNodes-kubelet-cgroupDriver}
+#### `config` required object {#privateNodes-kubelet-config}
-CgroupDriver defines the cgroup driver to use for the kubelet.
+Config is the config for the kubelet that will be merged into the default kubelet config. More information can be found here:
+https://kubernetes.io/docs/reference/config-api/kubelet-config.v1beta1/#kubelet-config-k8s-io-v1beta1-KubeletConfiguration
@@ -144,21 +129,6 @@ NodeSelector is the node selector for the auto upgrade. If empty will select all
-
-
-
-#### `bundleRepository` required string {#privateNodes-autoUpgrade-bundleRepository}
-
-BundleRepository is the repository to use for downloading the Kubernetes bundle. Defaults to https://github.com/loft-sh/kubernetes/releases/download
-
-
-
-
-
-
-
-
-
@@ -219,12 +189,27 @@ JoinNode holds configuration specifically used during joining the node (see "kub
+
+
+
+#### `preInstallCommands` required string[] {#privateNodes-joinNode-preInstallCommands}
+
+PreInstallCommands are commands that will be executed before containerd, kubelet etc. is installed.
+
+
+
+
+
+
+
+
+
#### `preJoinCommands` required string[] {#privateNodes-joinNode-preJoinCommands}
-PreJoinCommands are commands that will be executed before the join process starts.
+PreJoinCommands are commands that will be executed before kubeadm join is executed.
@@ -239,7 +224,7 @@ PreJoinCommands are commands that will be executed before the join process start
#### `postJoinCommands` required string[] {#privateNodes-joinNode-postJoinCommands}
-PostJoinCommands are commands that will be executed after the join process starts.
+PostJoinCommands are commands that will be executed after kubeadm join is executed.
@@ -375,6 +360,21 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
+
+
+
+##### `overridePath` required boolean {#privateNodes-joinNode-containerd-registry-mirrors-overridePath}
+
+OverridePath is a boolean to override the path for the containerd registry mirror.
+
+
+
+
+
+
+
+
+
@@ -446,12 +446,81 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
+
+
+
+
+##### `overridePath` required boolean {#privateNodes-joinNode-containerd-registry-mirrors-hosts-overridePath}
+
+OverridePath is a boolean to override the path for the containerd registry mirror.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `auth` required {key: object} {#privateNodes-joinNode-containerd-registry-auth}
+
+Auth holds configuration for the containerd registry auth. See https://github.com/containerd/containerd/blob/main/docs/cri/registry.md#configure-registry-credentials for more details.
+
+
+
+
+
+
+
+
+
+##### `username` required string {#privateNodes-joinNode-containerd-registry-auth-username}
+
+Username is the username for the containerd registry.
+
+
+
+
+
+
+
+
+
+##### `password` required string {#privateNodes-joinNode-containerd-registry-auth-password}
+
+Password is the password for the containerd registry.
+
+
+
+
+
+
+
+
+
+##### `identityToken` required string {#privateNodes-joinNode-containerd-registry-auth-identityToken}
+
+IdentityToken is the token for the containerd registry.
+
+
+
+
+
@@ -459,14 +528,20 @@ Capabilities is a list of capabilities to enable for the containerd registry mir
-##### `importImages` required string[] {#privateNodes-joinNode-containerd-importImages}
+##### `auth` required string {#privateNodes-joinNode-containerd-registry-auth-auth}
-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.
+Auth is the auth config for the containerd registry.
+
+
+
+
+
+
@@ -689,6 +764,714 @@ If this field is unset kubeadm will default it to "IfNotPresent", or pull the re
+
+
+
+
+
+
+
+
+
+
+
+
+
+### `autoNodes` required object[] {#privateNodes-autoNodes}
+
+AutoNodes stores auto nodes configuration.
+
+
+
+
+
+
+
+
+
+#### `provider` required string {#privateNodes-autoNodes-provider}
+
+Provider is the node provider of the nodes in this pool.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `properties` required object {#privateNodes-autoNodes-properties}
+
+Properties are the node provider properties. This is a simple key value map and can contain things
+like region, subscription, etc. that is then used by the node provider to create the nodes and node environment.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `static` required object[] {#privateNodes-autoNodes-static}
+
+Static defines static node pools. Static node pools have a fixed size and are not scaled automatically.
+
+
+
+
+
+
+
+
+
+##### `name` required string {#privateNodes-autoNodes-static-name}
+
+Name is the name of this static nodePool
+
+
+
+
+
+
+
+
+
+
+
+
+##### `nodeTypeSelector` required object[] {#privateNodes-autoNodes-static-nodeTypeSelector}
+
+NodeTypeSelector filters the types of nodes that can be provisioned by this pool.
+All requirements must be met for a node type to be eligible.
+
+
+
+
+
+
+
+
+
+##### `property` required string {#privateNodes-autoNodes-static-nodeTypeSelector-property}
+
+Property is the property on the node type to select.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `operator` required string {#privateNodes-autoNodes-static-nodeTypeSelector-operator}
+
+Operator is the comparison operator, such as "In", "NotIn", "Exists". If empty, defaults to "In".
+
+
+
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#privateNodes-autoNodes-static-nodeTypeSelector-values}
+
+Values is the list of values to use for comparison. This is mutually exclusive with value.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string {#privateNodes-autoNodes-static-nodeTypeSelector-value}
+
+Value is the value to use for comparison. This is mutually exclusive with values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `taints` required object[] {#privateNodes-autoNodes-static-taints}
+
+Taints are the taints to apply to the nodes in this pool.
+
+
+
+
+
+
+
+
+
+##### `key` required string {#privateNodes-autoNodes-static-taints-key}
+
+Required. The taint key to be applied to a node.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string {#privateNodes-autoNodes-static-taints-value}
+
+The taint value corresponding to the taint key.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `effect` required string {#privateNodes-autoNodes-static-taints-effect}
+
+Required. The effect of the taint on pods
+that do not tolerate the taint.
+Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `nodeLabels` required object {#privateNodes-autoNodes-static-nodeLabels}
+
+NodeLabels are the labels to apply to the nodes in this pool.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `terminationGracePeriod` required string {#privateNodes-autoNodes-static-terminationGracePeriod}
+
+TerminationGracePeriod is the maximum duration the controller will wait before forcefully deleting the pods on a node, measured from when deletion is first initiated.
+
+Warning: this feature takes precedence over a Pod's terminationGracePeriodSeconds value, and bypasses any blocked PDBs or the karpenter.sh/do-not-disrupt annotation.
+
+This field is intended to be used by cluster administrators to enforce that nodes can be cycled within a given time period.
+When set, drifted nodes will begin draining even if there are pods blocking eviction. Draining will respect PDBs and the do-not-disrupt annotation until the TGP is reached.
+
+Karpenter will preemptively delete pods so their terminationGracePeriodSeconds align with the node's terminationGracePeriod.
+If a pod would be terminated without being granted its full terminationGracePeriodSeconds prior to the node timeout,
+that pod will be deleted at T = node timeout - pod terminationGracePeriodSeconds.
+
+The feature can also be used to allow maximum time limits for long-running jobs which can delay node termination with preStop hooks.
+Defaults to 30s. Set to Never to wait indefinitely for pods to be drained.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `quantity` required integer {#privateNodes-autoNodes-static-quantity}
+
+Quantity is the number of desired nodes in this pool.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#### `dynamic` required object[] {#privateNodes-autoNodes-dynamic}
+
+Dynamic defines dynamic node pools. Dynamic node pools are scaled automatically based on the requirements within the cluster.
+Karpenter is used under the hood to handle the scheduling of the nodes.
+
+
+
+
+
+
+
+
+
+##### `name` required string {#privateNodes-autoNodes-dynamic-name}
+
+Name is the name of this NodePool
+
+
+
+
+
+
+
+
+
+
+
+
+##### `nodeTypeSelector` required object[] {#privateNodes-autoNodes-dynamic-nodeTypeSelector}
+
+NodeTypeSelector filters the types of nodes that can be provisioned by this pool.
+All requirements must be met for a node type to be eligible.
+
+
+
+
+
+
+
+
+
+##### `property` required string {#privateNodes-autoNodes-dynamic-nodeTypeSelector-property}
+
+Property is the property on the node type to select.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `operator` required string {#privateNodes-autoNodes-dynamic-nodeTypeSelector-operator}
+
+Operator is the comparison operator, such as "In", "NotIn", "Exists". If empty, defaults to "In".
+
+
+
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#privateNodes-autoNodes-dynamic-nodeTypeSelector-values}
+
+Values is the list of values to use for comparison. This is mutually exclusive with value.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string {#privateNodes-autoNodes-dynamic-nodeTypeSelector-value}
+
+Value is the value to use for comparison. This is mutually exclusive with values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `taints` required object[] {#privateNodes-autoNodes-dynamic-taints}
+
+Taints are the taints to apply to the nodes in this pool.
+
+
+
+
+
+
+
+
+
+##### `key` required string {#privateNodes-autoNodes-dynamic-taints-key}
+
+Required. The taint key to be applied to a node.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string {#privateNodes-autoNodes-dynamic-taints-value}
+
+The taint value corresponding to the taint key.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `effect` required string {#privateNodes-autoNodes-dynamic-taints-effect}
+
+Required. The effect of the taint on pods
+that do not tolerate the taint.
+Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `nodeLabels` required object {#privateNodes-autoNodes-dynamic-nodeLabels}
+
+NodeLabels are the labels to apply to the nodes in this pool.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `limits` required object {#privateNodes-autoNodes-dynamic-limits}
+
+Limits specify the maximum resources that can be provisioned by this node pool,
+mapping to the 'limits' field in Karpenter's NodePool API.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `disruption` required object {#privateNodes-autoNodes-dynamic-disruption}
+
+Disruption contains the parameters that relate to Karpenter's disruption logic
+
+
+
+
+
+
+
+
+
+##### `consolidateAfter` required string {#privateNodes-autoNodes-dynamic-disruption-consolidateAfter}
+
+ConsolidateAfter is the duration the controller will wait
+before attempting to terminate nodes that are underutilized.
+Refer to ConsolidationPolicy for how underutilization is considered.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `consolidationPolicy` required string {#privateNodes-autoNodes-dynamic-disruption-consolidationPolicy}
+
+ConsolidationPolicy describes which nodes Karpenter can disrupt through its consolidation
+algorithm. This policy defaults to "WhenEmptyOrUnderutilized" if not specified
+
+
+
+
+
+
+
+
+
+
+
+
+##### `budgets` required object[] {#privateNodes-autoNodes-dynamic-disruption-budgets}
+
+Budgets is a list of Budgets.
+If there are multiple active budgets, Karpenter uses
+the most restrictive value. If left undefined,
+this will default to one budget with a value to 10%.
+
+
+
+
+
+
+
+
+
+##### `nodes` required string {#privateNodes-autoNodes-dynamic-disruption-budgets-nodes}
+
+Nodes dictates the maximum number of NodeClaims owned by this NodePool
+that can be terminating at once. This is calculated by counting nodes that
+have a deletion timestamp set, or are actively being deleted by Karpenter.
+This field is required when specifying a budget.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `schedule` required string {#privateNodes-autoNodes-dynamic-disruption-budgets-schedule}
+
+Schedule specifies when a budget begins being active, following
+the upstream cronjob syntax. If omitted, the budget is always active.
+Timezones are not supported.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `duration` required string {#privateNodes-autoNodes-dynamic-disruption-budgets-duration}
+
+Duration determines how long a Budget is active since each Schedule hit.
+Only minutes and hours are accepted, as cron does not work in seconds.
+If omitted, the budget is always active.
+This is required if Schedule is set.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `terminationGracePeriod` required string {#privateNodes-autoNodes-dynamic-terminationGracePeriod}
+
+TerminationGracePeriod is the maximum duration the controller will wait before forcefully deleting the pods on a node, measured from when deletion is first initiated.
+
+Warning: this feature takes precedence over a Pod's terminationGracePeriodSeconds value, and bypasses any blocked PDBs or the karpenter.sh/do-not-disrupt annotation.
+
+This field is intended to be used by cluster administrators to enforce that nodes can be cycled within a given time period.
+When set, drifted nodes will begin draining even if there are pods blocking eviction. Draining will respect PDBs and the do-not-disrupt annotation until the TGP is reached.
+
+Karpenter will preemptively delete pods so their terminationGracePeriodSeconds align with the node's terminationGracePeriod.
+If a pod would be terminated without being granted its full terminationGracePeriodSeconds prior to the node timeout,
+that pod will be deleted at T = node timeout - pod terminationGracePeriodSeconds.
+
+The feature can also be used to allow maximum time limits for long-running jobs which can delay node termination with preStop hooks.
+Defaults to 30s. Set to Never to wait indefinitely for pods to be drained.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `expireAfter` required string {#privateNodes-autoNodes-dynamic-expireAfter}
+
+The amount of time a Node can live on the cluster before being removed
+
+
+
+
+
+
+
+
+
+
+
+
+##### `weight` required integer {#privateNodes-autoNodes-dynamic-weight}
+
+Weight is the weight of this node pool.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### `vpn` required object {#privateNodes-vpn}
+
+VPN holds configuration for the private nodes vpn. This can be used to connect the private nodes to the control plane or
+connect the private nodes to each other if they are not running in the same network. Platform connection is required for the vpn to work.
+
+
+
+
+
+
+
+
+
+#### `enabled` required boolean {#privateNodes-vpn-enabled}
+
+Enabled defines if the private nodes vpn should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `nodeToNode` required object {#privateNodes-vpn-nodeToNode}
+
+NodeToNode holds configuration for the node to node vpn. This can be used to connect the private nodes to each other if they are not running in the same network.
+
+
+
+
+
+
+
+
+
+##### `enabled` required boolean {#privateNodes-vpn-nodeToNode-enabled}
+
+Enabled defines if the node to node vpn should be enabled.
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes/autoNodes.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes/autoNodes.mdx
new file mode 100755
index 000000000..92a5600e2
--- /dev/null
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes/autoNodes.mdx
@@ -0,0 +1,645 @@
+
+
+
+
+## `autoNodes` required object[] {#autoNodes}
+
+AutoNodes stores auto nodes configuration.
+
+
+
+
+
+
+
+
+
+### `provider` required string {#autoNodes-provider}
+
+Provider is the node provider of the nodes in this pool.
+
+
+
+
+
+
+
+
+
+
+
+
+### `properties` required object {#autoNodes-properties}
+
+Properties are the node provider properties. This is a simple key value map and can contain things
+like region, subscription, etc. that is then used by the node provider to create the nodes and node environment.
+
+
+
+
+
+
+
+
+
+
+
+
+### `static` required object[] {#autoNodes-static}
+
+Static defines static node pools. Static node pools have a fixed size and are not scaled automatically.
+
+
+
+
+
+
+
+
+
+#### `name` required string {#autoNodes-static-name}
+
+Name is the name of this static nodePool
+
+
+
+
+
+
+
+
+
+
+
+
+#### `nodeTypeSelector` required object[] {#autoNodes-static-nodeTypeSelector}
+
+NodeTypeSelector filters the types of nodes that can be provisioned by this pool.
+All requirements must be met for a node type to be eligible.
+
+
+
+
+
+
+
+
+
+##### `property` required string {#autoNodes-static-nodeTypeSelector-property}
+
+Property is the property on the node type to select.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `operator` required string {#autoNodes-static-nodeTypeSelector-operator}
+
+Operator is the comparison operator, such as "In", "NotIn", "Exists". If empty, defaults to "In".
+
+
+
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#autoNodes-static-nodeTypeSelector-values}
+
+Values is the list of values to use for comparison. This is mutually exclusive with value.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string {#autoNodes-static-nodeTypeSelector-value}
+
+Value is the value to use for comparison. This is mutually exclusive with values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#### `taints` required object[] {#autoNodes-static-taints}
+
+Taints are the taints to apply to the nodes in this pool.
+
+
+
+
+
+
+
+
+
+##### `key` required string {#autoNodes-static-taints-key}
+
+Required. The taint key to be applied to a node.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string {#autoNodes-static-taints-value}
+
+The taint value corresponding to the taint key.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `effect` required string {#autoNodes-static-taints-effect}
+
+Required. The effect of the taint on pods
+that do not tolerate the taint.
+Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#### `nodeLabels` required object {#autoNodes-static-nodeLabels}
+
+NodeLabels are the labels to apply to the nodes in this pool.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `terminationGracePeriod` required string {#autoNodes-static-terminationGracePeriod}
+
+TerminationGracePeriod is the maximum duration the controller will wait before forcefully deleting the pods on a node, measured from when deletion is first initiated.
+
+Warning: this feature takes precedence over a Pod's terminationGracePeriodSeconds value, and bypasses any blocked PDBs or the karpenter.sh/do-not-disrupt annotation.
+
+This field is intended to be used by cluster administrators to enforce that nodes can be cycled within a given time period.
+When set, drifted nodes will begin draining even if there are pods blocking eviction. Draining will respect PDBs and the do-not-disrupt annotation until the TGP is reached.
+
+Karpenter will preemptively delete pods so their terminationGracePeriodSeconds align with the node's terminationGracePeriod.
+If a pod would be terminated without being granted its full terminationGracePeriodSeconds prior to the node timeout,
+that pod will be deleted at T = node timeout - pod terminationGracePeriodSeconds.
+
+The feature can also be used to allow maximum time limits for long-running jobs which can delay node termination with preStop hooks.
+Defaults to 30s. Set to Never to wait indefinitely for pods to be drained.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `quantity` required integer {#autoNodes-static-quantity}
+
+Quantity is the number of desired nodes in this pool.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### `dynamic` required object[] {#autoNodes-dynamic}
+
+Dynamic defines dynamic node pools. Dynamic node pools are scaled automatically based on the requirements within the cluster.
+Karpenter is used under the hood to handle the scheduling of the nodes.
+
+
+
+
+
+
+
+
+
+#### `name` required string {#autoNodes-dynamic-name}
+
+Name is the name of this NodePool
+
+
+
+
+
+
+
+
+
+
+
+
+#### `nodeTypeSelector` required object[] {#autoNodes-dynamic-nodeTypeSelector}
+
+NodeTypeSelector filters the types of nodes that can be provisioned by this pool.
+All requirements must be met for a node type to be eligible.
+
+
+
+
+
+
+
+
+
+##### `property` required string {#autoNodes-dynamic-nodeTypeSelector-property}
+
+Property is the property on the node type to select.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `operator` required string {#autoNodes-dynamic-nodeTypeSelector-operator}
+
+Operator is the comparison operator, such as "In", "NotIn", "Exists". If empty, defaults to "In".
+
+
+
+
+
+
+
+
+
+
+
+
+##### `values` required string[] {#autoNodes-dynamic-nodeTypeSelector-values}
+
+Values is the list of values to use for comparison. This is mutually exclusive with value.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string {#autoNodes-dynamic-nodeTypeSelector-value}
+
+Value is the value to use for comparison. This is mutually exclusive with values.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#### `taints` required object[] {#autoNodes-dynamic-taints}
+
+Taints are the taints to apply to the nodes in this pool.
+
+
+
+
+
+
+
+
+
+##### `key` required string {#autoNodes-dynamic-taints-key}
+
+Required. The taint key to be applied to a node.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `value` required string {#autoNodes-dynamic-taints-value}
+
+The taint value corresponding to the taint key.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `effect` required string {#autoNodes-dynamic-taints-effect}
+
+Required. The effect of the taint on pods
+that do not tolerate the taint.
+Valid effects are NoSchedule, PreferNoSchedule and NoExecute.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#### `nodeLabels` required object {#autoNodes-dynamic-nodeLabels}
+
+NodeLabels are the labels to apply to the nodes in this pool.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `limits` required object {#autoNodes-dynamic-limits}
+
+Limits specify the maximum resources that can be provisioned by this node pool,
+mapping to the 'limits' field in Karpenter's NodePool API.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `disruption` required object {#autoNodes-dynamic-disruption}
+
+Disruption contains the parameters that relate to Karpenter's disruption logic
+
+
+
+
+
+
+
+
+
+##### `consolidateAfter` required string {#autoNodes-dynamic-disruption-consolidateAfter}
+
+ConsolidateAfter is the duration the controller will wait
+before attempting to terminate nodes that are underutilized.
+Refer to ConsolidationPolicy for how underutilization is considered.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `consolidationPolicy` required string {#autoNodes-dynamic-disruption-consolidationPolicy}
+
+ConsolidationPolicy describes which nodes Karpenter can disrupt through its consolidation
+algorithm. This policy defaults to "WhenEmptyOrUnderutilized" if not specified
+
+
+
+
+
+
+
+
+
+
+
+
+##### `budgets` required object[] {#autoNodes-dynamic-disruption-budgets}
+
+Budgets is a list of Budgets.
+If there are multiple active budgets, Karpenter uses
+the most restrictive value. If left undefined,
+this will default to one budget with a value to 10%.
+
+
+
+
+
+
+
+
+
+##### `nodes` required string {#autoNodes-dynamic-disruption-budgets-nodes}
+
+Nodes dictates the maximum number of NodeClaims owned by this NodePool
+that can be terminating at once. This is calculated by counting nodes that
+have a deletion timestamp set, or are actively being deleted by Karpenter.
+This field is required when specifying a budget.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `schedule` required string {#autoNodes-dynamic-disruption-budgets-schedule}
+
+Schedule specifies when a budget begins being active, following
+the upstream cronjob syntax. If omitted, the budget is always active.
+Timezones are not supported.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `duration` required string {#autoNodes-dynamic-disruption-budgets-duration}
+
+Duration determines how long a Budget is active since each Schedule hit.
+Only minutes and hours are accepted, as cron does not work in seconds.
+If omitted, the budget is always active.
+This is required if Schedule is set.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#### `terminationGracePeriod` required string {#autoNodes-dynamic-terminationGracePeriod}
+
+TerminationGracePeriod is the maximum duration the controller will wait before forcefully deleting the pods on a node, measured from when deletion is first initiated.
+
+Warning: this feature takes precedence over a Pod's terminationGracePeriodSeconds value, and bypasses any blocked PDBs or the karpenter.sh/do-not-disrupt annotation.
+
+This field is intended to be used by cluster administrators to enforce that nodes can be cycled within a given time period.
+When set, drifted nodes will begin draining even if there are pods blocking eviction. Draining will respect PDBs and the do-not-disrupt annotation until the TGP is reached.
+
+Karpenter will preemptively delete pods so their terminationGracePeriodSeconds align with the node's terminationGracePeriod.
+If a pod would be terminated without being granted its full terminationGracePeriodSeconds prior to the node timeout,
+that pod will be deleted at T = node timeout - pod terminationGracePeriodSeconds.
+
+The feature can also be used to allow maximum time limits for long-running jobs which can delay node termination with preStop hooks.
+Defaults to 30s. Set to Never to wait indefinitely for pods to be drained.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `expireAfter` required string {#autoNodes-dynamic-expireAfter}
+
+The amount of time a Node can live on the cluster before being removed
+
+
+
+
+
+
+
+
+
+
+
+
+#### `weight` required integer {#autoNodes-dynamic-weight}
+
+Weight is the weight of this node pool.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes/autoUpgrade.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes/autoUpgrade.mdx
index 3e3d66b85..aafa2eebd 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes/autoUpgrade.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes/autoUpgrade.mdx
@@ -71,21 +71,6 @@ NodeSelector is the node selector for the auto upgrade. If empty will select all
-
-
-
-### `bundleRepository` required string {#autoUpgrade-bundleRepository}
-
-BundleRepository is the repository to use for downloading the Kubernetes bundle. Defaults to https://github.com/loft-sh/kubernetes/releases/download
-
-
-
-
-
-
-
-
-
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes/vpn.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes/vpn.mdx
new file mode 100755
index 000000000..3526e3efd
--- /dev/null
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/privateNodes/vpn.mdx
@@ -0,0 +1,59 @@
+
+
+
+
+## `vpn` required object {#vpn}
+
+VPN holds configuration for the private nodes vpn. This can be used to connect the private nodes to the control plane or
+connect the private nodes to each other if they are not running in the same network. Platform connection is required for the vpn to work.
+
+
+
+
+
+
+
+
+
+### `enabled` required boolean {#vpn-enabled}
+
+Enabled defines if the private nodes vpn should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+### `nodeToNode` required object {#vpn-nodeToNode}
+
+NodeToNode holds configuration for the node to node vpn. This can be used to connect the private nodes to each other if they are not running in the same network.
+
+
+
+
+
+
+
+
+
+#### `enabled` required boolean {#vpn-nodeToNode-enabled}
+
+Enabled defines if the node to node vpn should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/rbac.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/rbac.mdx
index 5ff233da0..bb7ad9483 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/rbac.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/rbac.mdx
@@ -124,6 +124,37 @@ OverwriteRules will overwrite the cluster role rules completely.
+
+
+
+
+
+
+
+
+
+
+### `enableVolumeSnapshotRules` required object {#rbac-enableVolumeSnapshotRules}
+
+EnableVolumeSnapshotRules enables all required volume snapshot rules in the Role and
+ClusterRole.
+
+
+
+
+
+
+
+
+
+#### `enabled` required string|boolean {#rbac-enableVolumeSnapshotRules-enabled}
+
+Enabled defines if this option should be enabled.
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/sync.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/sync.mdx
index 2ff930755..5be5a5cdd 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/sync.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/sync.mdx
@@ -168,10 +168,10 @@ InitContainer holds extra options for the init container used by vCluster to rew
-
+
-##### `image` required string library/alpine:3.20 {#sync-toHost-pods-rewriteHosts-initContainer-image}
+##### `image` required object {#sync-toHost-pods-rewriteHosts-initContainer-image}
Image is the image virtual cluster should use to rewrite this FQDN.
@@ -179,6 +179,52 @@ Image is the image virtual cluster should use to rewrite this FQDN.
+
+
+
+
+##### `registry` required string {#sync-toHost-pods-rewriteHosts-initContainer-image-registry}
+
+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 {#sync-toHost-pods-rewriteHosts-initContainer-image-repository}
+
+Repository is the repository of the container image, e.g. my-repo/my-image
+
+
+
+
+
+
+
+
+
+
+
+
+##### `tag` required string {#sync-toHost-pods-rewriteHosts-initContainer-image-tag}
+
+Tag is the tag of the container image, and is the default version.
+
+
+
+
+
+
+
+
@@ -1560,6 +1606,219 @@ Labels treats the path value as a labels selector.
+
+
+
+#### `endpointSlices` required object {#sync-toHost-endpointSlices}
+
+EndpointSlices defines if endpointslices created within the virtual cluster should get synced to the host cluster.
+
+
+
+
+
+
+
+
+
+##### `enabled` required boolean {#sync-toHost-endpointSlices-enabled}
+
+Enabled defines if this option should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `patches` required object[] {#sync-toHost-endpointSlices-patches}
+
+Patches patch the resource according to the provided specification.
+
+
+
+
+
+
+
+
+
+##### `path` required string {#sync-toHost-endpointSlices-patches-path}
+
+Path is the path within the patch to target. If the path is not found within the patch, the patch is not applied.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `expression` required string {#sync-toHost-endpointSlices-patches-expression}
+
+Expression transforms the value according to the given JavaScript expression.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `reverseExpression` required string {#sync-toHost-endpointSlices-patches-reverseExpression}
+
+ReverseExpression transforms the value according to the given JavaScript expression.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `reference` required object {#sync-toHost-endpointSlices-patches-reference}
+
+Reference treats the path value as a reference to another object and will rewrite it based on the chosen mode
+automatically. In single-namespace mode this will translate the name to "vxxxxxxxxx" to avoid conflicts with
+other names, in multi-namespace mode this will not translate the name.
+
+
+
+
+
+
+
+
+
+##### `apiVersion` required string {#sync-toHost-endpointSlices-patches-reference-apiVersion}
+
+APIVersion is the apiVersion of the referenced object.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `apiVersionPath` required string {#sync-toHost-endpointSlices-patches-reference-apiVersionPath}
+
+APIVersionPath is optional relative path to use to determine the kind. If APIVersionPath is not found, will fallback to apiVersion.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `kind` required string {#sync-toHost-endpointSlices-patches-reference-kind}
+
+Kind is the kind of the referenced object.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `kindPath` required string {#sync-toHost-endpointSlices-patches-reference-kindPath}
+
+KindPath is the optional relative path to use to determine the kind. If KindPath is not found, will fallback to kind.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `namePath` required string {#sync-toHost-endpointSlices-patches-reference-namePath}
+
+NamePath is the optional relative path to the reference name within the object.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `namespacePath` required string {#sync-toHost-endpointSlices-patches-reference-namespacePath}
+
+NamespacePath is the optional relative path to the reference namespace within the object. If omitted or not found, namespacePath equals to the
+metadata.namespace path of the object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `labels` required object {#sync-toHost-endpointSlices-patches-labels}
+
+Labels treats the path value as a labels selector.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost.mdx
index 6c2c4dc24..40479b42f 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost.mdx
@@ -156,10 +156,10 @@ InitContainer holds extra options for the init container used by vCluster to rew
-
+
-##### `image` required string library/alpine:3.20 {#toHost-pods-rewriteHosts-initContainer-image}
+##### `image` required object {#toHost-pods-rewriteHosts-initContainer-image}
Image is the image virtual cluster should use to rewrite this FQDN.
@@ -167,6 +167,52 @@ Image is the image virtual cluster should use to rewrite this FQDN.
+
+
+
+
+##### `registry` required string {#toHost-pods-rewriteHosts-initContainer-image-registry}
+
+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 {#toHost-pods-rewriteHosts-initContainer-image-repository}
+
+Repository is the repository of the container image, e.g. my-repo/my-image
+
+
+
+
+
+
+
+
+
+
+
+
+##### `tag` required string {#toHost-pods-rewriteHosts-initContainer-image-tag}
+
+Tag is the tag of the container image, and is the default version.
+
+
+
+
+
+
+
+
@@ -1548,6 +1594,219 @@ Labels treats the path value as a labels selector.
+
+
+
+### `endpointSlices` required object {#toHost-endpointSlices}
+
+EndpointSlices defines if endpointslices created within the virtual cluster should get synced to the host cluster.
+
+
+
+
+
+
+
+
+
+#### `enabled` required boolean {#toHost-endpointSlices-enabled}
+
+Enabled defines if this option should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `patches` required object[] {#toHost-endpointSlices-patches}
+
+Patches patch the resource according to the provided specification.
+
+
+
+
+
+
+
+
+
+##### `path` required string {#toHost-endpointSlices-patches-path}
+
+Path is the path within the patch to target. If the path is not found within the patch, the patch is not applied.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `expression` required string {#toHost-endpointSlices-patches-expression}
+
+Expression transforms the value according to the given JavaScript expression.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `reverseExpression` required string {#toHost-endpointSlices-patches-reverseExpression}
+
+ReverseExpression transforms the value according to the given JavaScript expression.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `reference` required object {#toHost-endpointSlices-patches-reference}
+
+Reference treats the path value as a reference to another object and will rewrite it based on the chosen mode
+automatically. In single-namespace mode this will translate the name to "vxxxxxxxxx" to avoid conflicts with
+other names, in multi-namespace mode this will not translate the name.
+
+
+
+
+
+
+
+
+
+##### `apiVersion` required string {#toHost-endpointSlices-patches-reference-apiVersion}
+
+APIVersion is the apiVersion of the referenced object.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `apiVersionPath` required string {#toHost-endpointSlices-patches-reference-apiVersionPath}
+
+APIVersionPath is optional relative path to use to determine the kind. If APIVersionPath is not found, will fallback to apiVersion.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `kind` required string {#toHost-endpointSlices-patches-reference-kind}
+
+Kind is the kind of the referenced object.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `kindPath` required string {#toHost-endpointSlices-patches-reference-kindPath}
+
+KindPath is the optional relative path to use to determine the kind. If KindPath is not found, will fallback to kind.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `namePath` required string {#toHost-endpointSlices-patches-reference-namePath}
+
+NamePath is the optional relative path to the reference name within the object.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `namespacePath` required string {#toHost-endpointSlices-patches-reference-namespacePath}
+
+NamespacePath is the optional relative path to the reference namespace within the object. If omitted or not found, namespacePath equals to the
+metadata.namespace path of the object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+##### `labels` required object {#toHost-endpointSlices-patches-labels}
+
+Labels treats the path value as a labels selector.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost/endpointSlices.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost/endpointSlices.mdx
new file mode 100755
index 000000000..31baa53aa
--- /dev/null
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost/endpointSlices.mdx
@@ -0,0 +1,211 @@
+
+
+
+
+## `endpointSlices` required object {#endpointSlices}
+
+EndpointSlices defines if endpointslices created within the virtual cluster should get synced to the host cluster.
+
+
+
+
+
+
+
+
+
+### `enabled` required boolean {#endpointSlices-enabled}
+
+Enabled defines if this option should be enabled.
+
+
+
+
+
+
+
+
+
+
+
+
+### `patches` required object[] {#endpointSlices-patches}
+
+Patches patch the resource according to the provided specification.
+
+
+
+
+
+
+
+
+
+#### `path` required string {#endpointSlices-patches-path}
+
+Path is the path within the patch to target. If the path is not found within the patch, the patch is not applied.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `expression` required string {#endpointSlices-patches-expression}
+
+Expression transforms the value according to the given JavaScript expression.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `reverseExpression` required string {#endpointSlices-patches-reverseExpression}
+
+ReverseExpression transforms the value according to the given JavaScript expression.
+
+
+
+
+
+
+
+
+
+
+
+
+#### `reference` required object {#endpointSlices-patches-reference}
+
+Reference treats the path value as a reference to another object and will rewrite it based on the chosen mode
+automatically. In single-namespace mode this will translate the name to "vxxxxxxxxx" to avoid conflicts with
+other names, in multi-namespace mode this will not translate the name.
+
+
+
+
+
+
+
+
+
+##### `apiVersion` required string {#endpointSlices-patches-reference-apiVersion}
+
+APIVersion is the apiVersion of the referenced object.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `apiVersionPath` required string {#endpointSlices-patches-reference-apiVersionPath}
+
+APIVersionPath is optional relative path to use to determine the kind. If APIVersionPath is not found, will fallback to apiVersion.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `kind` required string {#endpointSlices-patches-reference-kind}
+
+Kind is the kind of the referenced object.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `kindPath` required string {#endpointSlices-patches-reference-kindPath}
+
+KindPath is the optional relative path to use to determine the kind. If KindPath is not found, will fallback to kind.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `namePath` required string {#endpointSlices-patches-reference-namePath}
+
+NamePath is the optional relative path to the reference name within the object.
+
+
+
+
+
+
+
+
+
+
+
+
+##### `namespacePath` required string {#endpointSlices-patches-reference-namespacePath}
+
+NamespacePath is the optional relative path to the reference namespace within the object. If omitted or not found, namespacePath equals to the
+metadata.namespace path of the object.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#### `labels` required object {#endpointSlices-patches-labels}
+
+Labels treats the path value as a labels selector.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost/pods.mdx b/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost/pods.mdx
index b22fa406d..ae5439ee8 100755
--- a/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost/pods.mdx
+++ b/vcluster_versioned_docs/version-0.26.0/_partials/config/sync/toHost/pods.mdx
@@ -144,10 +144,10 @@ InitContainer holds extra options for the init container used by vCluster to rew
-
+
-##### `image` required string library/alpine:3.20 {#pods-rewriteHosts-initContainer-image}
+##### `image` required object {#pods-rewriteHosts-initContainer-image}
Image is the image virtual cluster should use to rewrite this FQDN.
@@ -155,6 +155,52 @@ Image is the image virtual cluster should use to rewrite this FQDN.
+
+
+
+
+##### `registry` required string {#pods-rewriteHosts-initContainer-image-registry}
+
+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 {#pods-rewriteHosts-initContainer-image-repository}
+
+Repository is the repository of the container image, e.g. my-repo/my-image
+
+
+
+
+
+
+
+
+
+
+
+
+##### `tag` required string {#pods-rewriteHosts-initContainer-image-tag}
+
+Tag is the tag of the container image, and is the default version.
+
+
+
+
+
+
+
+