diff --git a/.github/workflows/ms.kubernetesconfiguration.extensions.yml b/.github/workflows/ms.kubernetesconfiguration.extensions.yml index aa0f094765..3dc16b79bf 100644 --- a/.github/workflows/ms.kubernetesconfiguration.extensions.yml +++ b/.github/workflows/ms.kubernetesconfiguration.extensions.yml @@ -106,8 +106,7 @@ jobs: - name: 'Using test file [${{ matrix.moduleTestFilePaths }}]' uses: ./.github/actions/templates/validateModuleDeployment with: - templateFilePath: '${{ env.modulePath }}/deploy.bicep' - parameterFilePath: '${{ env.modulePath }}/${{ matrix.moduleTestFilePaths }}' + templateFilePath: '${{ env.modulePath }}/${{ matrix.moduleTestFilePaths }}' location: '${{ env.location }}' resourceGroupName: '${{ env.resourceGroupName }}' subscriptionId: '${{ secrets.ARM_SUBSCRIPTION_ID }}' diff --git a/modules/Microsoft.KubernetesConfiguration/extensions/.test/common/dependencies.bicep b/modules/Microsoft.KubernetesConfiguration/extensions/.test/common/dependencies.bicep new file mode 100644 index 0000000000..813634fb2a --- /dev/null +++ b/modules/Microsoft.KubernetesConfiguration/extensions/.test/common/dependencies.bicep @@ -0,0 +1,32 @@ +@description('Optional. The location to deploy resources to.') +param location string = resourceGroup().location + +@description('Required. The name of the AKS cluster to create.') +param clusterName string + +@description('Required. The name of the AKS cluster nodes resource group to create.') +param clusterNodeResourceGroupName string + +resource cluster 'Microsoft.ContainerService/managedClusters@2022-06-01' = { + name: clusterName + location: location + identity: { + type: 'SystemAssigned' + } + properties: { + dnsPrefix: clusterName + nodeResourceGroup: clusterNodeResourceGroupName + agentPoolProfiles: [ + { + name: 'agentpool' + count: 1 + vmSize: 'Standard_DS2_v2' + osType: 'Linux' + mode: 'System' + } + ] + } +} + +@description('The name of the created AKS cluster.') +output clusterName string = cluster.name diff --git a/modules/Microsoft.KubernetesConfiguration/extensions/.test/common/deploy.test.bicep b/modules/Microsoft.KubernetesConfiguration/extensions/.test/common/deploy.test.bicep new file mode 100644 index 0000000000..c7ef2ab70b --- /dev/null +++ b/modules/Microsoft.KubernetesConfiguration/extensions/.test/common/deploy.test.bicep @@ -0,0 +1,58 @@ +targetScope = 'subscription' + +// ========== // +// Parameters // +// ========== // +@description('Optional. The name of the resource group to deploy for testing purposes.') +@maxLength(80) +param resourceGroupName string = 'ms.kubernetesconfiguration.extensions-${serviceShort}-rg' + +@description('Optional. The location to deploy resources to.') +param location string = deployment().location + +@description('Optional. A short identifier for the kind of deployment. Should be kept short to not run into resource-name length-constraints.') +param serviceShort string = 'kcecom' + +// =========== // +// Deployments // +// =========== // + +// General resources +// ================= +resource resourceGroup 'Microsoft.Resources/resourceGroups@2021-04-01' = { + name: resourceGroupName + location: location +} + +module resourceGroupResources 'dependencies.bicep' = { + scope: resourceGroup + name: '${uniqueString(deployment().name, location)}-paramNested' + params: { + clusterName: 'dep-<>-aks-${serviceShort}' + clusterNodeResourceGroupName: 'nodes-${resourceGroupName}' + } +} + +// ============== // +// Test Execution // +// ============== // + +module testDeployment '../../deploy.bicep' = { + scope: resourceGroup + name: '${uniqueString(deployment().name)}-test-${serviceShort}' + params: { + name: '<>${serviceShort}001' + clusterName: resourceGroupResources.outputs.clusterName + extensionType: 'microsoft.flux' + configurationSettings: { + 'image-automation-controller.enabled': 'false' + 'image-reflector-controller.enabled': 'false' + 'kustomize-controller.enabled': 'true' + 'notification-controller.enabled': 'false' + 'source-controller.enabled': 'true' + } + releaseNamespace: 'flux-system' + releaseTrain: 'Stable' + version: '0.5.2' + } +} diff --git a/modules/Microsoft.KubernetesConfiguration/extensions/.test/min.parameters.json b/modules/Microsoft.KubernetesConfiguration/extensions/.test/min.parameters.json deleted file mode 100644 index 8beee2d23b..0000000000 --- a/modules/Microsoft.KubernetesConfiguration/extensions/.test/min.parameters.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "value": "flux" - }, - "extensionType": { - "value": "microsoft.flux" - }, - "clusterName": { - "value": "<>-az-aks-kubenet-001" - }, - "releaseTrain": { - "value": "Stable" - }, - "releaseNamespace": { - "value": "flux-system" - } - } -} diff --git a/modules/Microsoft.KubernetesConfiguration/extensions/.test/min/dependencies.bicep b/modules/Microsoft.KubernetesConfiguration/extensions/.test/min/dependencies.bicep new file mode 100644 index 0000000000..813634fb2a --- /dev/null +++ b/modules/Microsoft.KubernetesConfiguration/extensions/.test/min/dependencies.bicep @@ -0,0 +1,32 @@ +@description('Optional. The location to deploy resources to.') +param location string = resourceGroup().location + +@description('Required. The name of the AKS cluster to create.') +param clusterName string + +@description('Required. The name of the AKS cluster nodes resource group to create.') +param clusterNodeResourceGroupName string + +resource cluster 'Microsoft.ContainerService/managedClusters@2022-06-01' = { + name: clusterName + location: location + identity: { + type: 'SystemAssigned' + } + properties: { + dnsPrefix: clusterName + nodeResourceGroup: clusterNodeResourceGroupName + agentPoolProfiles: [ + { + name: 'agentpool' + count: 1 + vmSize: 'Standard_DS2_v2' + osType: 'Linux' + mode: 'System' + } + ] + } +} + +@description('The name of the created AKS cluster.') +output clusterName string = cluster.name diff --git a/modules/Microsoft.KubernetesConfiguration/extensions/.test/min/deploy.test.bicep b/modules/Microsoft.KubernetesConfiguration/extensions/.test/min/deploy.test.bicep new file mode 100644 index 0000000000..d7bb8567d7 --- /dev/null +++ b/modules/Microsoft.KubernetesConfiguration/extensions/.test/min/deploy.test.bicep @@ -0,0 +1,50 @@ +targetScope = 'subscription' + +// ========== // +// Parameters // +// ========== // +@description('Optional. The name of the resource group to deploy for testing purposes.') +@maxLength(80) +param resourceGroupName string = 'ms.kubernetesconfiguration.extensions-${serviceShort}-rg' + +@description('Optional. The location to deploy resources to.') +param location string = deployment().location + +@description('Optional. A short identifier for the kind of deployment. Should be kept short to not run into resource-name length-constraints.') +param serviceShort string = 'kcemin' + +// =========== // +// Deployments // +// =========== // + +// General resources +// ================= +resource resourceGroup 'Microsoft.Resources/resourceGroups@2021-04-01' = { + name: resourceGroupName + location: location +} + +module resourceGroupResources 'dependencies.bicep' = { + scope: resourceGroup + name: '${uniqueString(deployment().name, location)}-paramNested' + params: { + clusterName: 'dep-<>-aks-${serviceShort}' + clusterNodeResourceGroupName: 'nodes-${resourceGroupName}' + } +} + +// ============== // +// Test Execution // +// ============== // + +module testDeployment '../../deploy.bicep' = { + scope: resourceGroup + name: '${uniqueString(deployment().name)}-test-${serviceShort}' + params: { + name: '<>${serviceShort}001' + clusterName: resourceGroupResources.outputs.clusterName + extensionType: 'microsoft.flux' + releaseNamespace: 'flux-system' + releaseTrain: 'Stable' + } +} diff --git a/modules/Microsoft.KubernetesConfiguration/extensions/.test/parameters.json b/modules/Microsoft.KubernetesConfiguration/extensions/.test/parameters.json deleted file mode 100644 index 29ca85067d..0000000000 --- a/modules/Microsoft.KubernetesConfiguration/extensions/.test/parameters.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "name": { - "value": "flux" - }, - "extensionType": { - "value": "microsoft.flux" - }, - "clusterName": { - "value": "<>-az-aks-kubenet-001" - }, - "releaseTrain": { - "value": "Stable" - }, - "releaseNamespace": { - "value": "flux-system" - }, - "version": { - "value": "0.5.2" - }, - "configurationSettings": { - "value": { - // "helm-controller.enabled": "false", - "source-controller.enabled": "true", - "kustomize-controller.enabled": "true", - "notification-controller.enabled": "false", - "image-automation-controller.enabled": "false", - "image-reflector-controller.enabled": "false" - } - } - } -} diff --git a/modules/Microsoft.KubernetesConfiguration/extensions/readme.md b/modules/Microsoft.KubernetesConfiguration/extensions/readme.md index 46c3302e95..9014c93dee 100644 --- a/modules/Microsoft.KubernetesConfiguration/extensions/readme.md +++ b/modules/Microsoft.KubernetesConfiguration/extensions/readme.md @@ -28,6 +28,7 @@ az provider register --namespace Microsoft.KubernetesConfiguration ``` For Details see [Prerequisites](https://docs.microsoft.com/en-us/azure/azure-arc/kubernetes/tutorial-use-gitops-flux2) + ## Resource Types | Resource Type | API Version | @@ -75,7 +76,7 @@ The following module usage examples are retrieved from the content of the files >**Note**: Each example lists all the required parameters first, followed by the rest - each in alphabetical order. -

