Skip to content

Commit 9d326e0

Browse files
authored
[AKS] support LinuxOSConfig and KubeletConfig (#20415)
1 parent fe380e7 commit 9d326e0

File tree

9 files changed

+3197
-25
lines changed

9 files changed

+3197
-25
lines changed

src/Aks/Aks.Test/ScenarioTests/Common.ps1

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,109 @@ function Assert-HashTableEquals {
115115
}
116116

117117
foreach ($key in $expected.Keys) {
118-
if (-not $expected.ContainsKey($key)) {
118+
if (-not $actual.ContainsKey($key)) {
119119
throw $message
120120
}
121121
if ($expected[$key] -ne $actual[$key]) {
122122
throw $message
123123
}
124124
}
125125

126+
return $true
127+
}
128+
129+
function Assert-ObjectEquals {
130+
param($expected, $actual, [string] $message)
131+
132+
if (!$message) {
133+
$expectedStr = $expected | Out-String
134+
$actualStr = $actual | Out-String
135+
$message = "Assertion failed because '$expectedStr' does not match actual '$actualStr'"
136+
}
137+
138+
if ($expected -eq $null -and $actual -eq $null) {
139+
return $true
140+
}
141+
142+
if ($expected -eq $null -and $actual -ne $null) {
143+
if ($actual -is [string] -and $actual -eq "") {
144+
return $true
145+
}
146+
else {
147+
throw $message
148+
}
149+
}
150+
151+
if ($actual -eq $null -and $expected -ne $null) {
152+
if ($expected -is [string] -and $expected -eq "") {
153+
return $true
154+
}
155+
else {
156+
throw $message
157+
}
158+
}
159+
160+
if ($expected.GetType() -ne $actual.GetType()) {
161+
throw $message
162+
}
163+
164+
if ($expected -eq $actual) {
165+
return $true
166+
}
167+
168+
if ( -not ($expected.GetType().IsClass) ) {
169+
throw $message
170+
}
171+
if ($expected -is [string]) {
172+
throw $message
173+
}
174+
if ($expected -is [array]) {
175+
$expectedArray = [array]$expected
176+
$actualArray = [array]$actual
177+
if ($expectedArray.Count -ne $actualArray.Count) {
178+
throw $message
179+
}
180+
For ($i = 0; $i -lt $expectedArray.Count; $i++) {
181+
Assert-ObjectEquals $expectedArray[$i] $actualArray[$i]
182+
}
183+
184+
}
185+
elseif ($expected -is [hashtable]) {
186+
$expectedHashTable = [hashtable]$expected
187+
$actualHashTable = [hashtable]$actual
188+
if ($expectedHashTable.Count -ne $actualHashTable.Count) {
189+
throw $message
190+
}
191+
foreach ($key in $expectedHashTable.Keys) {
192+
if (-not (Assert-ObjectEquals $expectedHashTable[$key] $actualHashTable[$key])) {
193+
throw $message
194+
}
195+
}
196+
}
197+
else {
198+
$expectedProperties = ($expected | Get-Member -MemberType Property).Name
199+
$actualProperties = ($actual | Get-Member -MemberType Property).Name
200+
201+
if ($expectedProperties.Count -ne $actualProperties.Count) {
202+
throw $message
203+
}
204+
if ($expectedProperties.Count -eq 0) {
205+
return $true
206+
}
207+
208+
foreach ($propertyName in $expectedProperties) {
209+
if ($actualProperties.GetType().ToString() -eq "System.String") {
210+
Write-Host $actualProperties
211+
}
212+
if (-not $actualProperties.Contains($propertyName)) {
213+
throw $message
214+
}
215+
216+
if ( -not (Assert-ObjectEquals $expected.$propertyName $actual.$propertyName)) {
217+
throw $message
218+
}
219+
}
220+
}
221+
126222
return $true
127223
}

src/Aks/Aks.Test/ScenarioTests/KubernetesTests.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void TestNewAzAksWithAcr()
4444
{
4545
TestRunner.RunTestScript("Test-NewAzAksWithAcr");
4646
}
47-
47+
4848
[Fact(Skip = "Updating service principal profile is not allowed on MSI cluster.")]
4949
[Trait(Category.AcceptanceType, Category.CheckIn)]
5050
public void TestResetAzureKubernetesServicePrincipal()
@@ -114,5 +114,12 @@ public void TestEnableUltraSSD()
114114
{
115115
TestRunner.RunTestScript("Test-EnableUltraSSD");
116116
}
117+
118+
[Fact]
119+
[Trait(Category.AcceptanceType, Category.CheckIn)]
120+
public void TestLinuxOSConfig()
121+
{
122+
TestRunner.RunTestScript("Test-LinuxOSConfig");
123+
}
117124
}
118125
}

