Skip to content

Commit 74f47f7

Browse files
authored
[AKS] support parameter Mode in nodepool (#20194)
1 parent 517b636 commit 74f47f7

File tree

10 files changed

+4999
-6
lines changed

10 files changed

+4999
-6
lines changed

src/Aks/Aks.Test/ScenarioTests/NodePoolTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,12 @@ public void TestAksNodePool()
1616
{
1717
TestRunner.RunTestScript("Test-NewNodePool");
1818
}
19+
20+
[Fact]
21+
[Trait(Category.AcceptanceType, Category.CheckIn)]
22+
public void TestNodePoolMode()
23+
{
24+
TestRunner.RunTestScript("Test-NodePoolMode");
25+
}
1926
}
2027
}

src/Aks/Aks.Test/ScenarioTests/NodePoolTests.ps1

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,94 @@ function Test-NewNodePool
5858
Remove-AzResourceGroup -Name $resourceGroupName -Force
5959
}
6060
}
61+
62+
function Test-NodePoolMode
63+
{
64+
# Setup
65+
$resourceGroupName = Get-RandomResourceGroupName
66+
$kubeClusterName = Get-RandomClusterName
67+
$location = 'eastus'
68+
$nodeVmSize = "Standard_D2_v2"
69+
70+
try
71+
{
72+
New-AzResourceGroup -Name $resourceGroupName -Location $location
73+
74+
# creat default pool, mode=system
75+
New-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName -NodeVmSize $nodeVmSize -NodeCount 1
76+
77+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
78+
Assert-AreEqual 1 $cluster.AgentPoolProfiles.Count
79+
Assert-AreEqual "default" $cluster.AgentPoolProfiles[0].Name
80+
Assert-AreEqual "System" $cluster.AgentPoolProfiles[0].Mode
81+
82+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
83+
Assert-AreEqual "default" $pools.Name
84+
Assert-AreEqual "System" $pools.Mode
85+
86+
87+
# create the 2nd nodepool, default mode, mode=User
88+
New-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName -Name "pool2" -Count 1
89+
90+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
91+
Assert-AreEqual 2 $cluster.AgentPoolProfiles.Count
92+
Assert-AreEqual "System" ($cluster.AgentPoolProfiles | where {$_.Name -eq "default"}).Mode
93+
Assert-AreEqual "User" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).Mode
94+
95+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
96+
Assert-AreEqual 2 $pools.Count
97+
Assert-AreEqual "System" ($pools | where {$_.Name -eq "default"}).Mode
98+
Assert-AreEqual "User" ($pools | where {$_.Name -eq "pool2"}).Mode
99+
100+
# create the 3rd nodepool, mode=System
101+
New-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName -Name "pool3" -Count 1 -Mode System
102+
103+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
104+
Assert-AreEqual 3 $cluster.AgentPoolProfiles.Count
105+
Assert-AreEqual "System" ($cluster.AgentPoolProfiles | where {$_.Name -eq "default"}).Mode
106+
Assert-AreEqual "User" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).Mode
107+
Assert-AreEqual "System" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool3"}).Mode
108+
109+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
110+
Assert-AreEqual 3 $pools.Count
111+
Assert-AreEqual "System" ($pools | where {$_.Name -eq "default"}).Mode
112+
Assert-AreEqual "User" ($pools | where {$_.Name -eq "pool2"}).Mode
113+
Assert-AreEqual "System" ($pools | where {$_.Name -eq "pool3"}).Mode
114+
115+
# update the 3rd nodepool, mode=User
116+
Update-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName -Name "pool3" -Mode User
117+
118+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
119+
Assert-AreEqual 3 $cluster.AgentPoolProfiles.Count
120+
Assert-AreEqual "System" ($cluster.AgentPoolProfiles | where {$_.Name -eq "default"}).Mode
121+
Assert-AreEqual "User" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).Mode
122+
Assert-AreEqual "User" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool3"}).Mode
123+
124+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
125+
Assert-AreEqual 3 $pools.Count
126+
Assert-AreEqual "System" ($pools | where {$_.Name -eq "default"}).Mode
127+
Assert-AreEqual "User" ($pools | where {$_.Name -eq "pool2"}).Mode
128+
Assert-AreEqual "User" ($pools | where {$_.Name -eq "pool3"}).Mode
129+
130+
# update the 2nd nodepool, mode=System
131+
Set-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName -NodeName "pool2" -NodePoolMode System
132+
133+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
134+
Assert-AreEqual 3 $cluster.AgentPoolProfiles.Count
135+
Assert-AreEqual "System" ($cluster.AgentPoolProfiles | where {$_.Name -eq "default"}).Mode
136+
Assert-AreEqual "System" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool2"}).Mode
137+
Assert-AreEqual "User" ($cluster.AgentPoolProfiles | where {$_.Name -eq "pool3"}).Mode
138+
139+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
140+
Assert-AreEqual 3 $pools.Count
141+
Assert-AreEqual "System" ($pools | where {$_.Name -eq "default"}).Mode
142+
Assert-AreEqual "System" ($pools | where {$_.Name -eq "pool2"}).Mode
143+
Assert-AreEqual "User" ($pools | where {$_.Name -eq "pool3"}).Mode
144+
145+
$cluster | Remove-AzAksCluster -Force
146+
}
147+
finally
148+
{
149+
Remove-AzResourceGroup -Name $resourceGroupName -Force
150+
}
151+
}