Example 1: Min

+

Example 1: Common

@@ -83,15 +84,23 @@ The following module usage examples are retrieved from the content of the files ```bicep module extensions './Microsoft.KubernetesConfiguration/extensions/deploy.bicep' = { - name: '${uniqueString(deployment().name)}-Extensions' + name: '${uniqueString(deployment().name)}-test-kcecom' params: { // Required parameters - clusterName: '<>-az-aks-kubenet-001' + clusterName: '' extensionType: 'microsoft.flux' - name: 'flux' + name: '<>kcecom001' // Non-required parameters + configurationSettings: { + 'image-automation-controller.enabled': 'false' + 'image-reflector-controller.enabled': 'false' + 'kustomize-controller.enabled': 'true' + 'notification-controller.enabled': 'false' + 'source-controller.enabled': 'true' + } releaseNamespace: 'flux-system' releaseTrain: 'Stable' + version: '0.5.2' } } ``` @@ -110,20 +119,32 @@ module extensions './Microsoft.KubernetesConfiguration/extensions/deploy.bicep' "parameters": { // Required parameters "clusterName": { - "value": "<>-az-aks-kubenet-001" + "value": "" }, "extensionType": { "value": "microsoft.flux" }, "name": { - "value": "flux" + "value": "<>kcecom001" }, // Non-required parameters + "configurationSettings": { + "value": { + "image-automation-controller.enabled": "false", + "image-reflector-controller.enabled": "false", + "kustomize-controller.enabled": "true", + "notification-controller.enabled": "false", + "source-controller.enabled": "true" + } + }, "releaseNamespace": { "value": "flux-system" }, "releaseTrain": { "value": "Stable" + }, + "version": { + "value": "0.5.2" } } } @@ -132,7 +153,7 @@ module extensions './Microsoft.KubernetesConfiguration/extensions/deploy.bicep'

-

Example 2: Parameters

+

Example 2: Min

@@ -140,23 +161,15 @@ module extensions './Microsoft.KubernetesConfiguration/extensions/deploy.bicep' ```bicep module extensions './Microsoft.KubernetesConfiguration/extensions/deploy.bicep' = { - name: '${uniqueString(deployment().name)}-Extensions' + name: '${uniqueString(deployment().name)}-test-kcemin' params: { // Required parameters - clusterName: '<>-az-aks-kubenet-001' + clusterName: '' extensionType: 'microsoft.flux' - name: 'flux' + name: '<>kcemin001' // Non-required parameters - configurationSettings: { - 'image-automation-controller.enabled': 'false' - 'image-reflector-controller.enabled': 'false' - 'kustomize-controller.enabled': 'true' - 'notification-controller.enabled': 'false' - 'source-controller.enabled': 'true' - } releaseNamespace: 'flux-system' releaseTrain: 'Stable' - version: '0.5.2' } } ``` @@ -175,32 +188,20 @@ module extensions './Microsoft.KubernetesConfiguration/extensions/deploy.bicep' "parameters": { // Required parameters "clusterName": { - "value": "<>-az-aks-kubenet-001" + "value": "" }, "extensionType": { "value": "microsoft.flux" }, "name": { - "value": "flux" + "value": "<>kcemin001" }, // Non-required parameters - "configurationSettings": { - "value": { - "image-automation-controller.enabled": "false", - "image-reflector-controller.enabled": "false", - "kustomize-controller.enabled": "true", - "notification-controller.enabled": "false", - "source-controller.enabled": "true" - } - }, "releaseNamespace": { "value": "flux-system" }, "releaseTrain": { "value": "Stable" - }, - "version": { - "value": "0.5.2" } } }