1
- Invoke-LiveTestScenario - Name " Test_AKS_CURD " - Description " Test AKS Cluster CRUD and node pool CRU" - Platform Linux - PowerShellVersion Latest - ScenarioScript `
1
+ Invoke-LiveTestScenario - Name " Test_AKS_CRUD " - Description " Test AKS cluster CRUD and node pool CRU" - Platform Linux - PowerShellVersion Latest - ScenarioScript `
2
2
{
3
3
param ($rg )
4
4
5
- $resourceGroupName = $rg.ResourceGroupName
5
+ $rgName = $rg.ResourceGroupName
6
+ $location = " eastus"
6
7
7
- # Generate random resource name if necessary
8
- $kubeClusterName = New-LiveTestResourceName
8
+ $kubeName = New-LiveTestResourceName
9
+ $sysNodeName = New-LiveTestRandomName - Option StartWithLetter - Length 5
10
+ $usrNodeName = New-LiveTestRandomName - Option StartWithLetter - Length 5
9
11
10
- # step 1: create a default aks cluster with default node pool
12
+ $vnetName = New-LiveTestResourceName
13
+ $snetName = New-LiveTestResourceName
14
+ $nsgName = New-LiveTestResourceName
15
+ $pipName = New-LiveTestResourceName
16
+
17
+ # step 1: create an aks cluster with a node pool
11
18
' y' | ssh- keygen - t rsa -f id_rsa - q - N ' "123456"'
12
19
$sshKeyValue = Get-Content id_rsa.pub - Raw
13
20
@@ -19,130 +26,154 @@ Invoke-LiveTestScenario -Name "Test_AKS_CURD" -Description "Test AKS Cluster CRU
19
26
$servicePrincipalSecureSecret = ConvertTo-SecureString - String $ServicePrincipalSecret - AsPlainText - Force
20
27
$servicePrincipalCredential = New-Object - TypeName System.Management.Automation.PSCredential - ArgumentList $ServicePrincipalId , $servicePrincipalSecureSecret
21
28
22
- Write-Host " ##[section]Start to create Aks cluster : New-AzAksCluster"
23
- New-AzAksCluster - ResourceGroupName $resourceGroupName - Name $kubeClusterName - SshKeyValue $sshKeyValue - ServicePrincipalIdAndSecret $servicePrincipalCredential - AutoUpgradeChannel node- image
24
- Write-Host " ##[section]Finished creating Aks cluster : New-AzAksCluster"
29
+ $nsgRuleHighRiskPorts = New-AzNetworkSecurityRuleConfig - Name " DenyHighRiskPorts" - Direction Inbound - Priority 101 - Protocol Tcp - SourceAddressPrefix Internet - SourcePortRange * - DestinationAddressPrefix * - DestinationPortRange 22 , 3389 - Access Deny
30
+ $nsg = New-AzNetworkSecurityGroup - ResourceGroupName $rgName - Name $nsgName - Location $location - SecurityRules $nsgRuleHighRiskPorts
31
+ $snetCfg = New-AzVirtualNetworkSubnetConfig - Name $snetName - AddressPrefix 10.10 .1.0 / 24 - DefaultOutboundAccess $false - NetworkSecurityGroup $nsg
32
+ New-AzVirtualNetwork - ResourceGroupName $rgName - Name $vnetName - Location $location - AddressPrefix 10.10 .0.0 / 16 - Subnet $snetCfg
33
+
34
+ $snet = Get-AzVirtualNetwork - ResourceGroupName $rgName - Name $vnetName | Get-AzVirtualNetworkSubnetConfig - Name $snetName
35
+
36
+ $ipTag = New-AzPublicIpTag - IpTagType FirstPartyUsage - Tag " /NonProd"
37
+ $pip = New-AzPublicIpAddress - ResourceGroupName $rgName - Name $pipName - Location $location - AllocationMethod Static - Sku Standard - IpTag $ipTag
38
+
39
+ $kubeVersion = (Get-AzAksVersion - Location $location ).OrchestratorVersion | Sort-Object - Descending | Select-Object - Skip 2 - First 1
40
+
41
+ Write-Host " ##[section]Start creating AKS cluster : New-AzAksCluster"
25
42
26
- Write-Host " ##[section]Start to retrieve Aks cluster : Get-AzAksCluster"
27
- $cluster = Get-AzAksCluster - ResourceGroupName $resourceGroupName - Name $kubeClusterName
28
- Write-Host " ##[section]Finished retrieving Aks cluster : Get-AzAksCluster"
43
+ New-AzAksCluster - ResourceGroupName $rgName - Name $kubeName - SshKeyValue $sshKeyValue - ServicePrincipalIdAndSecret $servicePrincipalCredential - KubernetesVersion $kubeVersion - NodeName $sysNodeName - NodePoolMode System - NodeOsSKU AzureLinux - AutoUpgradeChannel node- image - NodeCount 2 - EnableNodeAutoScaling - NodeMinCount 1 - NodeMaxCount 3 - NetworkPlugin azure - NodeVnetSubnetID $snet.Id - LoadBalancerOutboundIp $pip.Id
29
44
30
- Assert-NotNull $cluster.Fqdn
31
- Assert-NotNull $cluster.KubernetesVersion
32
- Assert-NotNull $cluster.DnsPrefix
45
+ Write-Host " ##[section]Finished creating AKS cluster : New-AzAksCluster"
46
+
47
+ $cluster = Get-AzAksCluster - ResourceGroupName $rgName - Name $kubeName
48
+
49
+ Assert-NotNull $cluster
33
50
Assert-NotNull $cluster.NodeResourceGroup
51
+ Assert-AreEqual $rgName $cluster.ResourceGroupName
52
+ Assert-AreEqual $kubeName $cluster.Name
53
+ Assert-AreEqual $kubeVersion $cluster.KubernetesVersion
34
54
Assert-AreEqual " Succeeded" $cluster.ProvisioningState
35
- Assert-AreEqual 100 $cluster.MaxAgentPools
36
- Assert-AreEqual " default" $cluster.AgentPoolProfiles.Name
37
- Assert-AreEqual 1 $cluster.AgentPoolProfiles.Length
38
- Assert-AreEqual 3 $cluster.AgentPoolProfiles [0 ].Count
39
- Assert-NotNull $cluster.AgentPoolProfiles [0 ].NodeImageVersion
40
-
41
- Write-Host " ##[section]Start to retrieve Aks node pool : Get-AzAksNodePool"
42
- $pools = Get-AzAksNodePool - ResourceGroupName $resourceGroupName - ClusterName $kubeClusterName
43
- Write-Host " ##[section]Finished retrieving Aks node pool : Get-AzAksNodePool"
44
-
45
- Assert-NotNull $pools.VmSize
46
- Assert-NotNull $pools.OsDiskSizeGB
47
- Assert-NotNull $pools.OrchestratorVersion
48
- Assert-NotNull $pools.NodeImageVersion
49
- Assert-NotNull $pools.Id
50
- Assert-AreEqual " Managed" $pools.OsDiskType
51
- Assert-AreEqual " OS" $pools.KubeletDiskType
52
- Assert-AreEqual 30 $pools.MaxPods
53
- Assert-AreEqual " Linux" $pools.OsType
54
- Assert-AreEqual " Ubuntu" $pools.OsSKU
55
- Assert-AreEqual " System" $pools.Mode
56
- Assert-AreEqual " VirtualMachineScaleSets" $pools.AgentPoolType
57
- Assert-AreEqual " Succeeded" $pools.ProvisioningState
58
- Assert-AreEqual " Running" $pools.PowerState.Code
59
- Assert-AreEqual 0 $pools.Tags.Count
60
- Assert-AreEqual 0 $pools.NodeLabels.Count
61
- Assert-AreEqual 0 $pools.NodeTaints.Count
62
- Assert-AreEqual " Microsoft.ContainerService/managedClusters/agentPools" $pools.Type
63
- Assert-AreEqual 3 $pools.Count
64
- Assert-Null $pools.VnetSubnetID
65
- Assert-Null $pools.PodSubnetID
66
- Assert-Null $pools.MaxCount
67
- Assert-Null $pools.MinCount
68
- Assert-Null $pools.ScaleSetPriority
69
- Assert-Null $pools.ScaleSetEvictionPolicy
70
- Assert-Null $pools.NodePublicIPPrefixID
71
- Assert-Null $pools.SpotMaxPrice
72
- Assert-Null $pools.ProximityPlacementGroupID
73
- Assert-Null $pools.KubeletConfig
74
- Assert-Null $pools.LinuxOSConfig
75
- Assert-Null $pools.EnableEncryptionAtHost
76
- Assert-Null $pools.EnableUltraSSD
77
- Assert-Null $pools.GpuInstanceProfile
78
- Assert-Null $pools.CreationData
79
- Assert-Null $pools.HostGroupID
80
- Assert-False { $pools.EnableFIPS }
55
+ Assert-AreEqual " node-image" $cluster.AutoUpgradeProfile.UpgradeChannel
56
+
57
+ $agentPool = $cluster.AgentPoolProfiles
58
+
59
+ Assert-NotNull $agentPool
60
+ Assert-AreEqual 1 @ ($agentPool ).Length
61
+ Assert-AreEqual $sysNodeName $agentPool.Name
62
+ Assert-AreEqual $kubeVersion $agentPool.OrchestratorVersion
63
+ Assert-AreEqual " Linux" $agentPool.OsType
64
+ Assert-AreEqual " AzureLinux" $agentPool.OsSKU
65
+ Assert-AreEqual " System" $agentPool.Mode
66
+ Assert-AreEqual " VirtualMachineScaleSets" $agentPool.Type
67
+ Assert-AreEqual $snet.Id $agentPool.VnetSubnetID
68
+ Assert-AreEqual " Succeeded" $agentPool.ProvisioningState
69
+ Assert-AreEqual " True" $agentPool.EnableAutoScaling
70
+
71
+ $nodePool = Get-AzAksNodePool - ResourceGroupName $rgName - ClusterName $kubeName
72
+
73
+ Assert-NotNull $nodePool
74
+ Assert-AreEqual 1 @ ($nodePool ).Length
75
+ Assert-AreEqual $sysNodeName $nodePool.Name
76
+ Assert-AreEqual $kubeVersion $nodePool.OrchestratorVersion
77
+ Assert-AreEqual " Linux" $nodePool.OsType
78
+ Assert-AreEqual " AzureLinux" $nodePool.OsSKU
79
+ Assert-AreEqual " System" $nodePool.Mode
80
+ Assert-AreEqual " VirtualMachineScaleSets" $nodePool.AgentPoolType
81
+ Assert-AreEqual $snet.Id $nodePool.VnetSubnetID
82
+ Assert-AreEqual " Succeeded" $nodePool.ProvisioningState
83
+ Assert-AreEqual " True" $nodePool.EnableAutoScaling
81
84
82
85
# step 2: update the aks cluster
83
- Write-Host " ##[section]Start to update Aks cluster : Set-AzAksCluster"
84
- $cluster = $cluster | Set-AzAksCluster - NodeCount 4 - EnableUptimeSLA
85
- Write-Host " ##[section]Finished updating Aks cluster : Set-AzAksCluster"
86
+ Write-Host " ##[section]Start to update AKS cluster : Set-AzAksCluster"
87
+
88
+ $cluster = $cluster | Set-AzAksCluster - NodeName $sysNodeName - NodeCount 4 - EnableNodeAutoScaling:$false
89
+
90
+ Write-Host " ##[section]Finished updating AKS cluster : Set-AzAksCluster"
86
91
87
- Assert-AreEqual 4 $cluster.AgentPoolProfiles [ 0 ].Count
88
- # Assert-AreEqual "Basic " $cluster.Sku.Name
89
- # Assert-AreEqual "Paid" $ cluster.Sku.Tier
92
+ Assert-NotNull $cluster
93
+ Assert-AreEqual " False " $cluster.AgentPoolProfiles.EnableAutoScaling
94
+ Assert-AreEqual 4 $ ( $ cluster.AgentPoolProfiles ).Count
90
95
91
96
# step 3: create the second node pool
92
- $pool1Name = " default"
93
- $pool2Name = " pool2"
97
+ Write-Host " ##[section]Start to create AKS node pool : New-AzAksNodePool"
94
98
95
- Write-Host " ##[section]Start to create Aks node pool : New-AzAksNodePool"
96
- New-AzAksNodePool - ResourceGroupName $resourceGroupName - ClusterName $kubeClusterName - Name $pool2Name - OsType " Windows" - OsSKU " Windows2022" - Count 1 - VmSetType VirtualMachineScaleSets
97
- Write-Host " ##[section]Finished creating Aks node pool : New-AzAksNodePool"
99
+ New-AzAksNodePool - ResourceGroupName $rgName - ClusterName $kubeName - Name $usrNodeName - Mode User - OsType Windows - OsSKU Windows2022 - VmSetType VirtualMachineScaleSets - Count 2
98
100
99
- Write-Host " ##[section]Start to retrieve Aks node pool : Get-AzAksNodePool"
100
- $pools = Get-AzAksNodePool - ResourceGroupName $resourceGroupName - ClusterName $kubeClusterName
101
- Write-Host " ##[section]Finished retrieving Aks node pool : Get-AzAksNodePool"
101
+ Write-Host " ##[section]Finished creating AKS node pool : New-AzAksNodePool"
102
102
103
- Assert-AreEqual 2 $pools.Count
104
- Assert-AreEqualArray " Linux" ($pools | where { $_.Name -eq $pool1Name }).OsType
105
- Assert-AreEqualArray " Ubuntu" ($pools | where { $_.Name -eq $pool1Name }).OsSKU
106
- Assert-AreEqualArray " Windows" ($pools | where { $_.Name -eq $pool2Name }).OsType
107
- Assert-AreEqualArray " Windows2022" ($pools | where { $_.Name -eq $pool2Name }).OsSKU
103
+ $nodePools = Get-AzAksNodePool - ResourceGroupName $rgName - ClusterName $kubeName
104
+ $sysPool = $nodePools | Where-Object Name -eq $sysNodeName
105
+ $usrPool = $nodePools | Where-Object Name -eq $usrNodeName
106
+
107
+ Assert-NotNull $nodePools
108
+ Assert-AreEqual 2 @ ($nodePools ).Length
109
+
110
+ Assert-NotNull $sysPool
111
+ Assert-AreEqual $sysNodeName $sysPool.Name
112
+ Assert-AreEqual " System" $sysPool.Mode
113
+ Assert-AreEqual " Linux" $sysPool.OsType
114
+ Assert-AreEqual " AzureLinux" $sysPool.OsSKU
115
+
116
+ Assert-NotNull $usrPool
117
+ Assert-AreEqual $usrNodeName $usrPool.Name
118
+ Assert-AreEqual " User" $usrPool.Mode
119
+ Assert-AreEqual " Windows" $usrPool.OsType
120
+ Assert-AreEqual " Windows2022" $usrPool.OsSKU
108
121
109
122
# step4: update the second node pool
110
123
$labels = @ {" someId" = 127 ; " tier" = " frontend" ; " environment" = " qa" }
111
124
$tags = @ {" dept" = " MM" ; " costcenter" = 7777 ; " Admin" = " Cindy" }
112
125
113
126
Write-Host " ##[section]Start to update Aks node pool : Update-AzAksNodePool"
114
- Update-AzAksNodePool - ResourceGroupName $resourceGroupName - ClusterName $kubeClusterName - Name $pool2Name - NodeLabel $labels - Tag $tags
115
- Write-Host " ##[section]Finished updating Aks node pool : Update-AzAksNodePool"
116
127
117
- Write-Host " ##[section]Start to retrieve Aks cluster : Get-AzAksCluster"
118
- $cluster = Get-AzAksCluster - ResourceGroupName $resourceGroupName - Name $kubeClusterName
119
- Write-Host " ##[section]Finished retrieving Aks cluster : Get-AzAksCluster"
120
-
121
- Assert-AreEqual 2 $cluster.AgentPoolProfiles.Count
122
- Assert-AreEqual 0 ($cluster.AgentPoolProfiles | where { $_.Name -eq $pool1Name }).NodeLabels.Count
123
- Assert-AreEqual 0 ($cluster.AgentPoolProfiles | where { $_.Name -eq $pool1Name }).Tags.Count
124
- Assert-AreEqual 127 ($cluster.AgentPoolProfiles | where { $_.Name -eq $pool2Name }).NodeLabels.someId
125
- Assert-AreEqual frontend ($cluster.AgentPoolProfiles | where { $_.Name -eq $pool2Name }).NodeLabels.tier
126
- Assert-AreEqual qa ($cluster.AgentPoolProfiles | where { $_.Name -eq $pool2Name }).NodeLabels.environment
127
- Assert-AreEqual MM ($cluster.AgentPoolProfiles | where { $_.Name -eq $pool2Name }).Tags.dept
128
- Assert-AreEqual 7777 ($cluster.AgentPoolProfiles | where { $_.Name -eq $pool2Name }).Tags.costcenter
129
- Assert-AreEqual Cindy ($cluster.AgentPoolProfiles | where { $_.Name -eq $pool2Name }).Tags.Admin
130
-
131
- Write-Host " ##[section]Start to retrieve Aks node pool : Get-AzAksNodePool"
132
- $pools = Get-AzAksNodePool - ResourceGroupName $resourceGroupName - ClusterName $kubeClusterName
133
- Write-Host " ##[section]Finished retrieving Aks node pool : Get-AzAksNodePool"
134
-
135
- Assert-AreEqual 2 $pools.Count
136
- Assert-AreEqual 0 ($pools | where { $_.Name -eq $pool1Name }).NodeLabels.Count
137
- Assert-AreEqual 0 ($pools | where { $_.Name -eq $pool1Name }).Tags.Count
138
- Assert-AreEqual 127 ($pools | where { $_.Name -eq $pool2Name }).NodeLabels.someId
139
- Assert-AreEqual frontend ($pools | where { $_.Name -eq $pool2Name }).NodeLabels.tier
140
- Assert-AreEqual qa ($pools | where { $_.Name -eq $pool2Name }).NodeLabels.environment
141
- Assert-AreEqual MM ($pools | where { $_.Name -eq $pool2Name }).Tags.dept
142
- Assert-AreEqual 7777 ($pools | where { $_.Name -eq $pool2Name }).Tags.costcenter
143
- Assert-AreEqual Cindy ($pools | where { $_.Name -eq $pool2Name }).Tags.Admin
128
+ Update-AzAksNodePool - ResourceGroupName $rgName - ClusterName $kubeName - Name $usrNodeName - NodeLabel $labels - Tag $tags
144
129
130
+ Write-Host " ##[section]Finished updating Aks node pool : Update-AzAksNodePool"
131
+
132
+ $cluster = Get-AzAksCluster - ResourceGroupName $rgName - Name $kubeName
133
+ $sysPool = $cluster.AgentPoolProfiles | Where-Object Name -eq $sysNodeName
134
+ $usrPool = $cluster.AgentPoolProfiles | Where-Object Name -eq $usrNodeName
135
+
136
+ Assert-NotNull $cluster
137
+ Assert-AreEqual 2 @ ($cluster.AgentPoolProfiles ).Length
138
+
139
+ Assert-NotNull $sysPool
140
+ Assert-Null $sysPool.NodeLabels
141
+ Assert-Null $sysPool.Tags
142
+
143
+ Assert-NotNull $usrPool
144
+ Assert-AreEqual 127 $usrPool.NodeLabels.someId
145
+ Assert-AreEqual " frontend" $usrPool.NodeLabels.tier
146
+ Assert-AreEqual " qa" $usrPool.NodeLabels.environment
147
+ Assert-AreEqual " MM" $usrPool.Tags.dept
148
+ Assert-AreEqual 7777 $usrPool.Tags.costcenter
149
+ Assert-AreEqual " Cindy" $usrPool.Tags.Admin
150
+
151
+ $nodePools = Get-AzAksNodePool - ResourceGroupName $rgName - ClusterName $kubeName
152
+ $sysPool = $nodePools | Where-Object Name -eq $sysNodeName
153
+ $usrPool = $nodePools | Where-Object Name -eq $usrNodeName
154
+
155
+ Assert-NotNull $nodePools
156
+ Assert-AreEqual 2 @ ($nodePools ).Length
157
+
158
+ Assert-NotNull $sysPool
159
+ Assert-AreEqual $sysPool.NodeLabels
160
+ Assert-AreEqual $sysPool.Tags
161
+
162
+ Assert-NotNull $usrPool
163
+ Assert-AreEqual 127 $usrPool.NodeLabels.someId
164
+ Assert-AreEqual " frontend" $usrPool.NodeLabels.tier
165
+ Assert-AreEqual " qa" $usrPool.NodeLabels.environment
166
+ Assert-AreEqual " MM" $usrPool.Tags.dept
167
+ Assert-AreEqual 7777 $usrPool.Tags.costcenter
168
+ Assert-AreEqual " Cindy" $usrPool.Tags.Admin
169
+
170
+ # step 5: remove the AKS cluster
145
171
Write-Host " ##[section]Start to remove Aks cluster : Remove-AzAksCluster"
172
+
146
173
$cluster | Remove-AzAksCluster - Force
174
+
147
175
Write-Host " ##[section]Finished removing Aks cluster : Remove-AzAksCluster"
176
+
177
+ $cluster = Get-AzAksCluster - ResourceGroupName $rgName - Name $kubeName - ErrorAction SilentlyContinue
178
+ Assert-Null $cluster
148
179
}
0 commit comments