Azure Yerel ve Windows Server'da Azure Kubernetes Service ile Windows kapsayıcıları için grup Yönetilen Hizmet Hesaplarını (gMSA) yapılandırma
Şunlar için geçerlidir: Azure Yerel 22H2'de AKS, Windows Server'da AKS
AD Kimlik Doğrulaması'nı kullanmak için, Windows kapsayıcıları için grup Yönetilen Hizmet Hesapları'nı (gMSA) etki alanına katılmamış bir konakla çalışacak şekilde yapılandırabilirsiniz. Grup Yönetilen Hizmet Hesabı, Windows Server 2012'de tanıtılan ve birden çok bilgisayarın parolayı bilmeden kimlik paylaşmasına izin verecek şekilde tasarlanmış özel bir hizmet hesabı türüdür. Windows kapsayıcıları etki alanına katılmış olamaz, ancak Windows kapsayıcılarında çalışan birçok Windows uygulamasının AD Kimlik Doğrulaması gerekir.
Not
Kubernetes topluluğunun Windows kapsayıcılarıyla gMSA'yı kullanmayı nasıl desteklediğini öğrenmek için bkz . gMSA'yı yapılandırma.
Etki alanına katılmamış bir konağa sahip kapsayıcılar için gMSA mimarisi
Etki alanına katılmamış bir konağa sahip kapsayıcılar için gMSA, gMSA kimlik bilgilerini almak için konak kimliği yerine taşınabilir kullanıcı kimliği kullanır. Bu nedenle, Windows çalışan düğümlerini bir etki alanına el ile eklemek artık gerekli değildir. Kullanıcı kimliği Kubernetes'te gizli dizi olarak kaydedilir. Aşağıdaki diyagramda, etki alanına katılmamış bir konağa sahip kapsayıcılar için gMSA yapılandırma işlemi gösterilmektedir:
Etki alanına katılmamış bir konağa sahip kapsayıcılar için gMSA, konak düğümünü etki alanına eklemeden gMSA ile kapsayıcı oluşturma esnekliği sağlar. Windows Server 2019'dan başlayarak, active directory'den gMSA kimlik bilgilerini almak için bir eklenti mekanizması sağlayan ccg.exe desteklenir. Kapsayıcıyı başlatmak için bu kimliği kullanabilirsiniz. ccg.exe hakkında daha fazla bilgi için bkz . ICcgDomainAuthCredentials arabirimi.
Etki alanına katılmamış bir konak ve etki alanına katılmış bir konak ile kapsayıcılar için gMSA karşılaştırması
gMSA ilk kez kullanıma sunulduğunda kapsayıcı konağı etki alanına katılmasını gerektiriyordu ve bu da Windows çalışan düğümlerini bir etki alanına el ile katmak için çok fazla ek yük oluşturdu. Bu sınırlama, etki alanına katılmamış bir konağa sahip kapsayıcılar için gMSA ile giderildi, böylece kullanıcılar artık etki alanına katılmamış konaklarla gMSA'yı kullanabilir. gMSA'da yapılan diğer geliştirmeler aşağıdaki özellikleri içerir:
- Windows çalışan düğümlerini bir etki alanına el ile ekleme gereksinimini ortadan kaldırarak çok fazla ek yüke neden oldu. Ölçeklendirme senaryoları için bu işlem süreci basitleştirir.
- Sıralı güncelleştirme senaryolarında kullanıcıların artık düğümü bir etki alanına yeniden eklemesi gerekmez.
- GMSA hizmet hesabı parolalarını almak için çalışan düğümü makine hesaplarını yönetmek için daha kolay bir işlem.
- Kubernetes ile gMSA'nın yapılandırılması için daha az karmaşık bir uçtan uca işlem.
Başlamadan önce
Grup tarafından yönetilen hizmet hesabıyla bir Windows kapsayıcısı çalıştırmak için aşağıdaki önkoşullara ihtiyacınız vardır:
- Windows Server 2012 veya üzerini çalıştıran en az bir etki alanı denetleyicisine sahip bir Active Directory etki alanı. gMSA'ları kullanmak için orman veya etki alanı işlev düzeyi gereksinimi yoktur, ancak yalnızca Windows Server 2012 veya sonraki bir sürümü çalıştıran etki alanı denetleyicileri gMSA parolalarını dağıtabilir. Daha fazla bilgi için bkz . gMSA'lar için Active Directory gereksinimleri.
- gMSA hesabı oluşturma izni. gMSA hesabı oluşturmak için Etki Alanı Yöneticisi olmanız veya msDS-GroupManagedServiceAccount nesneleri oluşturma izinlerine sahip bir hesap kullanmanız gerekir.
- CredentialSpec PowerShell modülünü indirmek için İnternet'e erişim. Bağlantısız bir ortamda çalışıyorsanız, modülü İnternet erişimi olan bir bilgisayara kaydedebilir ve geliştirme makinenize veya kapsayıcı konağınıza kopyalayabilirsiniz.
- gMSA ve AD kimlik doğrulamasının çalıştığından emin olmak için Azure Yerel ve Windows Server küme düğümlerinin zamanlarını bir etki alanı denetleyicisi veya başka bir zaman kaynağıyla eşitlenecek şekilde yapılandırıldığından emin olun. Ayrıca Hyper-V'nin zamanı herhangi bir sanal makineyle eşitlenecek şekilde yapılandırıldığından da emin olmanız gerekir.
Etki alanı denetleyicisinde gMSA'yi hazırlama
Etki alanı denetleyicisinde gMSA'yı hazırlamak için şu adımları izleyin:
Etki alanı denetleyicisinde Active Directory'yi hazırlayın ve gMSA hesabını oluşturun.
Bir etki alanı kullanıcı hesabı oluşturun. Bu kullanıcı hesabı/parola kimlik bilgileri Kubernetes gizli dizisi olarak kaydedilir ve gMSA parolasını almak için kullanılır.
Bir GMSA hesabı oluşturmak ve 2. Adımda oluşturulan gMSA hesabının parolasını okuma izni vermek için aşağıdaki New-ADServiceAccount PowerShell komutunu çalıştırın:
New-ADServiceAccount -Name "<gmsa account name>" -DnsHostName "<gmsa account name>.<domain name>.com" -ServicePrincipalNames "host/<gmsa account name>", "host/<gmsa account name>.<domain name>.com" -PrincipalsAllowedToRetrieveManagedPassword <username you created earlier>
için
-PrincipalsAllowedToRetrieveManagedPassword
, aşağıdaki örnekte gösterildiği gibi daha önce oluşturduğunuz etki alanı kullanıcı adını belirtin:New-ADServiceAccount -Name "WebApp01" -DnsHostName "WebApp01.akshcitest.com" -ServicePrincipalNames "host/WebApp01", "host/WebApp01.akshcitest.com" -PrincipalsAllowedToRetrieveManagedPassword "testgmsa"
gMSA kimlik bilgisi belirtim JSON dosyasını hazırlama
gMSA kimlik bilgisi belirtimi JSON dosyasını hazırlamak için kimlik bilgisi belirtimi oluşturma adımlarını izleyin.
Kümedeki Windows podları ve kapsayıcıları için gMSA'yi yapılandırma
Kubernetes topluluğu, gMSA için etki alanına katılmış Windows çalışan düğümlerini zaten destekliyor. Azure Yerel ve Windows Server'da AKS'de bir Windows çalışan düğümüne etki alanına katılmanız gerekmez ancak başka gerekli yapılandırma adımları da vardır. Bu adımlar web kancasını, özel kaynak tanımını (CRD) ve kimlik bilgisi belirtimini yüklemeyi ve rol tabanlı erişim denetimini (RBAC rolü) etkinleştirmeyi içerir. Aşağıdaki adımlarda, yapılandırma işlemini basitleştirmeye yardımcı olmak için oluşturulan PowerShell komutları kullanılır.
Aşağıdaki adımları tamamlamadan önce AksHci PowerShell modülünün yüklü olduğundan ve kubectl
kümenize bağlanaabildiğinden emin olun.
Web kancasını yüklemek için aşağıdaki Install-AksHciGmsaWebhook PowerShell komutunu çalıştırın:
Install-AksHciGMSAWebhook -Name <cluster name>
Web kancası podunun başarıyla çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:
kubectl get pods -n kube-system | findstr gmsa
Çalışan gmsa-web kancası ön ekini içeren bir pod görmeniz gerekir.
Active Directory kullanıcı kimlik bilgilerini depolayan gizli dizi nesnesini oluşturun. Aşağıdaki yapılandırma verilerini tamamlayın ve ayarları secret.yaml adlı bir dosyaya kaydedin.
apiVersion: v1 kind: Secret metadata: name: <secret-name> namespace: <secret under namespace other than the default> type: Opaque stringData: domain: <FQDN of the domain, for example: akshcitest.com> username: <domain user who can retrieve the gMSA password> password: <password>
Ardından, gizli dizi nesnesini oluşturmak için aşağıdaki komutu çalıştırın:
kubectl apply -f secret.yaml
Not
Varsayılan ad alanı dışında bir ad alanı altında gizli dizi oluşturursanız dağıtımın ad alanını aynı ad alanına ayarlamayı unutmayın.
Add-AksHciGMSACredentialSpec PowerShell cmdlet'ini kullanarak gMSA CRD'sini oluşturun, rol tabanlı erişim denetimini (RBAC) etkinleştirin ve ardından belirli bir gMSA kimlik bilgisi belirtim dosyasını kullanmak üzere rolü hizmet hesaplarına atayın. Bu adımlar, Windows podları ve kapsayıcıları için gMSA'yi yapılandırma başlıklı bu Kubernetes makalesinde daha ayrıntılı olarak açıklanmıştır.
Aşağıdaki PowerShell komutu için giriş olarak JSON kimlik bilgisi belirtimini kullanın (yıldız işareti * içeren parametreler zorunludur):
Add-AksHciGMSACredentialSpec -Name <cluster name>* -credSpecFilePath <path to JSON credspec>* -credSpecName <name for credspec as the k8s GMSACredentialSpec object>* -secretName <name of secret>* -secretNamespace <namespace of secret> -serviceAccount <name of service account to bind to clusterrole> -clusterRoleName <name of clusterrole to use the credspec>* -overwrite
Bir örneği görüntülemek için aşağıdaki koda bakın:
Add-AksHciGMSACredentialSpec -Name mynewcluster -credSpecFilePath .\credspectest.json -credSpecName credspec-mynewcluster -secretName mysecret -clusterRoleName clusterrole-mynewcluster
Uygulamayı dağıtma
Aşağıdaki örnek ayarları kullanarak dağıtım YAML dosyasını oluşturun. Gerekli girdiler , , serviceAccountName
gmsaCredentialSpecName
ve volumeMounts
girişlerini içerirdnsconfig
.
Hizmet hesabını ekleyin:
serviceAccountName: default securityContext: windowsOptions: gmsaCredentialSpecName:
Kimlik bilgisi belirtim nesnesini ekleyin:
securityContext: windowsOptions: gmsaCredentialSpecName: <cred spec name>
Dağıtımın gizli dizisini bağlayın:
volumeMounts: - name: <volume name> mountPath: <vmount path> readOnly: true volumes: - name: <volume name> secret: secretName: <secret name> items: - key: username path: my-group/my-username
etki alanı denetleyicisinin IP adresini ve etki alanı adını dnsConfig altına ekleyin:
dnsConfig: nameservers: - <IP address for domain controller> searches: - <domain>
Kapsayıcının gMSA ile çalıştığını doğrulayın
Kapsayıcıyı dağıttığınızda, çalıştığını doğrulamak için aşağıdaki adımları kullanın:
Aşağıdaki komutu çalıştırarak dağıtımınız için kapsayıcı kimliğini alın:
kubectl get pods
PowerShell'i açın ve aşağıdaki komutu çalıştırın:
kubectl exec -it <container id> powershell
Kapsayıcıya girdikten sonra aşağıdaki komutu çalıştırın:
Nltest /parentdomain Nltest /sc_verify:<domain>
Connection Status = 0 0x0 NERR_Success The command completed successfully.
Bu çıkış, bilgisayarın bir etki alanı denetleyicisi tarafından kimliğinin doğrulandığını ve istemci bilgisayar ile etki alanı denetleyicisi arasında güvenli bir kanal bulunduğunu gösterir.
Kapsayıcının geçerli bir Kerberos Anahtar Verme Anahtarı (TGT) edinip edinemediğini denetleyin.
klist get krbtgt
A ticket to krbtgt has been retrieved successfully
Kümedeki gMSA ayarlarını temizleme
gMSA ayarlarını temizlemeniz gerekiyorsa aşağıdaki kaldırma adımlarını kullanın.
Kimlik bilgisi belirtimini kaldırma
Kaldırmak için aşağıdaki Remove-AksHcigmsaCredentialSpec PowerShell komutunu çalıştırın:
Remove-AksHciGMSACredentialSpec -Name <cluster name> -credSpecName <cred spec object name> -clusterRoleName <clusterrole object name> -serviceAccount <serviceaccount object name> -secretNamespace <namespace of the secret object>
Web kancasını kaldırma
Web kancasını kaldırmak için aşağıdaki Uninstall-AksHciGMSAWebhook PowerShell komutunu çalıştırın:
Uninstall-AksHciGMSAWebhook -Name <cluster name>