Skip to content

Commit e22eae1

Browse files
authored
Fix the issue of New-AzConnectedKubernetes (#19079)
Fix the issue of New-AzConnectedKubernetes Co-authored-by: wyunchi-ms <[email protected]>
1 parent 9f361d4 commit e22eae1

File tree

1 file changed

+28
-34
lines changed

1 file changed

+28
-34
lines changed

src/ConnectedKubernetes/custom/New-AzConnectedKubernetes.ps1

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -188,13 +188,18 @@ function New-AzConnectedKubernetes {
188188

189189
#Region check helm install
190190
try {
191-
$HelmVersion = helm version --template='{{.Version}}' --kubeconfig $KubeConfig
191+
$HelmVersion = helm version --template='{{.Version}}' --kubeconfig $KubeConfig
192192
if ($HelmVersion.Contains("v2")) {
193-
Write-Error "Helm version 3+ is required. Ensure that you have installed the latest version of Helm. Learn more at https://aka.ms/arc/k8s/onboarding-helm-install"
193+
Write-Error "Helm version 3+ is required. Learn more at https://aka.ms/arc/k8s/onboarding-helm-install"
194194
return
195195
}
196+
$HelmVersion = helm version --short --kubeconfig $KubeConfig
197+
if ($HelmVersion.Substring(1,$HelmVersion.Length-1) -ge [System.Version]"3.7") {
198+
Write-Error "Helm version larger then 3.7 cannot pull that chart azure-arc. Please use 3.6. Learn more at https://aka.ms/arc/k8s/onboarding-helm-install"
199+
Return
200+
}
196201
} catch {
197-
Write-Error "Helm version 3+ is required. Ensure that you have installed the latest version of Helm. Learn more at https://aka.ms/arc/k8s/onboarding-helm-install"
202+
Write-Error "Helm version 3+ is required. Learn more at https://aka.ms/arc/k8s/onboarding-helm-install"
198203
throw
199204
}
200205
#EndRegion
@@ -209,21 +214,19 @@ function New-AzConnectedKubernetes {
209214
#Endregion
210215

211216
if ($null -ne $ReleaseNamespace) {
212-
# $Configmap = kubectl get configmap --namespace azure-arc azure-clusterconfig -o json --kubeconfig $KubeConfig | ConvertFrom-Json
213-
# $ConfigmapRgName = $Configmap.data.AZURE_RESOURCE_GROUP
214-
# $ConfigmapClusterName = $Configmap.data.AZURE_RESOURCE_NAME
217+
$Configmap = kubectl get configmap --namespace azure-arc azure-clusterconfig -o json --kubeconfig $KubeConfig | ConvertFrom-Json
218+
$ConfigmapRgName = $Configmap.data.AZURE_RESOURCE_GROUP
219+
$ConfigmapClusterName = $Configmap.data.AZURE_RESOURCE_NAME
215220
try {
216-
$ExistConnectedKubernetes = Get-AzConnectedKubernetes -ResourceGroupName $ResourceGroupName -ClusterName $ClusterName @CommonPSBoundParameters
221+
$ExistConnectedKubernetes = Get-AzConnectedKubernetes -ResourceGroupName $ConfigmapRgName -ClusterName $ConfigmapClusterName @CommonPSBoundParameters
217222

218-
$PSBoundParameters.Add('AgentPublicKeyCertificate', $ExistConnectedKubernetes.AgentPublicKeyCertificate)
219-
Az.ConnectedKubernetes.internal\New-AzConnectedKubernetes @PSBoundParameters
220-
# if (($ResourceGroupName -eq $ConfigmapRgName) -and ($ClusterName -eq $ConfigmapClusterName)) {
221-
# $PSBoundParameters.Add('AgentPublicKeyCertificate', $ExistConnectedKubernetes.AgentPublicKeyCertificate)
222-
# Az.ConnectedKubernetes.internal\New-AzConnectedKubernetes @PSBoundParameters
223-
# } else {
224-
# Write-Error "The kubernetes cluster you are trying to onboard is already onboarded to the resource group '${ConfigmapRgName}' with resource name '${ConfigmapClusterName}'."
225-
# }
226-
# return
223+
if (($ResourceGroupName -eq $ConfigmapRgName) -and ($ClusterName -eq $ConfigmapClusterName)) {
224+
$PSBoundParameters.Add('AgentPublicKeyCertificate', $ExistConnectedKubernetes.AgentPublicKeyCertificate)
225+
return Az.ConnectedKubernetes.internal\New-AzConnectedKubernetes @PSBoundParameters
226+
} else {
227+
Write-Error "The kubernetes cluster you are trying to onboard is already onboarded to the resource group '${ConfigmapRgName}' with resource name '${ConfigmapClusterName}'."
228+
}
229+
return
227230
} catch {
228231
helm delete azure-arc --namespace $ReleaseNamespace --kubeconfig $KubeConfig --kube-context $KubeContext
229232
}
@@ -268,12 +271,7 @@ function New-AzConnectedKubernetes {
268271
Set-Item -Path Env:HELM_EXPERIMENTAL_OCI -Value 1
269272
#Region pull helm chart
270273
try {
271-
$HelmVersion = helm version --template='{{.Version}}' --kubeconfig $KubeConfig
272-
if ($HelmVersion.Substring(1,$HelmVersion.Length-1) -ge [System.Version]"3.7") {
273-
helm pull $RegisteryPath --kubeconfig $KubeConfig --kube-context $KubeContext
274-
} else {
275-
helm chart pull $RegisteryPath --kubeconfig $KubeConfig --kube-context $KubeContext
276-
}
274+
helm chart pull $RegisteryPath --kubeconfig $KubeConfig --kube-context $KubeContext
277275
} catch {
278276
Write-Error "Unable to pull helm chart from the registery $RegisteryPath"
279277
throw
@@ -288,12 +286,7 @@ function New-AzConnectedKubernetes {
288286
$ChartExportPath = Join-Path -Path $Home -ChildPath '.azure' | Join-Path -ChildPath 'AzureArcCharts'
289287
}
290288
try {
291-
$HelmVersion = helm version --short --kubeconfig $KubeConfig
292-
if ($HelmVersion.Substring(1,$HelmVersion.Length-1) -ge [System.Version]"3.7") {
293-
helm pull $RegisteryPath --kubeconfig $KubeConfig --kube-context $KubeContext --destination $ChartExportPath
294-
} else {
295-
helm chart export $RegisteryPath --kubeconfig $KubeConfig --kube-context $KubeContext --destination $ChartExportPath
296-
}
289+
helm chart export $RegisteryPath --kubeconfig $KubeConfig --kube-context $KubeContext --destination $ChartExportPath
297290
} catch {
298291
Write-Error "Unable to export helm chart from the registery $RegisteryPath"
299292
throw
@@ -302,19 +295,20 @@ function New-AzConnectedKubernetes {
302295

303296
$RSA = [System.Security.Cryptography.RSA]::Create(4096)
304297
$AgentPublicKey = [System.Convert]::ToBase64String($RSA.ExportRSAPublicKey())
305-
$AgentPrivateKey = [System.Convert]::ToBase64String($RSA.ExportRSAPrivateKey())
306-
298+
$AgentPrivateKey = "-----BEGIN RSA PRIVATE KEY-----`n" + [System.Convert]::ToBase64String($RSA.ExportRSAPrivateKey()) + "`n-----END RSA PRIVATE KEY-----"
299+
307300
$HelmChartPath = Join-Path -Path $ChartExportPath -ChildPath 'azure-arc-k8sagents'
308301
if (Test-Path Env:HELMCHART) {
309302
$ChartPath = Get-ChildItem -Path Env:HELMCHART
310303
} else {
311304
$ChartPath = $HelmChartPath
312305
}
313306

314-
$TenantId = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile.DefaultContext.Tenant.Id
315-
helm upgrade --install azure-arc $ChartPath --set global.subscriptionId=$SubscriptionId --set global.resourceGroupName=$ResourceGroupName --set global.resourceName=$ClusterName --set global.tenantId=$TenantId --set global.location=$Location --set global.onboardingPrivateKey=$AgentPrivateKey --set systemDefaultValues.spnOnboarding=false --kubeconfig $KubeConfig --kube-context $KubeContext
316-
317307
$PSBoundParameters.Add('AgentPublicKeyCertificate', $AgentPublicKey)
318-
Az.ConnectedKubernetes.internal\New-AzConnectedKubernetes @PSBoundParameters
308+
$Response = Az.ConnectedKubernetes.internal\New-AzConnectedKubernetes @PSBoundParameters
309+
310+
$TenantId = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile.DefaultContext.Tenant.Id
311+
helm upgrade --install azure-arc $ChartPath --set global.subscriptionId=$SubscriptionId --set global.resourceGroupName=$ResourceGroupName --set global.resourceName=$ClusterName --set global.tenantId=$TenantId --set global.location=$Location --set global.onboardingPrivateKey=$AgentPrivateKey --set systemDefaultValues.spnOnboarding=false --set global.azureEnvironment=AZUREPUBLICCLOUD --set systemDefaultValues.clusterconnect-agent.enabled=true --set global.kubernetesDistro=$Distribution --set global.kubernetesInfra=$Infrastructure --kubeconfig $KubeConfig --kube-context $KubeContext --wait --timeout 600s
312+
Return $Response
319313
}
320314
}

0 commit comments

Comments
 (0)