Skip to content

Commit e850a95

Browse files
Support SKE OS versions auto and forceful updates (#364)
* Deprecate os_version and add os_version_used * Add os_version_min field * Draft implementation for os_version_min * Finish implementation * Fix mapFields * Update stackit/internal/services/ske/cluster/resource.go Co-authored-by: Diogo Ferrão <diogo.ferrao@freiheit.com> * Update stackit/internal/services/ske/cluster/resource.go Co-authored-by: Diogo Ferrão <diogo.ferrao@freiheit.com> * Update stackit/internal/services/ske/cluster/resource.go Co-authored-by: Diogo Ferrão <diogo.ferrao@freiheit.com> * Update stackit/internal/services/ske/cluster/resource.go Co-authored-by: Diogo Ferrão <diogo.ferrao@freiheit.com> * Improve descriptions * Improve variable names * Fix lint * Extend acc test, generate docs * Don't select automatically preview versions * Update acc test * Simplify code --------- Co-authored-by: Diogo Ferrão <diogo.ferrao@freiheit.com>
1 parent 76b8e56 commit e850a95

6 files changed

Lines changed: 1109 additions & 182 deletions

File tree

docs/data-sources/ske_cluster.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ Read-Only:
106106
- `name` (String) Specifies the name of the node pool.
107107
- `os_name` (String) The name of the OS image.
108108
- `os_version` (String) The OS image version.
109+
- `os_version_min` (String) The minimum OS image version, this field is always nil. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html). To get the current OS image version being used for the node pool, use the read-only `os_version_used` field.
110+
- `os_version_used` (String) Full OS image version used. For example, if 3815.2 was set in `os_version_min`, this value may result to 3815.2.2. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html).
109111
- `taints` (Attributes List) Specifies a taint list as defined below. (see [below for nested schema](#nestedatt--node_pools--taints))
110112
- `volume_size` (Number) The volume size in GB.
111113
- `volume_type` (String) Specifies the volume type.

docs/resources/ske_cluster.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Deprecated as of Kubernetes 1.25 and later
5353
- `extensions` (Attributes) A single extensions block as defined below. (see [below for nested schema](#nestedatt--extensions))
5454
- `hibernations` (Attributes List) One or more hibernation block as defined below. (see [below for nested schema](#nestedatt--hibernations))
5555
- `kubernetes_version` (String, Deprecated) Kubernetes version. Must only contain major and minor version (e.g. 1.22). This field is deprecated, use `kubernetes_version_min instead`
56-
- `kubernetes_version_min` (String) The minimum Kubernetes version. This field will be used to set the minimum kubernetes version on creation/update of the cluster and can only by incremented. If unset, the latest supported Kubernetes version will be used. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html). To get the current kubernetes version being used for your cluster, use the read-only `kubernetes_version_used` field.
56+
- `kubernetes_version_min` (String) The minimum Kubernetes version. This field will be used to set the minimum kubernetes version on creation/update of the cluster. If unset, the latest supported Kubernetes version will be used. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html). To get the current kubernetes version being used for your cluster, use the read-only `kubernetes_version_used` field.
5757
- `maintenance` (Attributes) A single maintenance block as defined below. (see [below for nested schema](#nestedatt--maintenance))
5858

5959
### Read-Only
@@ -72,7 +72,6 @@ Required:
7272
- `maximum` (Number) Maximum number of nodes in the pool.
7373
- `minimum` (Number) Minimum number of nodes in the pool.
7474
- `name` (String) Specifies the name of the node pool.
75-
- `os_version` (String) The OS image version.
7675

7776
Optional:
7877

@@ -81,10 +80,16 @@ Optional:
8180
- `max_surge` (Number) Maximum number of additional VMs that are created during an update.
8281
- `max_unavailable` (Number) Maximum number of VMs that that can be unavailable during an update.
8382
- `os_name` (String) The name of the OS image. E.g. `flatcar`.
83+
- `os_version` (String, Deprecated) This field is deprecated, use `os_version_min` to configure the version and `os_version_used` to get the currently used version instead
84+
- `os_version_min` (String) The minimum OS image version. This field will be used to set the minimum OS image version on creation/update of the cluster. If unset, the latest supported OS image version will be used. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html). To get the current OS image version being used for the node pool, use the read-only `os_version_used` field.
8485
- `taints` (Attributes List) Specifies a taint list as defined below. (see [below for nested schema](#nestedatt--node_pools--taints))
8586
- `volume_size` (Number) The volume size in GB. E.g. `20`
8687
- `volume_type` (String) Specifies the volume type. E.g. `storage_premium_perf1`.
8788

89+
Read-Only:
90+
91+
- `os_version_used` (String) Full OS image version used. For example, if 3815.2 was set in `os_version_min`, this value may result to 3815.2.2. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html).
92+
8893
<a id="nestedatt--node_pools--taints"></a>
8994
### Nested Schema for `node_pools.taints`
9095

@@ -150,10 +155,10 @@ Optional:
150155

151156
Required:
152157

153-
- `enable_machine_image_version_updates` (Boolean) Flag to enable/disable auto-updates of the OS image version.
154158
- `end` (String) Time for maintenance window end. E.g. `01:23:45Z`, `05:00:00+02:00`.
155159
- `start` (String) Time for maintenance window start. E.g. `01:23:45Z`, `05:00:00+02:00`.
156160

157161
Optional:
158162

159-
- `enable_kubernetes_version_updates` (Boolean) Flag to enable/disable auto-updates of the Kubernetes version. Defaults to `true. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html).
163+
- `enable_kubernetes_version_updates` (Boolean) Flag to enable/disable auto-updates of the Kubernetes version. Defaults to `true`. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html).
164+
- `enable_machine_image_version_updates` (Boolean) Flag to enable/disable auto-updates of the OS image version. Defaults to `true`. SKE automatically updates the cluster Kubernetes version if you have set `maintenance.enable_kubernetes_version_updates` to true or if there is a mandatory update, as described in [Updates for Kubernetes versions and Operating System versions in SKE](https://docs.stackit.cloud/stackit/en/version-updates-in-ske-10125631.html).

stackit/internal/services/ske/cluster/datasource.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,18 @@ func (r *clusterDataSource) Schema(_ context.Context, _ datasource.SchemaRequest
130130
Description: "The name of the OS image.",
131131
Computed: true,
132132
},
133+
"os_version_min": schema.StringAttribute{
134+
Description: "The minimum OS image version, this field is always nil. " + SKEUpdateDoc + " To get the current OS image version being used for the node pool, use the read-only `os_version_used` field.",
135+
Computed: true,
136+
},
133137
"os_version": schema.StringAttribute{
134138
Description: "The OS image version.",
135139
Computed: true,
136140
},
141+
"os_version_used": schema.StringAttribute{
142+
Description: "Full OS image version used. For example, if 3815.2 was set in `os_version_min`, this value may result to 3815.2.2. " + SKEUpdateDoc,
143+
Computed: true,
144+
},
137145
"minimum": schema.Int64Attribute{
138146
Description: "Minimum number of nodes in the pool.",
139147
Computed: true,

0 commit comments

Comments
 (0)