다음을 통해 공유


PowerShell 모듈을 사용하여 Azure Kubernetes Service에서 gMSA 구성

이 섹션에서는 AKS PowerShell 모듈의 gMSA를 사용하여 Azure Kubernetes Service에서 gMSA를 설정하는 방법을 설명합니다. 아래 단계에서는 AKS PowerShell 모듈에 gMSA를 설치하고, AKS 클러스터에 연결하고, 필요한 매개 변수를 제공했다고 가정합니다. 아직 수행하지 않은 경우 이 자습서 첫 번째 섹션의 단계를 수행해야 합니다.

AKS 클러스터에 gMSA 기능이 제대로 구성되었는지 확인합니다.

AKS 클러스터가 gMSA에 대해 구성되었거나 아직 구성되지 않았을 수 있습니다. 클러스터가 gMSA를 사용할 준비가 되었다는 것을 확인하려면 다음 명령을 실행합니다.

 Confirm-AksGMSAConfiguration `
 -AksResourceGroupName $params["aks-cluster-rg-name"] `
 -AksClusterName $params["aks-cluster-name"] `
 -AksGMSADomainDnsServer $params["domain-dns-server"] `
 -AksGMSARootDomainName $params["domain-fqdn"]

클러스터를 구성한 후 gMSA가 작동하는 데 필요한 나머지 인프라를 구성할 수 있습니다.

Active Directory 환경 구성

Active Directory를 준비하는 첫 번째 단계는 키 배포 시스템이 구성되었는지 확인하는 것입니다. 이 단계에서는 도메인 컨트롤러에 대해 적절한 위임을 사용하여 자격 증명을 사용하여 명령을 실행해야 합니다. 이 작업은 권한 있는 사용자에게 위임할 수 있습니다.

도메인 컨트롤러에서 다음을 실행하여 루트 키를 사용하도록 설정합니다.

프로덕션 환경의 경우:

# You will need to wait 10 hours before the KDS root key is
# replicated and available for use on all domain controllers.
Add-KdsRootKey -EffectiveImmediately

테스트 환경의 경우:

# For single-DC test environments ONLY.
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)

다음 명령의 경우 도메인 컨트롤러 또는 원격 PowerShell 세션에서 실행할 수 있습니다. 도메인 컨트롤러에서 실행하는 경우 명령에서 "DomainControllerAddress", "DomainUser" 및 "DomainPassword" 매개 변수를 제거합니다.

원격으로 실행하는 경우 도메인 컨트롤러가 원격 관리를 위해 구성되어 있는지 확인합니다.

표준 도메인 사용자 만들기

 # Creates the standard domain user.
 New-GMSADomainUser `
 -Name $params["gmsa-domain-user-name"] `
 -Password $params["gmsa-domain-user-password"] `
 -DomainControllerAddress $params["domain-controller-address"] `
 -DomainAdmin "$($params["domain-fqdn"])\$($params["domain-admin-user-name"])" `
 -DomainAdminPassword $params["domain-admin-user-password"]

gMSA 만들기

 # Creates the gMSA account, and it authorizes only the standard domain user.
 New-GMSA `
 -Name $params["gmsa-name"] `
 -AuthorizedUser $params["gmsa-domain-user-name"] `
 -DomainControllerAddress $params["domain-controller-address"] `
 -DomainAdmin "$($params["domain-fqdn"])\$($params["domain-admin-user-name"])" `
 -DomainAdminPassword $params["domain-admin-user-password"]

Azure Key Vault 및 Azure 사용자 할당 관리 ID 설정

AKV(Azure Key Vault)는 AKS의 Windows 노드에서 Active Directory 도메인 컨트롤러와 통신하는 데 사용하는 자격 증명을 저장하는 데 사용됩니다. MI(관리 ID)는 Windows 노드에 대한 AKV에 대한 적절한 액세스를 제공하는 데 사용됩니다.

Azure Key Vault 만들기

 # The Azure key vault will have a secret with the credentials of the standard
 # domain user authorized to fetch the gMSA.
 New-GMSAAzureKeyVault `
 -ResourceGroupName $params["aks-cluster-rg-name"] `
 -Location $params["azure-location"] `
 -Name $params["akv-name"] `
 -SecretName $params["akv-secret-name"] `
 -GMSADomainUser "$($params["domain-fqdn"])\$($params["gmsa-domain-user-name"])" `
 -GMSADomainUserPassword $params["gmsa-domain-user-password"]

Azure 사용자 할당 관리 ID 만들기

 New-GMSAManagedIdentity `
 -ResourceGroupName $params["aks-cluster-rg-name"] `
 -Location $params["azure-location"] `
 -Name $params["ami-name"]

AKS Windows 호스트에 대한 AKV 액세스 권한 부여

 # Appends the user-assigned managed identity to the AKS Windows agent pools given as input parameter.
 # Configures the AKV read access policy for the user-assigned managed identity.
 Grant-AkvAccessToAksWindowsHosts `
 -AksResourceGroupName $params["aks-cluster-rg-name"] `
 -AksClusterName $params["aks-cluster-name"] `
 -AksWindowsNodePoolsNames $params["aks-win-node-pools-names"] `
 -VaultResourceGroupName $params["aks-cluster-rg-name"] `
 -VaultName $params["akv-name"] `
 -ManagedIdentityResourceGroupName $params["aks-cluster-rg-name"] `
 -ManagedIdentityName $params["ami-name"]

RBAC 리소스를 사용하여 gMSA 자격 증명 사양 설정

 # Creates the gMSA credential spec.
 # Configures the appropriate RBAC resources (ClusterRole and RoleBinding) for the spec.
 # Executes AD commands to get the appropriate domain information for the credential spec.
 New-GMSACredentialSpec `
 -Name $params["gmsa-spec-name"] `
 -GMSAName $params["gmsa-name"] `
 -ManagedIdentityResourceGroupName $params["aks-cluster-rg-name"] `
 -ManagedIdentityName $params["ami-name"] `
 -VaultName $params["akv-name"] `
 -VaultGMSASecretName $params["akv-secret-name"] `
 -DomainControllerAddress $params["domain-controller-address"] `
 -DomainUser "$($params["domain-fqdn"])\$($params["gmsa-domain-user-name"])" `
 -DomainUserPassword $params["gmsa-domain-user-password"]

이 단계에서는 AKS에서 gMSA의 구성이 완료됩니다. 이제 Windows 노드에 워크로드를 배포할 수 있습니다.

다음 단계