src/Aks/Aks.Test/SessionRecords/Commands.Aks.Test.ScenarioTests.NodePoolTests/TestNodePoolMode.json

Lines changed: 4843 additions & 0 deletions
Large diffs are not rendered by default.

src/Aks/Aks/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
## Upcoming Release
2121
* Bumped API version to 2022-09-01
2222
* Added parameter `NodeOsSKU` for `New-AzAksCluster` and parameter `OsSKU` for `New-AzAksNodePool`
23+
* Added parameter `Mode` for `New-AzAksNodePool` and `Update-AzAksNodePool`
2324

2425
## Version 5.0.1
2526
* Upgraded AutoMapper to Microsoft.Azure.PowerShell.AutoMapper 6.2.2 with fix [#18721]

src/Aks/Aks/Commands/NewAzureRmAksNodePool.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ private AgentPool GetAgentPool()
170170
{
171171
agentPool.EnableAutoScaling = EnableAutoScaling.ToBool();
172172
}
173+
if (this.IsParameterBound(c => c.Mode))
174+
{
175+
agentPool.Mode = Mode;
176+
}
173177
if (EnableNodePublicIp.IsPresent)
174178
{
175179
agentPool.EnableNodePublicIP = EnableNodePublicIp.ToBool();

src/Aks/Aks/Commands/NewOrUpdateAgentPoolBase.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
// limitations under the License.
1313
// ----------------------------------------------------------------------------------
1414

15+
using Microsoft.Azure.Commands.ResourceManager.Common.ArgumentCompleters;
1516
using System.Management.Automation;
1617

1718
namespace Microsoft.Azure.Commands.Aks
@@ -30,5 +31,12 @@ public class NewOrUpdateAgentPoolBase : KubeCmdletBase
3031

3132
[Parameter(Mandatory = false, HelpMessage = "Whether to enable auto-scaler")]
3233
public SwitchParameter EnableAutoScaling { get; set; }
34+
35+
/// <summary>
36+
/// Gets or sets possible values include: 'System', 'User'
37+
/// </summary>
38+
[Parameter(Mandatory = false, HelpMessage = "The pool mode")]
39+
[PSArgumentCompleter("System", "User")]
40+
public string Mode { get; set; }
3341
}
3442
}

