Azure Kubernetes Hizmeti (AKS) ile hizmet sorumlusu kullanma
AKS kümesi, Azure Load Balancer veya Azure Container Registry (ACR) gibi diğer Azure kaynaklarını dinamik olarak oluşturmak ve yönetmek için bir Microsoft Entra hizmet sorumlusu veya yönetilen kimlik gerektirir.
Dekont
Azure'daki diğer kaynaklarla kimlik doğrulaması yapmak için yönetilen kimlikleri kullanmanızı öneririz ve bunlar AKS kümeniz için varsayılan kimlik doğrulama yöntemidir. Kümenizle yönetilen kimlik kullanma hakkında daha fazla bilgi için bkz . Sistem tarafından atanan yönetilen kimliği kullanma.
Bu makalede AKS kümeleriniz için hizmet sorumlusu oluşturma ve kullanma adımları gösterilmektedir.
Başlamadan önce
Microsoft Entra hizmet sorumlusu oluşturmak için, bir uygulamayı Microsoft Entra kiracınıza kaydetme ve uygulamayı aboneliğinizdeki bir role atama izinleriniz olmalıdır. Gerekli izinlere sahip değilseniz, Microsoft Entra Id veya abonelik yöneticinizden gerekli izinleri atamasını veya AKS kümenizle kullanmanız için bir hizmet sorumlusu oluşturmasını istemeniz gerekir.
Farklı bir Microsoft Entra kiracısından hizmet sorumlusu kullanıyorsanız, kümeyi dağıtırken kullanabileceğiniz izinlerle ilgili başka noktalar da vardır. Dizin bilgilerini okumak ve yazmak için uygun izinlere sahip olmayabilirsiniz. Daha fazla bilgi için bkz . Microsoft Entra Id'de varsayılan kullanıcı izinleri nelerdir?
Ön koşullar
- Azure CLI kullanıyorsanız Azure CLI sürüm 2.0.59 veya üzeri gerekir. Sürümü bulmak için
az --version
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme. - Azure PowerShell kullanıyorsanız, Azure PowerShell sürüm 5.0.0 veya üzeri gerekir. Sürümü bulmak için
Get-InstalledModule -Name Az
komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz . Azure Az PowerShell modülünü yükleme.
El ile hizmet sorumlusu oluşturma
komutunu kullanarak
az ad sp create-for-rbac
bir hizmet sorumlusu oluşturun.az ad sp create-for-rbac --name myAKSClusterServicePrincipal
Çıkışınız aşağıdaki örnek çıkışa benzer olmalıdır:
{ "appId": "559513bd-0c19-4c1a-87cd-851a26afd5fc", "displayName": "myAKSClusterServicePrincipal", "name": "http://myAKSClusterServicePrincipal", "password": "e763725a-5eee-40e8-a466-dc88d980f415", "tenant": "72f988bf-86f1-41af-91ab-2d7cd011db48" }
Çıkış için ve
password
değerleriniappId
kopyalayın. Sonraki bölümde AKS kümesi oluştururken bunları kullanacaksınız.
Bir AKS kümesi için hizmet sorumlusu belirtin
komutunu kullanarak yeni bir AKS kümesi için mevcut hizmet sorumlusunu
az aks create
kullanın ve ve parametrelerini kullanarak--service-principal
--client-secret
önceki bölümü aldığınız çıkıştan vepassword
değerini belirtinappId
.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --service-principal <appId> \ --client-secret <password>
Dekont
Özelleştirilmiş gizli dizi ile mevcut bir hizmet sorumlusu kullanıyorsanız, gizli dizinin 190 bayttan uzun olmadığından emin olun.
Diğer Azure kaynaklarına erişim yetkisi verme
Diğer kaynaklara erişmek için AKS kümesinin hizmet sorumlusunu kullanabilirsiniz. Örneğin, AKS kümenizi mevcut bir Azure sanal ağ alt ağına dağıtmak veya Azure Container Registry'ye (ACR) bağlanmak istiyorsanız, bu kaynaklara erişim için hizmet sorumlusuna temsilci atamanız gerekir. Sistem tarafından atanan yönetilen kimlik kullanılarak kümeye verilen iznin doldurulma süresi 60 dakika sürebilir.
komutunu kullanarak bir rol ataması
az role assignment create
oluşturun. öğesiniappId
kaynak grubu veya sanal ağ kaynağı gibi belirli bir kapsama atayın. Rol, hizmet sorumlusunun kaynak üzerinde sahip olduğu izinleri tanımlar.Dekont
Kaynağın
--scope
tam kaynak kimliği olması gerekir. Örneğin, /subscriptions/guid>/<resourceGroups/myResourceGroup veya /subscriptions/guid>/<resourceGroups/myResourceGroupVnet/providers/Microsoft.Network/virtualNetworks/myVnet.az role assignment create --assignee <appId> --scope <resourceScope> --role Contributor
Aşağıdaki bölümlerde, atamanız gerekebilecek ortak temsilciler ayrıntılı olarak yer almaktadır.
Azure Container Registry
Kapsayıcı görüntü deponuz olarak Azure Container Registry (ACR) kullanıyorsanız AKS kümenizin hizmet sorumlusuna görüntüleri okuması ve çekmesi için izin vermeniz gerekir. Bir kayıt defteriyle tümleştirmek ve hizmet sorumlusu için uygun rolü atamak için veya az aks update
komutunu kullanmanızı az aks create
öneririz. Ayrıntılı adımlar için bkz . Azure Kubernetes Service'ten Azure Container Registry ile kimlik doğrulaması.
Ağ
Sanal ağın ve alt ağın veya genel IP adreslerinin başka bir kaynak grubunda bulunduğu gelişmiş ağ kullanabilirsiniz. Sanal ağ içindeki alt ağda Ağ Katkıda Bulunanı yerleşik rolünü atayın. Alternatif olarak, bu kaynak grubundaki ağ kaynaklarına erişme izinlerine sahip özel bir rol oluşturabilirsiniz. Daha fazla bilgi için bkz . AKS hizmeti izinleri.
Depolama
Başka bir kaynak grubundaki mevcut disk kaynaklarına erişmeniz gerekiyorsa, aşağıdaki rol izinleri kümelerinden birini atayın:
- Özel bir rol oluşturun ve Microsoft.Compute/disks/read ve Microsoft.Compute/disks/write rol izinlerini tanımlayın veya
- Kaynak grubunda Sanal Makine Katılımcısı yerleşik rolünü atayın.
Azure Container Instances
AKS ile tümleştirmek için Sanal Kubelet kullanıyorsanız ve Azure Container Instances'ı (ACI) AKS kümesinden ayrı kaynak grubunda çalıştırmayı seçerseniz, AKS kümesi hizmet sorumlusuna ACI kaynak grubunda Katkıda Bulunan izinleri verilmelidir.
Diğer konular
AKS ve Microsoft Entra hizmet sorumlusu kullanırken aşağıdakileri göz önünde bulundurun:
- Kubernetes hizmet sorumlusu küme yapılandırmasının bir parçasıdır, ancak kümeyi dağıtmak için bu kimliği kullanmayın.
- Varsayılan olarak, hizmet sorumlusu kimlik bilgileri bir yıl boyunca geçerlidir. Hizmet sorumlusu kimlik bilgilerini istediğiniz zaman güncelleştirebilir veya döndürebilirsiniz.
- Her hizmet sorumlusu bir Microsoft Entra uygulamasıyla ilişkilendirilir. Kubernetes kümesinin hizmet sorumlusunu geçerli herhangi bir Microsoft Entra uygulama adıyla ilişkilendirebilirsiniz (örneğin: https://www.contoso.org/example). Uygulama URL'sinin gerçek bir uç nokta olması gerekmez.
- Hizmet sorumlusu İstemci kimliğini belirttiğinizde
appId
değerini kullanın. - Kubernetes kümesindeki aracı düğümü VM'lerinde hizmet sorumlusu kimlik bilgileri dosyada
/etc/kubernetes/azure.json
depolanır. - komutu kullanılarak
az aks create
oluşturulan bir AKS kümesini sildiğinizde, oluşturulan hizmet sorumlusu otomatik olarak silinmez.Hizmet sorumlusunu silmek için kümenizin servicePrincipalProfile.clientId dosyasını sorgulayın ve komutunu kullanarak
az ad sp delete
silin. Kaynak grubu adının parametresinin-g
ve küme adının-n
parametresinin değerlerini değiştirin:az ad sp delete --id $(az aks show -g myResourceGroup -n myAKSCluster --query servicePrincipalProfile.clientId -o tsv)
Sorun giderme
Azure CLI, AKS kümeleri için hizmet sorumlusu kimlik bilgilerini önbelleğe alır. Bu kimlik bilgilerinin süresi dolarsa AKS kümesi dağıtımı sırasında hatalarla karşılaşırsınız. Komutunu çalıştırır az aks create
ve aşağıdakine benzer bir hata iletisi alırsanız, önbelleğe alınmış hizmet sorumlusu kimlik bilgileriyle ilgili bir sorun olduğunu gösterebilir:
Operation failed with status: 'Bad Request'.
Details: The credentials in ServicePrincipalProfile were invalid. Please see https://aka.ms/aks-sp-help for more details.
(Details: adal: Refresh request failed. Status Code = '401'.
Sorgu ile komutunu "[].endDateTime"
kullanarak hizmet sorumlusu kimlik bilgilerinizin az ad app credential list
sona erme tarihini de kontrol edebilirsiniz.
az ad app credential list --id <app-id> --query "[].endDateTime" -o tsv
Hizmet sorumlusu kimlik bilgileri için varsayılan süre sonu zamanı bir yıldır. Kimlik bilgileriniz bir yıldan eskiyse, mevcut kimlik bilgilerini sıfırlayabilir veya yeni bir hizmet sorumlusu oluşturabilirsiniz.
Genel Azure CLI sorunlarını giderme
Azure CLI çeşitli kabuk ortamlarında çalışabilir, ancak hafif biçim çeşitlemeleriyle. Azure CLI komutlarıyla ilgili beklenmeyen sonuçlara sahipseniz bkz . Azure CLI'yi başarıyla kullanma.
Sonraki adımlar
Microsoft Entra hizmet sorumluları hakkında daha fazla bilgi için bkz . Uygulama ve hizmet sorumlusu nesneleri.
Kimlik bilgilerinin nasıl güncelleştirildiğini öğrenmek için bkz . AKS'de hizmet sorumlusunun kimlik bilgilerini güncelleştirme veya döndürme.