diff --git a/.github/scripts/cleanup-cluster.sh b/.github/scripts/cleanup-cluster.sh index eb1ab03b972..95851c21648 100755 --- a/.github/scripts/cleanup-cluster.sh +++ b/.github/scripts/cleanup-cluster.sh @@ -6,7 +6,7 @@ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at -# +# # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software @@ -18,13 +18,18 @@ set -e -# Delete all test resources in queuemessages +echo "cleaning up cluster" + +# Delete all test resources in queuemessages. +echo "delete all resources in queuemessages.ucp.dev" kubectl delete queuemessages.ucp.dev -n radius-system --all +# Testing deletion of deployment.apps. + # Delete all test resources in resources without proxy resource. +echo "delete all resources in resources.ucp.dev" resources=$(kubectl get resources.ucp.dev -n radius-system --no-headers -o custom-columns=":metadata.name") -for r in $resources -do +for r in $resources; do if [[ $r == scope.local.* || $r == scope.aws.* || -z "$r" ]]; then echo "skip deletion: $r" else @@ -34,9 +39,11 @@ do done # Delete all test namespaces. -namespaces=$(kubectl get namespace | grep -E '^corerp.*|^default-.*|^radiusfunctionaltestbucket.*|^radius-test.*|^kubernetes-cli.*|^dpsb-.*|^azstorage-workload.*|^dapr-serviceinvocation|^ms.+' | awk '{print $1}') -for ns in $namespaces -do +echo "delete all test namespaces" +namespaces=$(kubectl get namespace | + grep -E '^kubernetes-interop-tutorial.*|^corerp.*|^default-.*|^radiusfunctionaltestbucket.*|^radius-test.*|^kubernetes-cli.*|^dpsb-.*|^azstorage-workload.*|^dapr-serviceinvocation|^ms.+' | + awk '{print $1}') +for ns in $namespaces; do if [ -z "$ns" ]; then break fi diff --git a/.github/workflows/long-running-azure.yaml b/.github/workflows/long-running-azure.yaml index df8f8d8760f..9ee9f63bbb9 100644 --- a/.github/workflows/long-running-azure.yaml +++ b/.github/workflows/long-running-azure.yaml @@ -45,11 +45,11 @@ on: branches: - main paths: - - ".github/workflows/long-running-azure.yaml" + - '.github/workflows/long-running-azure.yaml' env: # Go version - GOVER: "^1.21" + GOVER: '^1.21' GOPROXY: https://proxy.golang.org # gotestsum version - see: https://github.com/gotestyourself/gotestsum @@ -68,21 +68,20 @@ env: # The Radius helm chart location. RADIUS_CHART_LOCATION: deploy/Chart/ # The region for AWS resources - AWS_REGION: "us-west-2" + AWS_REGION: us-west-2 # The AWS account ID - AWS_ACCOUNT_ID: "${{ secrets.FUNCTEST_AWS_ACCOUNT_ID }}" + AWS_ACCOUNT_ID: '${{ secrets.FUNCTEST_AWS_ACCOUNT_ID }}' # The valid radius build time window in seconds to rebuild radius. 24 hours = 24 * 60 * 60 = 86400 VALID_RADIUS_BUILD_WINDOW: 86400 # The AKS cluster name - AKS_CLUSTER_NAME: "radiuse2e00-aks" + AKS_CLUSTER_NAME: 'radiuse2e00-aks' # The resource group for AKS_CLUSTER_NAME resource. - AKS_RESOURCE_GROUP: - "radiuse2e00" + AKS_RESOURCE_GROUP: 'radiuse2e00' - # Server where terraform test modules are deployed - TF_RECIPE_MODULE_SERVER_URL: "http://tf-module-server.radius-test-tf-module-server.svc.cluster.local" + # Server where terraform test modules are deployed + TF_RECIPE_MODULE_SERVER_URL: 'http://tf-module-server.radius-test-tf-module-server.svc.cluster.local' jobs: build: @@ -277,7 +276,7 @@ jobs: tests: name: Run functional tests needs: build - runs-on: ubuntu-latest + runs-on: ubuntu-latest-m if: github.repository == 'radius-project/radius' env: SKIP_BUILD: ${{ needs.build.outputs.SKIP_BUILD }} @@ -371,25 +370,27 @@ jobs: which rad || { echo "cannot find rad"; exit 1; } echo "*** Create workspace, group and environment for test ***" - rad workspace create kubernetes - rad workspace list - rad group create radius-e2e - rad group switch radius-e2e + rad workspace create kubernetes --force + rad group create kind-radius + rad group switch kind-radius # The functional test is designed to use default namespace. So you must create the environment for default namespace. - rad env create radius-e2e --namespace default - rad env switch radius-e2e - rad workspace list + rad env create kind-radius --namespace default + rad env switch kind-radius + + # Temporary workaround to fix the x509 certificate error in the controller. + # https://github.com/radius-project/radius/issues/6989 + kubectl delete secrets controller-cert -n radius-system echo "*** Configuring Azure provider ***" - rad env update radius-e2e --azure-subscription-id ${{ secrets.INTEGRATION_TEST_SUBSCRIPTION_ID }} \ + rad env update kind-radius --azure-subscription-id ${{ secrets.INTEGRATION_TEST_SUBSCRIPTION_ID }} \ --azure-resource-group ${{ env.AZURE_TEST_RESOURCE_GROUP }} rad credential register azure --client-id ${{ secrets.INTEGRATION_TEST_SP_APP_ID }} \ --client-secret ${{ secrets.INTEGRATION_TEST_SP_PASSWORD }} \ --tenant-id ${{ secrets.INTEGRATION_TEST_TENANT_ID }} echo "*** Configuring AWS provider ***" - rad env update radius-e2e --aws-region ${{ env.AWS_REGION }} --aws-account-id ${{ secrets.FUNCTEST_AWS_ACCOUNT_ID }} + rad env update kind-radius --aws-region ${{ env.AWS_REGION }} --aws-account-id ${{ secrets.FUNCTEST_AWS_ACCOUNT_ID }} rad credential register aws \ --access-key-id ${{ secrets.FUNCTEST_AWS_ACCESS_KEY_ID }} --secret-access-key ${{ secrets.FUNCTEST_AWS_SECRET_ACCESS_KEY }} - name: Log radius installation status (failure) @@ -432,6 +433,24 @@ jobs: # Test_MongoDB_Recipe_Parameters is using the following environment variable. INTEGRATION_TEST_RESOURCE_GROUP_NAME: ${{ env.AZURE_TEST_RESOURCE_GROUP }} FUNC_TEST_OIDC_ISSUER: ${{ env.FUNCTEST_OIDC_ISSUER }} + DOCKER_REGISTRY: ${{ env.CONTAINER_REGISTRY }} + BICEP_RECIPE_REGISTRY: ${{ env.BICEP_RECIPE_REGISTRY }} + BICEP_RECIPE_TAG_VERSION: ${{ env.BICEP_RECIPE_TAG_VERSION }} + - name: Collect Pod details + if: always() + run: | + POD_STATE_LOG_FILENAME='${{ env.RADIUS_CONTAINER_LOG_BASE }}/all-tests-pod-states.log' + mkdir -p $(dirname $POD_STATE_LOG_FILENAME) + echo "kubectl get pods -A" >> $POD_STATE_LOG_FILENAME + kubectl get pods -A >> $POD_STATE_LOG_FILENAME + echo "kubectl describe pods -A" >> $POD_STATE_LOG_FILENAME + kubectl describe pods -A >> $POD_STATE_LOG_FILENAME + - name: Upload container logs + if: always() + uses: actions/upload-artifact@v3 + with: + name: all_container_logs + path: ./${{ env.RADIUS_CONTAINER_LOG_BASE }} - name: Log radius e2e test status (success) if: success() run: | diff --git a/build/test.mk b/build/test.mk index 53b23697e93..33699d9f27a 100644 --- a/build/test.mk +++ b/build/test.mk @@ -58,7 +58,10 @@ test-get-envtools: test-validate-cli: ## Run cli integration tests CGO_ENABLED=1 $(GOTEST_TOOL) -coverpkg= ./pkg/cli/cmd/... ./cmd/rad/... -timeout ${TEST_TIMEOUT} -v -parallel 5 $(GOTEST_OPTS) -test-functional-all: test-functional-ucp test-functional-kubernetes test-functional-shared test-functional-msgrp test-functional-daprrp ## Runs all functional tests +test-functional-all: test-functional-ucp test-functional-kubernetes test-functional-shared test-functional-msgrp test-functional-daprrp test-functional-datastoresrp test-functional-samples ## Runs all functional tests + +test-functional-ucp: ## Runs UCP functional tests + CGO_ENABLED=1 $(GOTEST_TOOL) ./test/functional/ucp/... -timeout ${TEST_TIMEOUT} -v -parallel 5 $(GOTEST_OPTS) test-functional-kubernetes: ## Runs Kubernetes functional tests CGO_ENABLED=1 $(GOTEST_TOOL) ./test/functional/kubernetes/... -timeout ${TEST_TIMEOUT} -v -parallel 5 $(GOTEST_OPTS) @@ -78,9 +81,6 @@ test-functional-datastoresrp: ## Runs Datastores RP functional tests test-functional-samples: ## Runs Samples functional tests CGO_ENABLED=1 $(GOTEST_TOOL) ./test/functional/samples/... -timeout ${TEST_TIMEOUT} -v -parallel 5 $(GOTEST_OPTS) -test-functional-ucp: ## Runs UCP functional tests - CGO_ENABLED=1 $(GOTEST_TOOL) ./test/functional/ucp/... -timeout ${TEST_TIMEOUT} -v -parallel 5 $(GOTEST_OPTS) - test-validate-bicep: ## Validates that all .bicep files compile cleanly BICEP_PATH="${HOME}/.rad/bin/rad-bicep" ./build/validate-bicep.sh diff --git a/pkg/cli/cmd/recipe/list/list.go b/pkg/cli/cmd/recipe/list/list.go index 49d98656bf2..3bebf7738cc 100644 --- a/pkg/cli/cmd/recipe/list/list.go +++ b/pkg/cli/cmd/recipe/list/list.go @@ -136,7 +136,10 @@ func (r *Runner) Run(ctx context.Context) error { ResourceType: resourceType, TemplatePath: *c.TemplatePath, TemplateKind: *c.TemplateKind, - PlainHTTP: *c.PlainHTTP, + } + + if c.PlainHTTP != nil { + recipe.PlainHTTP = *c.PlainHTTP } } envRecipes = append(envRecipes, recipe) diff --git a/test/functional/kubernetes/kubernetes_test.go b/test/functional/kubernetes/kubernetes_test.go index c7ae4a790cd..4ae1b1ffc46 100644 --- a/test/functional/kubernetes/kubernetes_test.go +++ b/test/functional/kubernetes/kubernetes_test.go @@ -48,7 +48,6 @@ import ( ) func Test_TutorialApplication_KubernetesManifests(t *testing.T) { - t.Skip("Skipping for now, will reenable before merging.") ctx := testcontext.New(t) opts := shared.NewRPTestOptions(t) @@ -79,11 +78,11 @@ func Test_TutorialApplication_KubernetesManifests(t *testing.T) { t.Run("Deploy", func(t *testing.T) { t.Log("Creating recipe") - err = opts.Client.Create(ctx, deployment) + err = opts.Client.Create(ctx, recipe) require.NoError(t, err) t.Log("Creating deployment") - err = opts.Client.Create(ctx, recipe) + err = opts.Client.Create(ctx, deployment) require.NoError(t, err) }) diff --git a/test/functional/testUtil.go b/test/functional/testUtil.go index 73a4c92f2ba..9ee366707a0 100644 --- a/test/functional/testUtil.go +++ b/test/functional/testUtil.go @@ -73,7 +73,7 @@ func SetDefault() (string, string) { defaultDockerReg := os.Getenv("DOCKER_REGISTRY") imageTag := os.Getenv("REL_VERSION") if defaultDockerReg == "" { - defaultDockerReg = "ghcr.io/radius-project/dev" + defaultDockerReg = "ghcr.io/radius-project" } if imageTag == "" { imageTag = "latest" @@ -93,6 +93,7 @@ func GetBicepRecipeRegistry() string { if defaultRecipeRegistry == "" { defaultRecipeRegistry = "ghcr.io/radius-project" } + return "registry=" + defaultRecipeRegistry } @@ -103,6 +104,7 @@ func GetBicepRecipeVersion() string { if defaultVersion == "" { defaultVersion = "latest" } + return "version=" + defaultVersion } diff --git a/test/infra/README.md b/test/infra/README.md index 8552bb2c27f..cb681fe1881 100644 --- a/test/infra/README.md +++ b/test/infra/README.md @@ -2,4 +2,4 @@ This directory includes the infrastructure templates to deploy test environments for Radius. -* [azure](./azure/): includes the bicep template for Radius test infrastructure on Azure. +- [azure](./azure/): includes the bicep template for Radius test infrastructure on Azure. diff --git a/test/infra/azure/README.md b/test/infra/azure/README.md index 6d263d80070..e4fcc6afad0 100644 --- a/test/infra/azure/README.md +++ b/test/infra/azure/README.md @@ -2,14 +2,14 @@ This directory includes the Bicep templates to deploy the following resources on Azure for running Radius: -* Log Analytics Workspace for log -* Azure Monitor Workspace for metric -* AKS Cluster - * Installed extensions: Azure Keyvault CSI driver, Dapr -* Grafana dashboard -* Installed tools - * cert-manager v1.20.0 - * Azure workload identity mutating admission webhook controller v1.1.0 +- Log Analytics Workspace for log +- Azure Monitor Workspace for metric +- AKS Cluster + - Installed extensions: Azure Keyvault CSI driver, Dapr +- Grafana dashboard +- Installed tools + - cert-manager v1.20.0 + - Azure workload identity mutating admission webhook controller v1.1.0 ## Prerequisite @@ -20,58 +20,58 @@ This directory includes the Bicep templates to deploy the following resources on 1. Log in to Azure and select your subscription: - ```bash - az login - az account set -s [Subscription Id] - ``` + ```bash + az login + az account set -s [Subscription Id] + ``` 1. Enable `Microsoft.ContainerService/EnableImageCleanerPreview` feature flag - This cleans up unused container images in each node, which can cause the security vulnerabilities. Visit to learn more about image cleaner. + This cleans up unused container images in each node, which can cause the security vulnerabilities. Visit to learn more about image cleaner. - ```bash - # Check the feature flag to see if it is 'Registered'. If the status is 'Registered', you can skip this step. - az feature show --namespace "Microsoft.ContainerService" --name "EnableImageCleanerPreview" - { - "id": "/subscriptions//providers/Microsoft.Features/providers/Microsoft.ContainerService/features/EnableImageCleanerPreview", - "name": "Microsoft.ContainerService/EnableImageCleanerPreview", - "properties": { - "state": "Registered" - }, - "type": "Microsoft.Features/providers/features" - } + ```bash + # Check the feature flag to see if it is 'Registered'. If the status is 'Registered', you can skip this step. + az feature show --namespace "Microsoft.ContainerService" --name "EnableImageCleanerPreview" + { + "id": "/subscriptions//providers/Microsoft.Features/providers/Microsoft.ContainerService/features/EnableImageCleanerPreview", + "name": "Microsoft.ContainerService/EnableImageCleanerPreview", + "properties": { + "state": "Registered" + }, + "type": "Microsoft.Features/providers/features" + } - # Register feature flag. - az feature register --namespace "Microsoft.ContainerService" --name "EnableImageCleanerPreview" + # Register feature flag. + az feature register --namespace "Microsoft.ContainerService" --name "EnableImageCleanerPreview" - # Ensure that the feature flag is 'Registered'. - az feature show --namespace "Microsoft.ContainerService" --name "EnableImageCleanerPreview" + # Ensure that the feature flag is 'Registered'. + az feature show --namespace "Microsoft.ContainerService" --name "EnableImageCleanerPreview" - # Re-register resource provider. - az provider register --namespace Microsoft.ContainerService - ``` + # Re-register resource provider. + az provider register --namespace Microsoft.ContainerService + ``` - > Note: When you enable the feature flag first in your subscription, it will take some time to be propagated. + > Note: When you enable the feature flag first in your subscription, it will take some time to be propagated. 1. Create resource group: - ```bash - az group create --location [Location Name] --resource-group [Resource Group Name] - ``` + ```bash + az group create --location [Location Name] --resource-group [Resource Group Name] + ``` - * **[Location Name]**: Specify the location of the resource group. This location will be used as the default location for the resources in the template. - * **[Resource Group Name]**: Provide a name for the resource group where the template will be deployed. + - **[Location Name]**: Specify the location of the resource group. This location will be used as the default location for the resources in the template. + - **[Resource Group Name]**: Provide a name for the resource group where the template will be deployed. 1. Deploy main.bicep: - By default, `grafanaEnabled` is false. We do not need to set any parameters unless you need Grafana dashboard. If you want to see Grafana dashboard later, you can redeploy main.bicep with `grafanaEnabled` and `grafanaAdminObjectId` later--bicep will install only Grafana dashboard with your existing cluster. + By default, `grafanaEnabled` is false. We do not need to set any parameters unless you need Grafana dashboard. If you want to see Grafana dashboard later, you can redeploy main.bicep with `grafanaEnabled` and `grafanaAdminObjectId` later--bicep will install only Grafana dashboard with your existing cluster. - ```bash - az deployment group create --resource-group [Resource Group Name] --template-file main.bicep --parameters grafanaEnabled=[Grafana Dashboard Enabled] grafanaAdminObjectId='[Grafana Admin Object Id]' - ``` + ```bash + az deployment group create --resource-group [Resource Group Name] --template-file main.bicep --parameters grafanaEnabled=[Grafana Dashboard Enabled] grafanaAdminObjectId='[Grafana Admin Object Id]' + ``` - * **[Grafana Dashboard Enabled]**: Set `true` if you want to see metrics and its dashboard with Azure managed Prometheus and Grafana dashboard. Otherwise, `false` is recommended to save the cost. - * **[Grafana Admin Object Id]**: Set the object ID of the Grafana Admin user or group. To find the object id, search for the admin user or group name on [AAD Portal Overview search box](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Overview) and get the object id or run `az ad signed-in-user show` to get your own user object id. + - **[Grafana Dashboard Enabled]**: Set `true` if you want to see metrics and its dashboard with Azure managed Prometheus and Grafana dashboard. Otherwise, `false` is recommended to save the cost. + - **[Grafana Admin Object Id]**: Set the object ID of the Grafana Admin user or group. To find the object id, search for the admin user or group name on [AAD Portal Overview search box](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Overview) and get the object id or run `az ad signed-in-user show` to get your own user object id. ## Monitor Radius @@ -102,5 +102,5 @@ This directory includes the Bicep templates to deploy the following resources on ## References -* -* +- +- diff --git a/test/infra/azure/main.bicep b/test/infra/azure/main.bicep index 9380c98cb99..080d9813a0d 100644 --- a/test/infra/azure/main.bicep +++ b/test/infra/azure/main.bicep @@ -87,19 +87,21 @@ resource azureMonitorWorkspace 'microsoft.monitor/accounts@2023-04-03' = { // Deploy AKS cluster with OIDC Issuer profile and Dapr. module aksCluster './modules/akscluster.bicep' = { name: aksClusterName - params:{ + params: { name: aksClusterName location: location - kubernetesVersion: '1.26.3' + kubernetesVersion: '1.28.3' logAnalyticsWorkspaceId: logAnalyticsWorkspace.outputs.id systemAgentPoolName: 'agentpool' - systemAgentPoolVmSize: 'Standard_DS2_v2' + systemAgentPoolVmSize: 'Standard_D4as_v5' systemAgentPoolAvailabilityZones: [] systemAgentPoolOsDiskType: 'Managed' + systemAgentPoolOsSKU: 'AzureLinux' userAgentPoolName: 'userpool' - userAgentPoolVmSize: 'Standard_DS2_v2' + userAgentPoolVmSize: 'Standard_D4as_v5' userAgentPoolAvailabilityZones: [] userAgentPoolOsDiskType: 'Managed' + userAgentPoolOsSKU: 'AzureLinux' daprEnabled: true daprHaEnabled: false oidcIssuerProfileEnabled: true @@ -113,7 +115,7 @@ module aksCluster './modules/akscluster.bicep' = { // Deploy data collection for log analytics. module logAnalyticsDataCollection './modules/loganalytics-datacollection.bicep' = if (grafanaEnabled) { name: 'loganalytics-datacollection' - params:{ + params: { logAnalyticsWorkspaceId: logAnalyticsWorkspace.outputs.id logAnalyticsWorkspaceLocation: logAnalyticsWorkspace.outputs.location clusterResourceId: aksCluster.outputs.id @@ -125,7 +127,7 @@ module logAnalyticsDataCollection './modules/loganalytics-datacollection.bicep' // Deploy Grafana dashboard. module grafanaDashboard './modules/grafana.bicep' = if (grafanaEnabled) { name: grafanaDashboardName - params:{ + params: { name: grafanaDashboardName location: location adminObjectId: grafanaAdminObjectId @@ -139,7 +141,7 @@ module grafanaDashboard './modules/grafana.bicep' = if (grafanaEnabled) { // Deploy data collection for metrics. module dataCollection './modules/datacollection.bicep' = if (grafanaEnabled) { name: 'dataCollection' - params:{ + params: { azureMonitorWorkspaceLocation: azureMonitorWorkspace.location azureMonitorWorkspaceId: azureMonitorWorkspace.id clusterResourceId: aksCluster.outputs.id @@ -154,7 +156,7 @@ module dataCollection './modules/datacollection.bicep' = if (grafanaEnabled) { // Deploy alert rules using prometheus metrics. module alertManagement './modules/alert-management.bicep' = if (grafanaEnabled) { name: 'alertManagement' - params:{ + params: { azureMonitorWorkspaceLocation: azureMonitorWorkspace.location azureMonitorWorkspaceResourceId: azureMonitorWorkspace.id clusterResourceId: aksCluster.outputs.id diff --git a/test/infra/azure/modules/akscluster.bicep b/test/infra/azure/modules/akscluster.bicep index 00ad2d274dd..cc298d7eaf7 100644 --- a/test/infra/azure/modules/akscluster.bicep +++ b/test/infra/azure/modules/akscluster.bicep @@ -116,6 +116,13 @@ param systemAgentPoolAgentCount int = 2 ]) param systemAgentPoolOsType string = 'Linux' +@description('Specifies the OS SKU type for the vms in the system node pool. Choose from AzureLinux and Ubuntu. Default to AzureLinux.') +@allowed([ + 'AzureLinux' + 'Ubuntu' +]) +param systemAgentPoolOsSKU string = 'AzureLinux' + @description('Specifies the maximum number of pods that can run on a node in the system node pool. The maximum number of pods per node in an AKS cluster is 250. The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment.') param systemAgentPoolMaxPods int = 30 @@ -146,7 +153,7 @@ param systemAgentPoolScaleSetEvictionPolicy string = 'Delete' param systemAgentPoolNodeLabels object = {} @description('Specifies the taints added to new nodes during node pool create and scale. For example, key=value:NoSchedule.') -param systemAgentPoolNodeTaints array = ['CriticalAddonsOnly=true:NoSchedule'] +param systemAgentPoolNodeTaints array = [ 'CriticalAddonsOnly=true:NoSchedule' ] @description('Determines the placement of emptyDir volumes, container runtime data root, and Kubelet ephemeral storage.') @allowed([ @@ -195,6 +202,13 @@ param userAgentPoolAgentCount int = 2 ]) param userAgentPoolOsType string = 'Linux' +@description('Specifies the OS SKU type for the vms in the user node pool. Choose from AzureLinux and Ubuntu. Default to AzureLinux.') +@allowed([ + 'AzureLinux' + 'Ubuntu' +]) +param userAgentPoolOsSKU string = 'AzureLinux' + @description('Specifies the maximum number of pods that can run on a node in the user node pool. The maximum number of pods per node in an AKS cluster is 250. The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment.') param userAgentPoolMaxPods int = 30 @@ -384,6 +398,7 @@ resource aksCluster 'Microsoft.ContainerService/managedClusters@2023-05-01' = { osDiskType: systemAgentPoolOsDiskType maxPods: systemAgentPoolMaxPods osType: systemAgentPoolOsType + osSKU: systemAgentPoolOsSKU maxCount: systemAgentPoolMaxCount minCount: systemAgentPoolMinCount scaleSetPriority: systemAgentPoolScaleSetPriority @@ -404,6 +419,7 @@ resource aksCluster 'Microsoft.ContainerService/managedClusters@2023-05-01' = { osDiskType: userAgentPoolOsDiskType maxPods: userAgentPoolMaxPods osType: userAgentPoolOsType + osSKU: userAgentPoolOsSKU maxCount: userAgentPoolMaxCount minCount: userAgentPoolMinCount scaleSetPriority: userAgentPoolScaleSetPriority