Configuración de gMSA en Azure Kubernetes Service con el módulo de PowerShell
En esta sección se explica cómo configurar gMSA en Azure Kubernetes Service mediante el módulo de PowerShell de gMSA en AKS. En los pasos siguientes se supone que ha instalado gMSA en el módulo de PowerShell de AKS, se ha conectado a los clústeres de AKS y ha proporcionado los parámetros necesarios. Si aún no lo ha hecho, asegúrese de seguir los pasos de la primera sección de este tutorial.
Confirmación de que el clúster de AKS tiene la característica de gMSA configurada correctamente
Es posible que el clúster de AKS esté o no esté configurado para gMSA. Para validar que el clúster está listo para usarse con gMSA, ejecute el siguiente comando:
Confirm-AksGMSAConfiguration `
-AksResourceGroupName $params["aks-cluster-rg-name"] `
-AksClusterName $params["aks-cluster-name"] `
-AksGMSADomainDnsServer $params["domain-dns-server"] `
-AksGMSARootDomainName $params["domain-fqdn"]
Después de configurar el clúster, puede configurar la infraestructura restante necesaria para que gMSA funcione.
Configuración del entorno de Active Directory
El primer paso para preparar Active Directory es asegurarse de que el sistema de distribución de claves está configurado. Para este paso, es necesario ejecutar los comandos con credenciales con la delegación adecuada en un controlador de dominio. Esta tarea se puede delegar a personas autorizadas.
Desde un controlador de dominio, ejecute lo siguiente para habilitar la clave raíz:
Para entornos de producción:
# 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
Para entornos de prueba:
# For single-DC test environments ONLY.
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)
Para los siguientes comandos, puede ejecutarlos en el controlador de dominio o en una sesión remota de PowerShell. Si se ejecuta desde el controlador de dominio, quite los parámetros "DomainControllerAddress", "DomainUser" y "DomainPassword" del comando.
Si se ejecuta de forma remota, asegúrese de que el controlador de dominio está configurado para la administración remota.
Creación del usuario de dominio estándar
# 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"]
Creación de la 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"]
Configuración de Azure Key Vault y la identidad administrada asignada por el usuario de Azure
Azure Key Vault (AKV) se usará para almacenar la credencial que usan los nodos de Windows en AKS para comunicarse con los controladores de dominio de Active Directory. Se usará una identidad administrada (MI) para proporcionar un acceso adecuado a AKV para los nodos de Windows.
Creación del almacén de claves de Azure
# 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"]
Creación de la identidad administrada asignada por el usuario de Azure
New-GMSAManagedIdentity `
-ResourceGroupName $params["aks-cluster-rg-name"] `
-Location $params["azure-location"] `
-Name $params["ami-name"]
Concesión de acceso de AKV a los hosts de Windows de AKS
# 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"]
Configuración de la especificación de credenciales de gMSA con los recursos de RBAC
# 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"]
En esta fase, la configuración de gMSA en AKS se ha completado. Ahora puede implementar la carga de trabajo en los nodos de Windows.