src/Aks/Aks/Commands/UpdateAzureRmAksNodePool.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,10 @@ public override void ExecuteCmdlet()
139139
{
140140
pool.EnableAutoScaling = EnableAutoScaling.ToBool();
141141
}
142+
if (this.IsParameterBound(c => c.Mode))
143+
{
144+
pool.Mode = Mode;
145+
}
142146
if (this.IsParameterBound(c => c.NodeCount))
143147
{
144148
pool.Count = NodeCount;

src/Aks/Aks/Models/PSNodePool.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,11 @@ public partial class PSNodePool : PSSubResource
139139

140140
public bool? EnableAutoScaling { get; set; }
141141

142+
/// <summary>
143+
/// Gets or sets mode for agent pool System or User
144+
/// </summary>
145+
public string Mode { get; set; }
146+
142147
/// <summary>
143148
/// Gets or sets agentPoolType represents types of an node pool.
144149
/// Possible values include: 'VirtualMachineScaleSets',

src/Aks/Aks/help/New-AzAksNodePool.md

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ New-AzAksNodePool -ResourceGroupName <String> -ClusterName <String> -Name <Strin
1818
[-OsDiskSize <Int32>] [-VmSize <String>] [-VnetSubnetID <String>] [-MaxPodCount <Int32>] [-OsType <String>]
1919
[-OsSKU <String>] [-EnableNodePublicIp] [-NodePublicIPPrefixID <String>] [-ScaleSetPriority <String>]
2020
[-ScaleSetEvictionPolicy <String>] [-VmSetType <String>] [-AvailabilityZone <String[]>] [-Force]
21-
[-KubernetesVersion <String>] [-MinCount <Int32>] [-MaxCount <Int32>] [-EnableAutoScaling]
21+
[-KubernetesVersion <String>] [-MinCount <Int32>] [-MaxCount <Int32>] [-EnableAutoScaling] [-Mode <String>]
2222
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [-SubscriptionId <String>]
2323
[<CommonParameters>]
2424
```
@@ -29,7 +29,7 @@ New-AzAksNodePool -Name <String> -ClusterObject <PSKubernetesCluster> [-Count <I
2929
[-VmSize <String>] [-VnetSubnetID <String>] [-MaxPodCount <Int32>] [-OsType <String>] [-OsSKU <String>]
3030
[-EnableNodePublicIp] [-NodePublicIPPrefixID <String>] [-ScaleSetPriority <String>]
3131
[-ScaleSetEvictionPolicy <String>] [-VmSetType <String>] [-AvailabilityZone <String[]>] [-Force]
32-
[-KubernetesVersion <String>] [-MinCount <Int32>] [-MaxCount <Int32>] [-EnableAutoScaling]
32+
[-KubernetesVersion <String>] [-MinCount <Int32>] [-MaxCount <Int32>] [-EnableAutoScaling] [-Mode <String>]
3333
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [-SubscriptionId <String>]
3434
[<CommonParameters>]
3535
```
@@ -233,6 +233,21 @@ Accept pipeline input: False
233233
Accept wildcard characters: False
234234
```
235235
236+
### -Mode
237+
The pool mode
238+
239+
```yaml
240+
Type: System.String
241+
Parameter Sets: (All)
242+
Aliases:
243+
244+
Required: False
245+
Position: Named
246+
Default value: None
247+
Accept pipeline input: False
248+
Accept wildcard characters: False
249+
```
250+
236251
### -Name
237252
The name of the node pool.
238253

src/Aks/Aks/help/Update-AzAksNodePool.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,30 @@ Update node pool in a managed cluster.
1616
```
1717
Update-AzAksNodePool -ResourceGroupName <String> -ClusterName <String> -Name <String> [-NodeCount <Int32>]
1818
[-NodeImageOnly] [-AsJob] [-Force] [-KubernetesVersion <String>] [-MinCount <Int32>] [-MaxCount <Int32>]
19-
[-EnableAutoScaling] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
19+
[-EnableAutoScaling] [-Mode <String>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm]
2020
[-SubscriptionId <String>] [<CommonParameters>]
2121
```
2222

2323
### ParentObjectParameterSet
2424
```
2525
Update-AzAksNodePool -Name <String> -ClusterObject <PSKubernetesCluster> [-NodeCount <Int32>] [-NodeImageOnly]
2626
[-AsJob] [-Force] [-KubernetesVersion <String>] [-MinCount <Int32>] [-MaxCount <Int32>] [-EnableAutoScaling]
27-
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [-SubscriptionId <String>]
27+
[-Mode <String>] [-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [-SubscriptionId <String>]
2828
[<CommonParameters>]
2929
```
3030

3131
### InputObjectParameterSet
3232
```
3333
Update-AzAksNodePool -InputObject <PSNodePool> [-NodeCount <Int32>] [-NodeImageOnly] [-AsJob] [-Force]
34-
[-KubernetesVersion <String>] [-MinCount <Int32>] [-MaxCount <Int32>] [-EnableAutoScaling]
34+
[-KubernetesVersion <String>] [-MinCount <Int32>] [-MaxCount <Int32>] [-EnableAutoScaling] [-Mode <String>]
3535
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [-SubscriptionId <String>]
3636
[<CommonParameters>]
3737
```
3838

3939
### IdParameterSet
4040
```
4141
Update-AzAksNodePool -Id <String> [-NodeCount <Int32>] [-NodeImageOnly] [-AsJob] [-Force]
42-
[-KubernetesVersion <String>] [-MinCount <Int32>] [-MaxCount <Int32>] [-EnableAutoScaling]
42+
[-KubernetesVersion <String>] [-MinCount <Int32>] [-MaxCount <Int32>] [-EnableAutoScaling] [-Mode <String>]
4343
[-DefaultProfile <IAzureContextContainer>] [-WhatIf] [-Confirm] [-SubscriptionId <String>]
4444
[<CommonParameters>]
4545
```
@@ -221,6 +221,21 @@ Accept pipeline input: False
221221
Accept wildcard characters: False
222222
```
223223
224+
### -Mode
225+
The pool mode
226+
227+
```yaml
228+
Type: System.String
229+
Parameter Sets: (All)
230+
Aliases:
231+
232+
Required: False
233+
Position: Named
234+
Default value: None
235+
Accept pipeline input: False
236+
Accept wildcard characters: False
237+
```
238+
224239
### -Name
225240
The name of the node pool.
226241

0 commit comments

Comments
 (0)