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

  1. 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"
    }
    
  2. Çıkış için ve password değerlerini appId 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 ve password 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. öğesini appId 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ı.

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:

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.