-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
azurerm_kubernetes_cluster_node_pool
- os_sku
supports update
#26139
azurerm_kubernetes_cluster_node_pool
- os_sku
supports update
#26139
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @ms-henglu but given the ongoing discussions about whether to support preview features in the AKS resource or not we can't progress with this since this may potentially need to be removed again in the next major version of the provider.
Could we close this PR for the moment, we're happy to reopen once we have a resolution on the discussion.
Agreed! I'll close this task. |
* `os_sku` - (Optional) Specifies the OS SKU used by the agent pool. Possible values are `AzureLinux`, `Ubuntu`, `Windows2019` and `Windows2022`. If not specified, the default is `Ubuntu` if OSType=Linux or `Windows2019` if OSType=Windows. And the default Windows OSSKU will be changed to `Windows2022` after Windows2019 is deprecated. Changing this forces a new resource to be created. | ||
* `os_sku` - (Optional) Specifies the OS SKU used by the agent pool. Possible values are `AzureLinux`, `Ubuntu`, `Windows2019` and `Windows2022`. If not specified, the default is `Ubuntu` if OSType=Linux or `Windows2019` if OSType=Windows. And the default Windows OSSKU will be changed to `Windows2022` after Windows2019 is deprecated. Changing this from `AzureLinux` or `Ubuntu` to `AzureLinux` or `Ubuntu` will not replace the resource, otherwise it forces a new resource to be created. | ||
|
||
-> **Note:** This requires that the Preview Feature `Microsoft.ContainerService/OSSKUMigrationPreview` is enabled and the Resource Provider is re-registered, see [the documentation](https://learn.microsoft.com/en-us/azure/azure-linux/tutorial-azure-linux-migration) for more information. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be removed if it's not really a preview feature anymore
-> **Note:** This requires that the Preview Feature `Microsoft.ContainerService/OSSKUMigrationPreview` is enabled and the Resource Provider is re-registered, see [the documentation](https://learn.microsoft.com/en-us/azure/azure-linux/tutorial-azure-linux-migration) for more information. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll remove it when it's GA, currently we still need this feature registered.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does it though? That flag isn't registered on our testing subscription
$ az feature show --namespace "Microsoft.ContainerService" --name "OSSKUMigrationPreview"
{
"id": "/subscriptions/*/providers/Microsoft.Features/providers/microsoft.ContainerService/features/OSSKUMigrationPreview",
"name": "microsoft.ContainerService/OSSKUMigrationPreview",
"properties": {
"state": "NotRegistered"
},
"type": "Microsoft.Features/providers/features"
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got it, I'll remove the notice.
Co-authored-by: stephybun <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left a few comments on things that need to change.
Additionally the function resourceKubernetesClusterNodePoolUpdate
in kubernetes_cluster_node_pool_resource.go will need to apply the os_sku if it's changed.
if d.HasChange("os_sku") {
if osSku := d.Get("os_sku").(string); osSku != "" {
props.OsSKU = pointer.To(agentpools.OSSKU(osSku))
}
}
@@ -67,6 +67,18 @@ func resourceKubernetesClusterNodePool() *pluginsdk.Resource { | |||
Schema: resourceKubernetesClusterNodePoolSchema(), | |||
|
|||
CustomizeDiff: pluginsdk.CustomDiffInSequence( | |||
pluginsdk.ForceNewIfChange("os_sku", func(ctx context.Context, old, new, meta interface{}) bool { | |||
// Ubuntu and AzureLinux are currently the only allowed Linux OSSKU Migration targets. | |||
if old != agentpools.OSSKUUbuntu && old != agentpools.OSSKUAzureLinux { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These comparisons are comparing a string
object to an agentpools.OSSKU
object, so it'll always return true from the function since they'll never be equal. The agentpools consts need to be typecast for the comparison.
if old != agentpools.OSSKUUbuntu && old != agentpools.OSSKUAzureLinux { | |
if old != string(agentpools.OSSKUUbuntu) && old != string(agentpools.OSSKUAzureLinux) { |
@@ -67,6 +67,18 @@ func resourceKubernetesClusterNodePool() *pluginsdk.Resource { | |||
Schema: resourceKubernetesClusterNodePoolSchema(), | |||
|
|||
CustomizeDiff: pluginsdk.CustomDiffInSequence( | |||
pluginsdk.ForceNewIfChange("os_sku", func(ctx context.Context, old, new, meta interface{}) bool { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This CustomDiff only applies to azurerm_kubernetes_cluster_node_pool resources.
We need a copy of it in kubernetes_cluster_resource.go too so that the logic applies when validating default_node_pool in azurerm_kubernetes_cluster.
return true | ||
} | ||
|
||
if new != agentpools.OSSKUUbuntu && new != agentpools.OSSKUAzureLinux { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if new != agentpools.OSSKUUbuntu && new != agentpools.OSSKUAzureLinux { | |
if new != string(agentpools.OSSKUUbuntu) && new != string(agentpools.OSSKUAzureLinux) { |
@@ -269,7 +281,6 @@ func resourceKubernetesClusterNodePoolSchema() map[string]*pluginsdk.Schema { | |||
"os_sku": { | |||
Type: pluginsdk.TypeString, | |||
Optional: true, | |||
ForceNew: true, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to remove "default_node_pool.0.os_sku",
from cycleNodePoolProperties
in kubernetes_cluster_resource.go because a temporary_name_for_rotation is no longer required since we can in-place upgrade.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I opened a separate PR for kubernetes_cluster_resource
Thanks @hbeberman for the code review. I've updated this PR as suggested. |
Hi @stephybun , the tests were passing because there's a bug in my PR that the I've fixed it, and the tests are failing because the preview feature flag is not enabled:
|
…own" This reverts commit 504d4a7.
Hi @stephybun - I also confirmed with the service team that this feature flag is required. I've reverted the previous commit which removes the notice. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @ms-henglu LGTM 👍
<Actions> <action id="f410411e63aff4bb73a81c2aec1d373cf8a903e63b30dee2006b0030d8a94cc8"> <h3>Bump Terraform `azurerm` provider version</h3> <details id="1d9343c012f5434ac9fe8a98135bae3667b399259be16d9b14302ea3bd424a24"> <summary>Update Terraform lock file</summary> <p>changes detected:
	"hashicorp/azurerm" updated from "3.110.0" to "3.111.0" in file ".terraform.lock.hcl"</p> <details> <summary>3.111.0</summary> <pre>Changelog retrieved from:
	https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.111.0
FEATURES:

* **New Resource:** `azurerm_restore_point_collection` ([#26518](https://github.com/hashicorp/terraform-provider-azurerm/issues/26518))

ENHANCEMENTS:

* dependencies: updating to `v0.20240701.1082110` of `github.com/hashicorp/go-azure-sdk` ([#26502](hashicorp/terraform-provider-azurerm#26502 `azurerm_disk_encryption_set` - support for the `managed_hsm_key_id` property ([#26201](hashicorp/terraform-provider-azurerm#26201 `azurerm_firewall_policy` - remove Computed from the `sku` property and add a default of `Standard` in 4.0 ([#26499](hashicorp/terraform-provider-azurerm#26499 `azurerm_kubernetes_cluster` - support updating `default_node_pool.os_sku` between `Ubuntu` and `AzureLinux` ([#26262](hashicorp/terraform-provider-azurerm#26262 `azurerm_kubernetes_cluster_node_pool` - support updating `os_sku` between `Ubuntu` and `AzureLinux` ([#26139](hashicorp/terraform-provider-azurerm#26139 `azurerm_service_plan` - support for new the Flex Consumption plan ([#26351](https://github.com/hashicorp/terraform-provider-azurerm/issues/26351))

BUG FIXES:

* `azurerm_kubernetes_cluster` - prevent a panic ([#26478](hashicorp/terraform-provider-azurerm#26478 `azurerm_kubernetes_cluster` - prevent a diff in `upgrade_settings` when the API returns an empty object ([#26541](hashicorp/terraform-provider-azurerm#26541 `azurerm_kubernetes_cluster_node_pool` - prevent a diff in `upgrade_settings` when the API returns an empty object ([#26541](hashicorp/terraform-provider-azurerm#26541 `azurerm_virtual_network_gateway` - split create and update function to fix lifecycle - ignore ([#26451](hashicorp/terraform-provider-azurerm#26451 `azurerm_virtual_network_gateway_connection` - split create and update function to fix lifecycle - ignore ([#26431](https://github.com/hashicorp/terraform-provider-azurerm/issues/26431))


</pre> </details> </details> <a href="https://infra.ci.jenkins.io/job/updatecli/job/azure/job/main/306/">Jenkins pipeline link</a> </action> </Actions> --- <table> <tr> <td width="77"> <img src="https://www.updatecli.io/images/updatecli.png" alt="Updatecli logo" width="50" height="50"> </td> <td> <p> Created automatically by <a href="https://www.updatecli.io/">Updatecli</a> </p> <details><summary>Options:</summary> <br /> <p>Most of Updatecli configuration is done via <a href="https://www.updatecli.io/docs/prologue/quick-start/">its manifest(s)</a>.</p> <ul> <li>If you close this pull request, Updatecli will automatically reopen it, the next time it runs.</li> <li>If you close this pull request and delete the base branch, Updatecli will automatically recreate it, erasing all previous commits made.</li> </ul> <p> Feel free to report any issues at <a href="https://github.com/updatecli/updatecli/issues">github.com/updatecli/updatecli</a>.<br /> If you find this tool useful, do not hesitate to star <a href="https://github.com/updatecli/updatecli/stargazers">our GitHub repository</a> as a sign of appreciation, and/or to tell us directly on our <a href="https://matrix.to/#/#Updatecli_community:gitter.im">chat</a>! </p> </details> </td> </tr> </table> Co-authored-by: Jenkins Infra Bot (updatecli) <[email protected]>
I'm going to lock this pull request because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active contributions. |
Community Note
Description
PR Checklist
For example: “
resource_name_here
- description of change e.g. adding propertynew_property_name_here
”Changes to existing Resource / Data Source
Testing
Change Log
Below please provide what should go into the changelog (if anything) conforming to the Changelog Format documented here.
azurerm_resource
- support for thething1
property [GH-00000]This is a (please select all that apply):
Related Issue(s)
Fixes #0000
Note
If this PR changes meaningfully during the course of review please update the title and description as required.