From 9a94d43daf17ee1395a4f75b48d3e082d971625f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nick=20J=C3=BCttner?= Date: Thu, 7 Nov 2024 11:09:24 +0100 Subject: [PATCH] Add support for release CRs (#391) * add support for release CRs * add support for release CRs * add support for release CRs * add support for release CRs * add support for release CRs * add support for release CRs * add support for release CRs * add support for release CRs * testing --- CHANGELOG.md | 11 ++++++++ examples/cluster-manifest.yaml | 5 ++-- helm/cluster-cloud-director/README.md | 16 ++++++++--- helm/cluster-cloud-director/ci/ci-values.yaml | 6 +++++ ...e-mirrors-with-auth-and-local-caching.yaml | 7 +++++ .../ci/test-wc-values.yaml | 7 +++++ .../templates/helpers/_controlplane.tpl | 12 +++++++-- .../templates/helpers/_workers.tpl | 14 +++++++--- .../cluster-cloud-director/values.schema.json | 27 ++++++++++++++----- helm/cluster-cloud-director/values.yaml | 6 ++--- 10 files changed, 89 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ed502a6..117f35f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### :warning: **Breaking change** :warning: + + - Support for Release CR's. + +
+ Migration steps + + * In ConfigMap `-userconfig` set `.Values.global.release` to the release version, e.g. `27.0.0`. + * In App `` set the `version` to an empty string. +
+ ## [0.62.0] - 2024-10-21 > [!WARNING] diff --git a/examples/cluster-manifest.yaml b/examples/cluster-manifest.yaml index 8c7b8321..0fe5e483 100644 --- a/examples/cluster-manifest.yaml +++ b/examples/cluster-manifest.yaml @@ -13,7 +13,8 @@ data: ntp: - 10.10.10.123 global: - release: "27.0.0" + release: + version: 27.0.0 connectivity: network: loadBalancers: @@ -88,4 +89,4 @@ spec: userConfig: configMap: name: testing-cluster-user-values - namespace: org-multi-project \ No newline at end of file + namespace: org-multi-project diff --git a/helm/cluster-cloud-director/README.md b/helm/cluster-cloud-director/README.md index c350e43b..19680e7f 100644 --- a/helm/cluster-cloud-director/README.md +++ b/helm/cluster-cloud-director/README.md @@ -94,7 +94,7 @@ Properties within the `.global.controlPlane` object | `global.controlPlane.machineTemplate.placementPolicy` | **VM placement policy** - Name of the VCD VM placement policy to use.|**Type:** `string`
| | `global.controlPlane.machineTemplate.sizingPolicy` | **Sizing policy** - Name of the VCD sizing policy to use.|**Type:** `string`
**Example:** `"m1.medium"`
| | `global.controlPlane.machineTemplate.storageProfile` | **Storage profile** - Name of the VCD storage profile to use.|**Type:** `string`
| -| `global.controlPlane.machineTemplate.template` | **Template** - Name of the template used to create the node VMs.|**Type:** `string`
**Default:** `"flatcar-stable-3815.2.2-kube-v1.27.14-gs"`| +| `global.controlPlane.machineTemplate.template` | **Template** - Name of the template used to create the node VMs.|**Type:** `string`
| | `global.controlPlane.oidc` | **OIDC authentication**|**Type:** `object`
| | `global.controlPlane.oidc.caPem` | **Certificate authority file** - Path to identity provider's CA certificate in PEM format.|**Type:** `string`
| | `global.controlPlane.oidc.clientId` | **Client ID** - OIDC client identifier to identify with.|**Type:** `string`
| @@ -138,7 +138,7 @@ Groups of worker nodes with identical configuration. | `global.nodePools.PATTERN.replicas` | **Number of nodes**|**Type:** `integer`
**Example:** `3`
**Key pattern:**
`PATTERN`=`^[a-z0-9-]{3,10}$`
| | `global.nodePools.PATTERN.sizingPolicy` | **Sizing policy** - Name of the VCD sizing policy to use.|**Type:** `string`
**Example:** `"m1.medium"`
**Key pattern:**
`PATTERN`=`^[a-z0-9-]{3,10}$`
| | `global.nodePools.PATTERN.storageProfile` | **Storage profile** - Name of the VCD storage profile to use.|**Type:** `string`
**Key pattern:**
`PATTERN`=`^[a-z0-9-]{3,10}$`
| -| `global.nodePools.PATTERN.template` | **Template** - Name of the template used to create the node VMs.|**Type:** `string`
**Key pattern:**
`PATTERN`=`^[a-z0-9-]{3,10}$`
**Default:** `"flatcar-stable-3815.2.2-kube-v1.27.14-gs"`| +| `global.nodePools.PATTERN.template` | **Template** - Name of the template used to create the node VMs.|**Type:** `string`
**Key pattern:**
`PATTERN`=`^[a-z0-9-]{3,10}$`
| | `global.nodePools.worker` | **Default nodePool**|**Type:** `object`
| | `global.nodePools.worker.catalog` | **Catalog** - Name of the VCD catalog in which the VM template is stored.|**Type:** `string`
**Default:** `"giantswarm"`| | `global.nodePools.worker.customNodeLabels` | **Node labels**|**Type:** `array`
| @@ -153,7 +153,7 @@ Groups of worker nodes with identical configuration. | `global.nodePools.worker.replicas` | **Number of nodes**|**Type:** `integer`
**Example:** `3`
| | `global.nodePools.worker.sizingPolicy` | **Sizing policy** - Name of the VCD sizing policy to use.|**Type:** `string`
**Example:** `"m1.medium"`
| | `global.nodePools.worker.storageProfile` | **Storage profile** - Name of the VCD storage profile to use.|**Type:** `string`
| -| `global.nodePools.worker.template` | **Template** - Name of the template used to create the node VMs.|**Type:** `string`
**Default:** `"flatcar-stable-3815.2.2-kube-v1.27.14-gs"`| +| `global.nodePools.worker.template` | **Template** - Name of the template used to create the node VMs.|**Type:** `string`
| ### Other global @@ -168,6 +168,14 @@ Properties within the `.global.podSecurityStandards` object | :----------- | :-------------- | :--------------- | | `global.podSecurityStandards.enforced` | **Enforced Pod Security Standards** - Use PSSs instead of PSPs.|**Type:** `boolean`
**Default:** `true`| +### Release +Properties within the `.global.release` object +Information about the workload cluster release. + +| **Property** | **Description** | **More Details** | +| :----------- | :-------------- | :--------------- | +| `global.release.version` | **Version**|**Type:** `string`
| + ### VMware Cloud Director (VCD) settings Properties within the `.global.providerSpecific` object @@ -201,7 +209,7 @@ Properties within the `.global.providerSpecific` object | **Property** | **Description** | **More Details** | | :----------- | :-------------- | :--------------- | | `baseDomain` | **Base DNS domain**|**Type:** `string`
| -| `cluster` | **Cluster** - Helm values for the provider-independent cluster chart.|**Type:** `object`
**Default:** `{"providerIntegration":{"apps":{"capiNodeLabeler":{"enable":true},"certExporter":{"configTemplateName":"cloudDirectorCertExporterHelmValues","enable":true},"certManager":{"configTemplateName":"cloudDirectorCertManagerHelmValues","enable":true},"chartOperatorExtensions":{"enable":true},"cilium":{"configTemplateName":"cloudDirectorCiliumHelmValues","enable":true},"ciliumServiceMonitors":{"enable":true},"coreDns":{"enable":true},"etcdKubernetesResourcesCountExporter":{"enable":true},"k8sDnsNodeCache":{"enable":true},"metricsServer":{"enable":true},"netExporter":{"enable":true},"networkPolicies":{"configTemplateName":"cloudDirectorNetworkPoliciesHelmValues","enable":true},"nodeExporter":{"configTemplateName":"cloudDirectorNodeExporterHelmValues","enable":true},"observabilityBundle":{"enable":true},"observabilityPolicies":{"enable":true},"securityBundle":{"enable":true},"teleportKubeAgent":{"enable":true},"verticalPodAutoscaler":{"enable":true},"verticalPodAutoscalerCrd":{"enable":true}},"controlPlane":{"resources":{"infrastructureMachineTemplate":{"group":"infrastructure.cluster.x-k8s.io","kind":"VCDMachineTemplate","version":"v1beta2"},"infrastructureMachineTemplateSpecTemplateName":"controlplane-vcdmachinetemplate-spec"}},"environmentVariables":{"hostName":"COREOS_CUSTOM_HOSTNAME","ipv4":"COREOS_CUSTOM_IPV4"},"kubeadmConfig":{"enableGiantswarmUser":true,"files":[{"contentFrom":{"secret":{"key":"set-hostname.sh","name":"provider-specific-files-1","prependClusterNameAsPrefix":true}},"path":"/opt/bin/set-hostname.sh","permissions":"0755"}],"ignition":{"containerLinuxConfig":{"additionalConfig":{"systemd":{"units":[{"contents":{"after":["network-online.target"],"install":{"wantedBy":["multi-user.target"]},"requires":["network-online.target"],"service":{"execStart":["/usr/bin/bash -cv 'echo \"$(\"$(find /usr/bin /usr/share/oem -name vmtoolsd -type f -executable 2\u003e/dev/null | head -n 1)\" --cmd \"info-get guestinfo.ignition.network\")\" \u003e /opt/bin/set-networkd-units.sh'","/usr/bin/bash -cv 'chmod u+x /opt/bin/set-networkd-units.sh'","/opt/bin/set-networkd-units.sh"],"remainAfterExit":"yes","type":"oneshot"},"unit":{"description":"Install the systemd-networkd interface configuration."}},"enabled":true,"name":"set-networkd-units.service"},{"contents":{"install":{"wantedBy":["multi-user.target"]},"service":{"additionalFields":"{{- if $.global.connectivity.network.staticRoutes -}}\nExecStart=/usr/bin/bash -cv 'sleep 3'\n{{- range $.global.connectivity.network.staticRoutes }}\nExecStart=/usr/bin/bash -cv 'ip route add {{ .destination }} via {{ .via }}'\n{{- end }}\n{{- else -}}\nExecStart=/usr/bin/bash -cv 'echo \"No static routes provided, exiting.\"'\n{{- end -}}","remainAfterExit":"yes","type":"oneshot"},"unit":{"after":["set-networkd-units.service","systemd-networkd.service"],"bindsTo":"systemd-networkd.service","description":"Add static network routes."}},"enabled":true,"name":"static-routes.service"},{"contents":{"install":{"wantedBy":["multi-user.target"]},"service":{"environment":["OUTPUT=/run/metadata/coreos"],"execStart":["/usr/bin/mkdir --parent /run/metadata","/usr/bin/bash -cv 'echo \"COREOS_CUSTOM_HOSTNAME=$(\"$(find /usr/bin /usr/share/oem -name vmtoolsd -type f -executable 2\u003e/dev/null | head -n 1)\" --cmd \"info-get guestinfo.ignition.vmname\")\" \u003e ${OUTPUT}'","/usr/bin/bash -cv 'echo \"COREOS_CUSTOM_IPV4=$(ip -4 addr show ens192 | awk \\'/inet / {print $2}\\' | cut -d \\'/\\' -f1)\" \u003e\u003e ${OUTPUT}'"],"remainAfterExit":"yes","restart":"on-failure","type":"oneshot"},"unit":{"after":["set-networkd-units.service"],"description":"Provides CoreOS metadata for dependent services."}},"enabled":true,"name":"coreos-metadata.service"},{"contents":{"install":{"wantedBy":["multi-user.target"]},"service":{"environmentFile":["/run/metadata/coreos"],"execStart":["/opt/bin/set-hostname.sh"],"remainAfterExit":"yes","type":"oneshot"},"unit":{"after":["coreos-metadata.service"],"before":["teleport.service"],"description":"Set machine hostname","requires":["coreos-metadata.service"]}},"enabled":true,"name":"set-hostname.service"},{"contents":{"install":{"wantedBy":["default.target"]},"service":{"execStart":["/usr/sbin/ethtool -K ens192 tx-udp_tnl-csum-segmentation off","/usr/sbin/ethtool -K ens192 tx-udp_tnl-segmentation off"],"remainAfterExit":"yes","type":"oneshot"},"unit":{"after":["network.target"],"description":"Disable TCP segmentation offloading"}},"enabled":true,"name":"ethtool-segmentation.service"},{"dropins":[{"contents":"[Unit]\nUpholds=static-routes.service","name":"10-static-routes-dependency.conf"}],"enabled":true,"name":"systemd-networkd.service"},{"contents":{"install":{"wantedBy":["multi-user.target"]},"service":{"additionalFields":"{{- if $.global.connectivity.network.hostEntries -}}\n# Helm templating is a nightmare\n{{- range $.global.connectivity.network.hostEntries }}\nExecStart=/usr/bin/bash -cv 'echo {{ .ip }} {{ .fqdn }} \u003e\u003e /etc/hosts'\n{{- end }}\n{{- else -}}\nExecStart=/usr/bin/bash -cv 'echo \"No host entries provided, exiting.\"'\n{{- end -}}","remainAfterExit":"yes","type":"oneshot"},"unit":{"after":["set-hostname.service"],"description":"Add /etc/hosts entries.","requires":["set-hostname.service"]}},"enabled":true,"name":"etc-hosts-entries.service"}]}}}},"postKubeadmCommands":["usermod -aG root nobody"]},"kubernetesVersion":"1.27.14","provider":"cloud-director","resourcesApi":{"bastionResourceEnabled":false,"cleanupHelmReleaseResourcesEnabled":true,"helmRepositoryResourcesEnabled":true,"infrastructureCluster":{"group":"infrastructure.cluster.x-k8s.io","kind":"VCDCluster","version":"v1beta2"},"infrastructureMachinePool":{"group":"infrastructure.cluster.x-k8s.io","kind":"VCDMachineTemplate","version":"v1beta2"},"machineHealthCheckResourceEnabled":false,"nodePoolKind":"MachineDeployment"},"workers":{"defaultNodePools":{"def00":{"catalog":"giantswarm","diskSize":"30","replicas":2,"sizingPolicy":"m1.large","template":"flatcar-stable-3815.2.2-kube-v1.27.14-gs"}},"resources":{"infrastructureMachineTemplateSpecTemplateName":"worker-vcdmachinetemplate-spec"}}}}`| +| `cluster` | **Cluster** - Helm values for the provider-independent cluster chart.|**Type:** `object`
**Default:** `{"providerIntegration":{"apps":{"capiNodeLabeler":{"enable":true},"certExporter":{"configTemplateName":"cloudDirectorCertExporterHelmValues","enable":true},"certManager":{"configTemplateName":"cloudDirectorCertManagerHelmValues","enable":true},"chartOperatorExtensions":{"enable":true},"cilium":{"configTemplateName":"cloudDirectorCiliumHelmValues","enable":true},"ciliumServiceMonitors":{"enable":true},"coreDns":{"enable":true},"etcdKubernetesResourcesCountExporter":{"enable":true},"k8sDnsNodeCache":{"enable":true},"metricsServer":{"enable":true},"netExporter":{"enable":true},"networkPolicies":{"configTemplateName":"cloudDirectorNetworkPoliciesHelmValues","enable":true},"nodeExporter":{"configTemplateName":"cloudDirectorNodeExporterHelmValues","enable":true},"observabilityBundle":{"enable":true},"observabilityPolicies":{"enable":true},"securityBundle":{"enable":true},"teleportKubeAgent":{"enable":true},"verticalPodAutoscaler":{"enable":true},"verticalPodAutoscalerCrd":{"enable":true}},"controlPlane":{"resources":{"infrastructureMachineTemplate":{"group":"infrastructure.cluster.x-k8s.io","kind":"VCDMachineTemplate","version":"v1beta2"},"infrastructureMachineTemplateSpecTemplateName":"controlplane-vcdmachinetemplate-spec"}},"environmentVariables":{"hostName":"COREOS_CUSTOM_HOSTNAME","ipv4":"COREOS_CUSTOM_IPV4"},"kubeadmConfig":{"enableGiantswarmUser":true,"files":[{"contentFrom":{"secret":{"key":"set-hostname.sh","name":"provider-specific-files-1","prependClusterNameAsPrefix":true}},"path":"/opt/bin/set-hostname.sh","permissions":"0755"}],"ignition":{"containerLinuxConfig":{"additionalConfig":{"systemd":{"units":[{"contents":{"after":["network-online.target"],"install":{"wantedBy":["multi-user.target"]},"requires":["network-online.target"],"service":{"execStart":["/usr/bin/bash -cv 'echo \"$(\"$(find /usr/bin /usr/share/oem -name vmtoolsd -type f -executable 2\u003e/dev/null | head -n 1)\" --cmd \"info-get guestinfo.ignition.network\")\" \u003e /opt/bin/set-networkd-units.sh'","/usr/bin/bash -cv 'chmod u+x /opt/bin/set-networkd-units.sh'","/opt/bin/set-networkd-units.sh"],"remainAfterExit":"yes","type":"oneshot"},"unit":{"description":"Install the systemd-networkd interface configuration."}},"enabled":true,"name":"set-networkd-units.service"},{"contents":{"install":{"wantedBy":["multi-user.target"]},"service":{"additionalFields":"{{- if $.global.connectivity.network.staticRoutes -}}\nExecStart=/usr/bin/bash -cv 'sleep 3'\n{{- range $.global.connectivity.network.staticRoutes }}\nExecStart=/usr/bin/bash -cv 'ip route add {{ .destination }} via {{ .via }}'\n{{- end }}\n{{- else -}}\nExecStart=/usr/bin/bash -cv 'echo \"No static routes provided, exiting.\"'\n{{- end -}}","remainAfterExit":"yes","type":"oneshot"},"unit":{"after":["set-networkd-units.service","systemd-networkd.service"],"bindsTo":"systemd-networkd.service","description":"Add static network routes."}},"enabled":true,"name":"static-routes.service"},{"contents":{"install":{"wantedBy":["multi-user.target"]},"service":{"environment":["OUTPUT=/run/metadata/coreos"],"execStart":["/usr/bin/mkdir --parent /run/metadata","/usr/bin/bash -cv 'echo \"COREOS_CUSTOM_HOSTNAME=$(\"$(find /usr/bin /usr/share/oem -name vmtoolsd -type f -executable 2\u003e/dev/null | head -n 1)\" --cmd \"info-get guestinfo.ignition.vmname\")\" \u003e ${OUTPUT}'","/usr/bin/bash -cv 'echo \"COREOS_CUSTOM_IPV4=$(ip -4 addr show ens192 | awk \\'/inet / {print $2}\\' | cut -d \\'/\\' -f1)\" \u003e\u003e ${OUTPUT}'"],"remainAfterExit":"yes","restart":"on-failure","type":"oneshot"},"unit":{"after":["set-networkd-units.service"],"description":"Provides CoreOS metadata for dependent services."}},"enabled":true,"name":"coreos-metadata.service"},{"contents":{"install":{"wantedBy":["multi-user.target"]},"service":{"environmentFile":["/run/metadata/coreos"],"execStart":["/opt/bin/set-hostname.sh"],"remainAfterExit":"yes","type":"oneshot"},"unit":{"after":["coreos-metadata.service"],"before":["teleport.service"],"description":"Set machine hostname","requires":["coreos-metadata.service"]}},"enabled":true,"name":"set-hostname.service"},{"contents":{"install":{"wantedBy":["default.target"]},"service":{"execStart":["/usr/sbin/ethtool -K ens192 tx-udp_tnl-csum-segmentation off","/usr/sbin/ethtool -K ens192 tx-udp_tnl-segmentation off"],"remainAfterExit":"yes","type":"oneshot"},"unit":{"after":["network.target"],"description":"Disable TCP segmentation offloading"}},"enabled":true,"name":"ethtool-segmentation.service"},{"dropins":[{"contents":"[Unit]\nUpholds=static-routes.service","name":"10-static-routes-dependency.conf"}],"enabled":true,"name":"systemd-networkd.service"},{"contents":{"install":{"wantedBy":["multi-user.target"]},"service":{"additionalFields":"{{- if $.global.connectivity.network.hostEntries -}}\n# Helm templating is a nightmare\n{{- range $.global.connectivity.network.hostEntries }}\nExecStart=/usr/bin/bash -cv 'echo {{ .ip }} {{ .fqdn }} \u003e\u003e /etc/hosts'\n{{- end }}\n{{- else -}}\nExecStart=/usr/bin/bash -cv 'echo \"No host entries provided, exiting.\"'\n{{- end -}}","remainAfterExit":"yes","type":"oneshot"},"unit":{"after":["set-hostname.service"],"description":"Add /etc/hosts entries.","requires":["set-hostname.service"]}},"enabled":true,"name":"etc-hosts-entries.service"}]}}}},"postKubeadmCommands":["usermod -aG root nobody"]},"provider":"cloud-director","resourcesApi":{"bastionResourceEnabled":false,"cleanupHelmReleaseResourcesEnabled":true,"helmRepositoryResourcesEnabled":true,"infrastructureCluster":{"group":"infrastructure.cluster.x-k8s.io","kind":"VCDCluster","version":"v1beta2"},"infrastructureMachinePool":{"group":"infrastructure.cluster.x-k8s.io","kind":"VCDMachineTemplate","version":"v1beta2"},"machineHealthCheckResourceEnabled":false,"nodePoolKind":"MachineDeployment"},"useReleases":true,"workers":{"defaultNodePools":{"def00":{"catalog":"giantswarm","diskSize":"30","replicas":2,"sizingPolicy":"m1.large"}},"resources":{"infrastructureMachineTemplateSpecTemplateName":"worker-vcdmachinetemplate-spec"}}}}`| | `cluster-shared` | **Library chart**|**Type:** `object`
| | `managementCluster` | **Management cluster name** - The Cluster API management cluster that manages this cluster.|**Type:** `string`
| | `provider` | **Cluster API provider name**|**Type:** `string`
| diff --git a/helm/cluster-cloud-director/ci/ci-values.yaml b/helm/cluster-cloud-director/ci/ci-values.yaml index 8caf3d0c..c8477ebd 100644 --- a/helm/cluster-cloud-director/ci/ci-values.yaml +++ b/helm/cluster-cloud-director/ci/ci-values.yaml @@ -42,7 +42,13 @@ global: userContext: secretRef: secretName: vcd-credentials + release: + version: 27.0.0 cluster: + internal: + ephemeralConfiguration: + offlineTesting: + renderWithoutReleaseResource: true providerIntegration: components: systemd: diff --git a/helm/cluster-cloud-director/ci/test-multiple-mirrors-with-auth-and-local-caching.yaml b/helm/cluster-cloud-director/ci/test-multiple-mirrors-with-auth-and-local-caching.yaml index ba8f202d..7abfa1e9 100644 --- a/helm/cluster-cloud-director/ci/test-multiple-mirrors-with-auth-and-local-caching.yaml +++ b/helm/cluster-cloud-director/ci/test-multiple-mirrors-with-auth-and-local-caching.yaml @@ -51,3 +51,10 @@ global: userContext: secretRef: secretName: vcd-credentials + release: + version: 27.0.0 +cluster: + internal: + ephemeralConfiguration: + offlineTesting: + renderWithoutReleaseResource: true diff --git a/helm/cluster-cloud-director/ci/test-wc-values.yaml b/helm/cluster-cloud-director/ci/test-wc-values.yaml index 10b419fb..564e15bd 100644 --- a/helm/cluster-cloud-director/ci/test-wc-values.yaml +++ b/helm/cluster-cloud-director/ci/test-wc-values.yaml @@ -35,3 +35,10 @@ global: userContext: secretRef: secretName: vcd-credentials + release: + version: 27.0.0 +cluster: + internal: + ephemeralConfiguration: + offlineTesting: + renderWithoutReleaseResource: true diff --git a/helm/cluster-cloud-director/templates/helpers/_controlplane.tpl b/helm/cluster-cloud-director/templates/helpers/_controlplane.tpl index eb1bc3d0..d445e249 100644 --- a/helm/cluster-cloud-director/templates/helpers/_controlplane.tpl +++ b/helm/cluster-cloud-director/templates/helpers/_controlplane.tpl @@ -6,9 +6,17 @@ Generates template spec for controlplane machines. {{- $pool = set $pool "diskSize" ( include "calculateDiskBytes" $pool.diskSizeGB ) -}} {{- $pool = unset $pool "diskSizeGB" -}} -{{- if $pool }} +{{- $osName := include "cluster.os.name" $ }} +{{- $osReleaseChannel := include "cluster.os.releaseChannel" $ }} +{{- $osVersion := include "cluster.os.version" $ }} +{{- $kubernetesVersion := include "cluster.component.kubernetes.version" $ }} +{{- $osToolingVersion := include "cluster.os.tooling.version" $ }} + +{{- /* Modify $pool.template here */ -}} +{{- $templateValue := printf "%s-%s-%s-kube-%s-tooling-%s-gs" $osName $osReleaseChannel $osVersion $kubernetesVersion $osToolingVersion -}} +{{- $_ := set $pool "template" $templateValue -}} + {{- $pool | toYaml }} -{{- end }} vmNamingTemplate: {{ $.Values.global.providerSpecific.vmNamingTemplate }} {{- if $.Values.global.connectivity.network.extraOvdcNetworks }} extraOvdcNetworks: diff --git a/helm/cluster-cloud-director/templates/helpers/_workers.tpl b/helm/cluster-cloud-director/templates/helpers/_workers.tpl index 0e6c9625..a971899c 100644 --- a/helm/cluster-cloud-director/templates/helpers/_workers.tpl +++ b/helm/cluster-cloud-director/templates/helpers/_workers.tpl @@ -10,9 +10,17 @@ Generates template spec for worker machines. {{- $pool = unset $pool "customNodeLabels" -}} {{- $pool = unset $pool "customNodeTaints" -}} -{{- if $pool }} +{{- $osName := include "cluster.os.name" $ }} +{{- $osReleaseChannel := include "cluster.os.releaseChannel" $ }} +{{- $osVersion := include "cluster.os.version" $ }} +{{- $kubernetesVersion := include "cluster.component.kubernetes.version" $ }} +{{- $osToolingVersion := include "cluster.os.tooling.version" $ }} + +{{- /* Modify $pool.template here */ -}} +{{- $templateValue := printf "%s-%s-%s-kube-%s-tooling-%s-gs" $osName $osReleaseChannel $osVersion $kubernetesVersion $osToolingVersion -}} +{{- $_ := set $pool "template" $templateValue -}} + {{- $pool | toYaml }} -{{- end }} vmNamingTemplate: {{ $.Values.global.providerSpecific.vmNamingTemplate }} {{- if $.Values.global.connectivity.network.extraOvdcNetworks }} extraOvdcNetworks: @@ -33,4 +41,4 @@ MachineDeployments. Used when templating VCDMachineTemplates. {{- $_ := set $nodeMap $index $pool -}} {{- end -}} {{ toYaml $nodeMap }} -{{- end }} \ No newline at end of file +{{- end }} diff --git a/helm/cluster-cloud-director/values.schema.json b/helm/cluster-cloud-director/values.schema.json index 980f11d4..5ea9d5e6 100644 --- a/helm/cluster-cloud-director/values.schema.json +++ b/helm/cluster-cloud-director/values.schema.json @@ -123,8 +123,7 @@ "template": { "type": "string", "title": "Template", - "description": "Name of the template used to create the node VMs.", - "default": "flatcar-stable-3815.2.2-kube-v1.27.14-gs" + "description": "Name of the template used to create the node VMs." } }, "type": "object", @@ -423,7 +422,6 @@ "usermod -aG root nobody" ] }, - "kubernetesVersion": "1.27.14", "provider": "cloud-director", "resourcesApi": { "bastionResourceEnabled": false, @@ -442,14 +440,14 @@ "machineHealthCheckResourceEnabled": false, "nodePoolKind": "MachineDeployment" }, + "useReleases": true, "workers": { "defaultNodePools": { "def00": { "catalog": "giantswarm", "diskSize": "30", "replicas": 2, - "sizingPolicy": "m1.large", - "template": "flatcar-stable-3815.2.2-kube-v1.27.14-gs" + "sizingPolicy": "m1.large" } }, "resources": { @@ -526,6 +524,8 @@ "type": "object", "title": "Global parameters", "required": [ + "metadata", + "release", "connectivity", "controlPlane", "nodePools" @@ -811,8 +811,7 @@ "type": "object", "title": "Template to define control plane nodes", "required": [ - "catalog", - "template" + "catalog" ], "additionalProperties": false, "properties": { @@ -1201,6 +1200,20 @@ ] } } + }, + "release": { + "type": "object", + "title": "Release", + "description": "Information about the workload cluster release.", + "required": [ + "version" + ], + "properties": { + "version": { + "type": "string", + "title": "Version" + } + } } } }, diff --git a/helm/cluster-cloud-director/values.yaml b/helm/cluster-cloud-director/values.yaml index 8bbe2161..34ec0cd9 100644 --- a/helm/cluster-cloud-director/values.yaml +++ b/helm/cluster-cloud-director/values.yaml @@ -204,7 +204,6 @@ cluster: name: etc-hosts-entries.service postKubeadmCommands: - usermod -aG root nobody - kubernetesVersion: 1.27.14 provider: cloud-director resourcesApi: bastionResourceEnabled: false @@ -220,6 +219,7 @@ cluster: version: v1beta2 machineHealthCheckResourceEnabled: false nodePoolKind: MachineDeployment + useReleases: true workers: defaultNodePools: def00: @@ -227,7 +227,6 @@ cluster: diskSize: "30" replicas: 2 sizingPolicy: m1.large - template: flatcar-stable-3815.2.2-kube-v1.27.14-gs resources: infrastructureMachineTemplateSpecTemplateName: worker-vcdmachinetemplate-spec connectivity: @@ -253,7 +252,6 @@ global: controlPlane: machineTemplate: catalog: giantswarm - template: flatcar-stable-3815.2.2-kube-v1.27.14-gs oidc: {} replicas: 1 metadata: @@ -263,7 +261,6 @@ global: worker: catalog: giantswarm replicas: 2 - template: flatcar-stable-3815.2.2-kube-v1.27.14-gs podSecurityStandards: enforced: true providerSpecific: @@ -283,6 +280,7 @@ global: userContext: secretRef: {} vmBootstrapFormat: ignition + release: {} internal: kubectlImage: name: giantswarm/kubectl