src/Aks/Aks.Test/ScenarioTests/KubernetesTests.ps1

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,4 +613,67 @@ function Test-EnableUltraSSD {
613613
finally {
614614
Remove-AzResourceGroup -Name $resourceGroupName -Force
615615
}
616+
}
617+
618+
function Test-LinuxOSConfig {
619+
# Setup
620+
$resourceGroupName = Get-RandomResourceGroupName
621+
$kubeClusterName = Get-RandomClusterName
622+
$location = 'eastus'
623+
$nodeVmSize = "Standard_D2_v2"
624+
625+
try {
626+
New-AzResourceGroup -Name $resourceGroupName -Location $location
627+
628+
# create aks cluster with default nodepool
629+
$linuxOsConfigJsonStr = @'
630+
{
631+
"transparentHugePageEnabled": "madvise",
632+
"transparentHugePageDefrag": "defer+madvise",
633+
"swapFileSizeMB": 1500,
634+
"sysctls": {
635+
"netCoreSomaxconn": 163849,
636+
"netIpv4TcpTwReuse": true,
637+
"netIpv4IpLocalPortRange": "32000 60000"
638+
}
639+
}
640+
'@
641+
$linuxOsConfig = [Microsoft.Azure.Management.ContainerService.Models.LinuxOSConfig] ($linuxOsConfigJsonStr | ConvertFrom-Json)
642+
$kubeletConfigStr = @'
643+
{
644+
"failSwapOn": false
645+
}
646+
'@
647+
$kubeletConfig = [Microsoft.Azure.Management.ContainerService.Models.KubeletConfig] ($kubeletConfigStr | ConvertFrom-Json)
648+
649+
New-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName -NodeVmSize $nodeVmSize -NodeCount 1 -NodeLinuxOSConfig $linuxOsConfig -NodeKubeletConfig $kubeletConfig
650+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
651+
Assert-AreEqual 1 $cluster.AgentPoolProfiles.Count
652+
Assert-ObjectEquals $linuxOsConfig $cluster.AgentPoolProfiles[0].LinuxOSConfig
653+
Assert-ObjectEquals $kubeletConfig $cluster.AgentPoolProfiles[0].KubeletConfig
654+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
655+
Assert-AreEqual 1 $pools.Count
656+
Assert-ObjectEquals $linuxOsConfig $pools[0].LinuxOSConfig
657+
Assert-ObjectEquals $kubeletConfig $pools[0].KubeletConfig
658+
659+
# create a 2nd nodepool
660+
New-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName -Name pool2 -VmSize $nodeVmSize -Count 1 -LinuxOSConfig $cluster.AgentPoolProfiles[0].LinuxOSConfig -KubeletConfig $cluster.AgentPoolProfiles[0].KubeletConfig
661+
$cluster = Get-AzAksCluster -ResourceGroupName $resourceGroupName -Name $kubeClusterName
662+
Assert-AreEqual 2 $cluster.AgentPoolProfiles.Count
663+
Assert-ObjectEquals $linuxOsConfig $cluster.AgentPoolProfiles[0].LinuxOSConfig
664+
Assert-ObjectEquals $kubeletConfig $cluster.AgentPoolProfiles[0].KubeletConfig
665+
Assert-ObjectEquals $linuxOsConfig $cluster.AgentPoolProfiles[1].LinuxOSConfig
666+
Assert-ObjectEquals $kubeletConfig $cluster.AgentPoolProfiles[1].KubeletConfig
667+
$pools = Get-AzAksNodePool -ResourceGroupName $resourceGroupName -ClusterName $kubeClusterName
668+
Assert-AreEqual 2 $pools.Count
669+
Assert-ObjectEquals $linuxOsConfig $pools[0].LinuxOSConfig
670+
Assert-ObjectEquals $kubeletConfig $pools[0].KubeletConfig
671+
Assert-ObjectEquals $linuxOsConfig $pools[1].LinuxOSConfig
672+
Assert-ObjectEquals $kubeletConfig $pools[1].KubeletConfig
673+
674+
$cluster | Remove-AzAksCluster -Force
675+
}
676+
finally {
677+
Remove-AzResourceGroup -Name $resourceGroupName -Force
678+
}
616679
}

0 commit comments

Comments
 (0)