Aracılığıyla paylaş


Azure Kubernetes Service'te (AKS) yönetilen kimlik kullanma

Azure Kubernetes Service (AKS) kümeleri, yük dengeleyiciler ve yönetilen diskler gibi Azure kaynaklarına erişmek için bir Microsoft Entra kimliği gerektirir. Azure kaynakları için yönetilen kimlikler, AKS kümesinden diğer Azure hizmetlerine erişimi yetkilendirmenin önerilen yoludur.

Kimlik bilgilerini yönetmeye veya bunları kodunuza eklemeye gerek kalmadan, AKS kümesinden Microsoft Entra yetkilendirmesini destekleyen herhangi bir hizmete erişimi yetkilendirmek için yönetilen kimlik kullanabilirsiniz. Yönetilen kimliğe Azure'daki belirli bir kaynağa izin vermek için Azure rol tabanlı erişim denetimi (Azure RBAC) rolü atarsınız. Örneğin, küme tarafından kullanılmak üzere azure anahtar kasasında gizli dizilere erişmek için yönetilen kimliğe izin vekleyebilirsiniz. Azure RBAC hakkında daha fazla bilgi için bkz . Azure rol tabanlı erişim denetimi (Azure RBAC) nedir?.

Bu makalede, yeni veya mevcut bir AKS kümesinde aşağıdaki yönetilen kimlik türlerinin nasıl etkinleştirileceği gösterilir:

  • Sistem tarafından atanan yönetilen kimlik. Sistem tarafından atanan yönetilen kimlik, AKS kümesi gibi tek bir Azure kaynağıyla ilişkilendirilir. Yalnızca kümenin yaşam döngüsü için mevcuttur.
  • Kullanıcı tarafından atanan yönetilen kimlik. Kullanıcı tarafından atanan yönetilen kimlik, AKS kümesinin diğer Azure hizmetlerine erişim yetkisi vermek için kullanabileceği tek başına bir Azure kaynağıdır. AKS kümesinden ayrı olarak kalıcıdır ve birden çok Azure kaynağı tarafından kullanılabilir.
  • Önceden oluşturulmuş kubelet yönetilen kimliği. Önceden oluşturulmuş kubelet yönetilen kimliği, kubelet'in Azure'daki diğer kaynaklara erişmek için kullanabileceği isteğe bağlı bir kullanıcı tarafından atanan kimliktir. Kubelet için kullanıcı tarafından atanan yönetilen kimlik belirtmezseniz AKS, düğüm kaynak grubunda sistem tarafından atanan bir kubelet kimliği oluşturur.

Yönetilen kimlikler hakkında daha fazla bilgi edinmek için bkz . Azure kaynakları için yönetilen kimlikler.

Genel bakış

AKS kümesi, Microsoft Entra'dan belirteç istemek için yönetilen kimlik kullanır. Bu belirteçler, Azure'da çalışan diğer kaynaklara erişimi yetkilendirmek için kullanılır. Kümenize belirli kaynaklara erişim izinleri vermek için yönetilen kimliğe Azure RBAC rolü atayabilirsiniz. Örneğin, kümenizin bir Azure anahtar kasasında gizli dizilere erişmesi gerekiyorsa, kümenin yönetilen kimliğine bu izinleri veren bir Azure RBAC rolü atayabilirsiniz.

Yönetilen kimlik, sistem tarafından veya kullanıcı tarafından atanabilir. Bu iki yönetilen kimlik türü, AKS kümenizden Azure kaynaklarına erişimi yetkilendirmek için her iki türü de kullanabileceğiniz şekilde benzerdir. Aralarındaki temel fark, sistem tarafından atanan yönetilen kimliğin AKS kümesi gibi tek bir Azure kaynağıyla ilişkilendirilirken, kullanıcı tarafından atanan yönetilen kimliğin tek başına bir Azure kaynağı olmasıdır. Yönetilen kimlik türleri arasındaki farklar hakkında daha fazla bilgi için bkz. Azure kaynakları için yönetilen kimliklerde yönetilen kimlik türleri.

Her iki yönetilen kimlik türü de Azure platformu tarafından yönetildiğinden, gizli dizi sağlamaya veya döndürmeye gerek kalmadan uygulamalarınızdan erişim yetkisi alabilirsiniz. Azure, kimliğin kimlik bilgilerini sizin için yönetir.

AKS kümesini dağıttığınızda, sizin için varsayılan olarak sistem tarafından atanan bir yönetilen kimlik oluşturulur. Ayrıca, kümeyi kullanıcı tarafından atanan yönetilen kimlikle de oluşturabilirsiniz.

Yönetilen kimlik yerine uygulama hizmet sorumlusuyla küme oluşturmak da mümkündür. Yönetilen kimlikler, güvenlik ve kullanım kolaylığı için hizmet sorumluları üzerinden önerilir. Hizmet sorumlusuyla küme oluşturma hakkında daha fazla bilgi için bkz . Azure Kubernetes Service (AKS) ile hizmet sorumlusu kullanma.

Mevcut bir kümeyi bir uygulama hizmet sorumlusundan yönetilen kimlik kullanacak şekilde güncelleştirebilirsiniz. Ayrıca, var olan bir kümeyi farklı bir yönetilen kimlik türüne güncelleştirebilirsiniz. Kümeniz zaten bir yönetilen kimlik kullanıyorsa ve kimlik değiştirildiyse, örneğin, sistem tarafından atanan kullanıcı tarafından atanan küme kimlik türünü güncelleştirdiyseniz, denetim düzlemi bileşenlerinin yeni kimliğe geçişinde gecikme yaşanır. Denetim düzlemi bileşenleri, belirtecinin süresi dolana kadar eski kimliği kullanmaya devam eder. Belirteç yenilendikten sonra yeni kimliğe geçer. Bu işlem birkaç saat sürebilir.

Sistem tarafından atanan ve kullanıcı tarafından atanan kimlik türleri, pod üzerinde çalışan bir uygulama tarafından kullanılmak üzere tasarlanan Microsoft Entra workload kimliğinden farklıdır.

Başlamadan önce

  • Azure CLI sürüm 2.23.0 veya üzerinin yüklü olduğundan emin olun. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.

  • Önceden oluşturulmuş kubelet yönetilen kimliğini kullanmak için Azure CLI sürüm 2.26.0 veya üzeri yüklü olmalıdır.

  • Mevcut bir kümeyi sistem tarafından atanan yönetilen kimliği veya kullanıcı tarafından atanan yönetilen kimliği kullanacak şekilde güncelleştirmek için Azure CLI sürüm 2.49.0 veya sonraki bir sürümünün yüklü olması gerekir.

Bu makaledeki örnekleri çalıştırmadan önce az account set komutunu çağırıp abonelik kimliğinizi geçirerek aboneliğinizi geçerli etkin abonelik olarak ayarlayın .

az account set --subscription <subscription-id>

Ayrıca komutunu çağırarak az group create henüz bir Azure kaynak grubunuz yoksa da bir Azure kaynak grubu oluşturun.

az group create \
    --name myResourceGroup \
    --location westus2

Sistem tarafından atanan yönetilen kimliği etkinleştirme

Sistem tarafından atanan yönetilen kimlik, AKS kümesi veya başka bir Azure kaynağıyla ilişkilendirilmiş bir kimliktir. Sistem tarafından atanan yönetilen kimlik, kümenin yaşam döngüsüne bağlıdır. Küme silindiğinde, sistem tarafından atanan yönetilen kimlik de silinir.

AKS kümesi, Azure'da çalışan diğer kaynaklara erişimi yetkilendirmek için sistem tarafından atanan yönetilen kimliği kullanabilir. Kümeye belirli kaynaklara erişim izinleri vermek için sistem tarafından atanan yönetilen kimliğe bir Azure RBAC rolü atayabilirsiniz. Örneğin, kümenizin bir Azure anahtar kasasında gizli dizilere erişmesi gerekiyorsa, sistem tarafından atanan yönetilen kimliğe bu izinleri veren bir Azure RBAC rolü atayabilirsiniz.

Yeni aks kümesinde sistem tarafından atanan yönetilen kimliği etkinleştirme

Sistem tarafından atanan yönetilen kimliği yeni bir kümede etkinleştirmek için öğesini çağırın az aks create. Sistem tarafından atanan yönetilen kimlik, yeni kümede varsayılan olarak etkinleştirilir.

komutunu kullanarak az aks create bir AKS kümesi oluşturun.

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --generate-ssh-keys

Sistem tarafından atanan yönetilen kimliğin oluşturulduktan sonra küme için etkinleştirildiğini doğrulamak için bkz . Bir kümenin hangi tür yönetilen kimlik kullandığını belirleme.

Sistem tarafından atanan yönetilen kimliği kullanmak için mevcut AKS kümesini güncelleştirme

Bunun yerine sistem tarafından atanan yönetilen kimliği kullanmak üzere hizmet sorumlusu kullanan mevcut bir AKS kümesini güncelleştirmek için parametresiyle --enable-managed-identity komutunu çalıştırınaz aks update.

az aks update \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --enable-managed-identity

Kümeyi hizmet sorumlusu yerine sistem tarafından atanan yönetilen kimliği kullanacak şekilde güncelleştirdikten sonra, denetim düzlemi ve podlar Azure'daki diğer hizmetlere erişirken yetkilendirme için sistem tarafından atanan yönetilen kimliği kullanır. Siz aracı havuzunuzu da yükseltene kadar Kubelet hizmet sorumlusu kullanmaya devam eder. Yönetilen bir kimliğe güncelleştirmek için düğümlerinizdeki komutunu kullanabilirsiniz az aks nodepool upgrade --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-image-only . Düğüm havuzlarındaki düğümler kordonlandığından, boşaltıldığında ve yeniden görüntülendiği için düğüm havuzu yükseltmesi AKS kümenizde kapalı kalma süresine neden olur.

Not

Kümenizi güncelleştirirken aşağıdaki bilgileri göz önünde bulundurun:

  • Güncelleştirme yalnızca tüketecek bir VHD güncelleştirmesi varsa çalışır. En son VHD'yi çalıştırıyorsanız güncelleştirmeyi gerçekleştirmek için bir sonraki VHD kullanılabilir olana kadar beklemeniz gerekir.

  • Azure CLI, geçiş sonrasında eklentinizin izninin doğru şekilde ayarlanmasını sağlar. Geçiş işlemini gerçekleştirmek için Azure CLI kullanmıyorsanız, eklenti kimliğinin iznini kendiniz işlemeniz gerekir. Azure Resource Manager (ARM) şablonu kullanma örneği için bkz . ARM şablonlarını kullanarak Azure rolleri atama.

  • Kümeniz Azure Container Registry'den (ACR) görüntü çekmek için kullanıyorsa --attach-acr , yönetilen kimlik için kullanılan yeni oluşturulan kubelet'in ACR'den çekme iznini almasına izin vermek için kümenizi güncelleştirdikten sonra komutunu çalıştırmanız az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR resource ID> gerekir. Aksi takdirde, güncelleştirmeden sonra ACR'den çekemezsiniz.

Sistem tarafından atanan yönetilen kimlik için rol ataması ekleme

Küme izinlerini başka bir Azure kaynağında vermek için sistem tarafından atanan yönetilen kimliğe bir Azure RBAC rolü atayabilirsiniz. Azure RBAC, izin düzeylerini belirten hem yerleşik hem de özel rol tanımlarını destekler. Azure RBAC rollerini atama hakkında daha fazla bilgi için bkz . Azure rolü atama adımları.

Yönetilen kimliğe Azure RBAC rolü atadığınızda, rolün kapsamını tanımlamanız gerekir. Genel olarak, bir rolün kapsamını yönetilen kimliğin gerektirdiği en düşük ayrıcalıklarla sınırlamak en iyi yöntemdir. Azure RBAC rollerinin kapsamını belirleme hakkında daha fazla bilgi için bkz . Azure RBAC kapsamını anlama.

Kaynakların çalışan düğümü kaynak grubunun dışında olduğu kendi sanal ağınızı, ekli Azure disklerinizi, statik IP adresini, yönlendirme tablosunu veya kullanıcı tarafından atanan kubelet kimliğini oluşturup kullandığınızda, Azure CLI rol atamasını otomatik olarak ekler. ARM şablonu veya başka bir yöntem kullanıyorsanız rol ataması gerçekleştirmek için yönetilen kimliğin asıl kimliğini kullanın.

Azure CLI kullanmıyorsanız ancak çalışan düğümü kaynak grubunun dışında kendi sanal ağınızı, bağlı Azure disklerinizi, statik IP adresinizi, yönlendirme tablonuzu veya kullanıcı tarafından atanan kubelet kimliğinizi kullanıyorsanız, denetim düzlemi için kullanıcı tarafından atanan yönetilen kimlik kullanmanızı öneririz. Denetim düzlemi sistem tarafından atanan bir yönetilen kimlik kullandığında, kimlik kümeyle aynı anda oluşturulur, bu nedenle rol ataması küme oluşturulana kadar gerçekleştirilemez.

Sistem tarafından atanan yönetilen kimliğin asıl kimliğini alma

Kümenin sistem tarafından atanan yönetilen kimliğine Azure RBAC rolü atamak için önce yönetilen kimliğin asıl kimliği gerekir. komutunu çağırarak kümenin sistem tarafından atanan yönetilen kimliğinin az aks show asıl kimliğini alın.

# Get the principal ID for a system-assigned managed identity.
CLIENT_ID=$(az aks show \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --query identity.principalId \
    --output tsv)

Sistem tarafından atanan yönetilen kimliğe Azure RBAC rolü atama

Azure'daki bir kaynağa sistem tarafından atanan yönetilen kimlik izinleri vermek için komutunu çağırarak az role assignment create yönetilen kimliğe bir Azure RBAC rolü atayın.

Sanal ağ, ekli Azure diski, statik IP adresi veya varsayılan çalışan düğümü kaynak grubunun dışındaki yönlendirme tablosu için, rolü özel kaynak grubuna atamanız Network Contributor gerekir.

Örneğin, komutunu kullanarak özel kaynak grubundaki rolü atayın Network Contributor az role assignment create . parametresi için --scope kümenin kaynak grubunun kaynak kimliğini belirtin.

az role assignment create \
    --assignee $CLIENT_ID \
    --role "Network Contributor" \
    --scope "<resource-group-id>"

Not

Kümenizin yönetilen kimliğine verilen izinlerin yayılması 60 dakika kadar sürebilir.

Kullanıcı tarafından atanan yönetilen kimliği etkinleştirme

Kullanıcı tarafından atanan yönetilen kimlik tek başına bir Azure kaynağıdır. Denetim düzlemi için kullanıcı tarafından atanan yönetilen kimliğe sahip bir küme oluşturduğunuzda, küme oluşturmadan önce kullanıcı tarafından atanan yönetilen kimlik kaynağının mevcut olması gerekir. Bu özellik, özel bir sanal ağ veya kullanıcı tanımlı yönlendirme (UDR) giden türü ile küme oluşturma gibi senaryoları etkinleştirir.

Kullanıcı tarafından atanan yönetilen kimlik oluşturma

Henüz kullanıcı tarafından atanan yönetilen kimlik kaynağınız yoksa komutunu kullanarak az identity create bir kaynak oluşturun.

az identity create \
    --name myIdentity \
    --resource-group myResourceGroup

Çıkışınız aşağıdaki örnek çıkışa benzemelidir:

{                                  
  "clientId": "<client-id>",
  "clientSecretUrl": "<clientSecretUrl>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity", 
  "location": "westus2",
  "name": "myIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",                       
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Kullanıcı tarafından atanan yönetilen kimliğin asıl kimliğini alma

Kullanıcı tarafından atanan yönetilen kimliğin asıl kimliğini almak için az identity show çağrısı yapın ve özelliğinde sorgu yapın principalId :

CLIENT_ID=$(az identity show \
    --name myIdentity \
    --resource-group myResourceGroup \
    --query principalId \
    --output tsv)

Kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliğini alma

Kullanıcı tarafından atanan yönetilen kimliğe sahip bir küme oluşturmak için yeni yönetilen kimliğin kaynak kimliği gerekir. Kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliğini almak için özelliğinde az aks show ve query çağrısı yapın id :

RESOURCE_ID=$(az identity show \
    --name myIdentity \
    --resource-group myResourceGroup \
    --query id \
    --output tsv)

Kullanıcı tarafından atanan yönetilen kimliğe Azure RBAC rolü atama

Kümeyi oluşturmadan önce komutunu çağırarak yönetilen kimlik için bir rol ataması az role assignment create ekleyin.

Aşağıdaki örnek, anahtar kasasındaki gizli dizilere erişim izinleri vermek için kullanıcı tarafından atanan yönetilen kimliğe Key Vault Gizli Dizileri Kullanıcı rolünü atar. Rol atamasının kapsamı anahtar kasası kaynağı olarak belirlenmiştir:

az role assignment create \
    --assignee $CLIENT_ID \
    --role "Key Vault Secrets User" \
    --scope "<keyvault-resource-id>"

Not

Kümenizin yönetilen kimliğine verilen izinlerin yayılması 60 dakika kadar sürebilir.

Kullanıcı tarafından atanan yönetilen kimlikle küme oluşturma

Kullanıcı tarafından atanan yönetilen kimliğe sahip bir AKS kümesi oluşturmak için komutunu çağırın az aks create . parametresini --assign-identity ekleyin ve kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliğini geçirin:

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --assign-identity $RESOURCE_ID \
    --generate-ssh-keys

Not

Azure US Government bulutundaki USDOD Central, USDOD East ve USGov Iowa bölgeleri, kullanıcı tarafından atanan yönetilen kimlikle küme oluşturmayı desteklemez.

Kullanıcı tarafından atanan yönetilen kimliği kullanmak için mevcut kümeyi güncelleştirme

Mevcut kümeyi kullanıcı tarafından atanan yönetilen kimliği kullanacak şekilde güncelleştirmek için komutunu çağırın az aks update . parametresini --assign-identity ekleyin ve kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliğini geçirin:

az aks update \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --enable-managed-identity \
    --assign-identity $RESOURCE_ID

Başarılı bir küme güncelleştirmesinin kullanıcı tarafından atanan yönetilen kimliği kullanma çıktısı aşağıdaki örnek çıktıya benzemelidir:

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },

Not

Denetim düzlemi için yönetilen kimliğin sistem tarafından atanan kullanıcı tarafından atanan bir kimlikten geçirilmesi, denetim düzlemi ve aracı havuzları için kapalı kalma süresine neden olmaz. Denetim düzlemi bileşenleri, bir sonraki belirteç yenilemesine kadar birkaç saate kadar eski sistem tarafından atanan kimliğe devam eder.

Bir kümenin hangi yönetilen kimlik türünü kullandığını belirleme

Mevcut AKS kümenizin hangi tür yönetilen kimliği kullandığını belirlemek için az aks show komutunu çağırın ve kimliğin type özelliği için sorguyu çalıştırın.

az aks show \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --query identity.type \
    --output tsv       

Küme yönetilen kimlik kullanıyorsa type özelliğinin değeri SystemAssigned veya UserAssigned olur.

Küme bir hizmet sorumlusu kullanıyorsa type özelliğinin değeri null olur. Yönetilen kimlik kullanmak için kümenizi yükseltmeyi göz önünde bulundurun.

Önceden oluşturulmuş kubelet yönetilen kimliği kullanma

Önceden oluşturulmuş kubelet kimliği, küme oluşturmadan önce var olan kullanıcı tarafından atanan yönetilen kimliktir. Bu özellik, küme oluşturma sırasında Azure Container Registry'ye (ACR) bağlantı gibi senaryoları etkinleştirir.

Not

Kendi kubelet yönetilen kimliğinizi belirtmezseniz AKS, düğüm kaynak grubunda kullanıcı tarafından atanan bir kubelet kimliği oluşturur.

Varsayılan çalışan düğümü kaynak grubunun dışında kullanıcı tarafından atanan kubelet kimliği için, denetim düzlemi yönetilen kimliği için kubelet kimliğinde Yönetilen Kimlik operatörü rolünü atamanız gerekir.

kubelet yönetilen kimliği

Kubelet yönetilen kimliğiniz yoksa komutunu kullanarak az identity create bir kimlik oluşturun.

az identity create \
    --name myKubeletIdentity \
    --resource-group myResourceGroup

Çıkışınız aşağıdaki örnek çıkışa benzemelidir:

{
  "clientId": "<client-id>",
  "clientSecretUrl": "<clientSecretUrl>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity", 
  "location": "westus2",
  "name": "myKubeletIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",                       
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Kubelet yönetilen kimliğine RBAC rolü atama

ACRPull komutunu kullanarak kubelet kimliğindeki rolü atayınaz role assignment create. $KUBELET_CLIENT_ID değişkeni için kubelet kimliğinin asıl kimliğini ve $ACR_REGISTRY_ID değişkeni için ACR kayıt defteri kimliğini sağlayın.

az role assignment create \
    --assignee $KUBELET_CLIENT_ID \
    --role "acrpull" \
    --scope "$ACR_REGISTRY_ID"

Kubelet kimliğini kullanmak için küme oluşturma

Artık aks kümenizi mevcut kimliklerinizle oluşturabilirsiniz. Bağımsız değişkenini ve bağımsız değişkeni kullanarak kubelet yönetilen kimliğini ekleyerek assign-identity denetim düzlemi için yönetilen kimliğin kaynak kimliğini sağladığından assign-kubelet-identity emin olun.

komutunu kullanarak az aks create mevcut kimliklerinizle bir AKS kümesi oluşturun.

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --assign-identity <identity-resource-id> \
    --assign-kubelet-identity <kubelet-identity-resource-id> \
    --generate-ssh-keys

Kubelet yönetilen kimliği kullanılarak başarılı bir AKS kümesi oluşturma işlemi aşağıdakine benzer bir çıkışla sonuçlanmalıdır:

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },
  "identityProfile": {
    "kubeletidentity": {
      "clientId": "<client-id>",
      "objectId": "<object-id>",
      "resourceId": "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"
    }
  },

Kubelet kimliğini kullanmak için mevcut kümeyi güncelleştirme

Mevcut bir kümeyi kubelet yönetilen kimliğini kullanacak şekilde güncelleştirmek için önce AKS kümenizin geçerli denetim düzlemi yönetilen kimliğini alın.

Uyarı

Kubelet yönetilen kimliğinin güncelleştirilmesi AKS kümenizin düğüm havuzlarını yükselterek düğüm havuzlarındaki düğümler cordoned/drained ve yeniden oluşturulduğundan küme için kapalı kalma süresine neden olur.

  1. KOMUTUNU kullanarak AKS kümenizin kullanıcı tarafından atanan yönetilen kimliği kullandığını az aks show onaylayın.

    az aks show \
        --resource-group <RGName> \
        --name <ClusterName> \
        --query "servicePrincipalProfile"
    

    Kümeniz yönetilen kimlik kullanıyorsa, çıktı msi değeriyle gösterilirclientId. Hizmet sorumlusu kullanan bir küme nesne kimliğini gösterir. Örneğin:

    # The cluster is using a managed identity.
    {
      "clientId": "msi"
    }
    
  2. Kümenizin yönetilen kimlik kullandığını onayladıktan sonra komutunu kullanarak yönetilen kimliğin az aks show kaynak kimliğini bulun.

    az aks show --resource-group <RGName> \
        --name <ClusterName> \
        --query "identity"
    

    Kullanıcı tarafından atanan yönetilen kimlik için çıkışınız aşağıdaki örnek çıktıya benzer olmalıdır:

    {
      "principalId": null,
      "tenantId": null,
      "type": "UserAssigned",
      "userAssignedIdentities": <identity-resource-id>
          "clientId": "<client-id>",
          "principalId": "<principal-id>"
    },
    
  3. komutunu kullanarak kümenizi mevcut kimliklerinizle güncelleştirin az aks update . Bağımsız değişkeninin denetim düzlemi için kullanıcı tarafından atanan yönetilen kimliğin assign-identity kaynak kimliğini belirtin. Bağımsız değişkeni için kubelet yönetilen kimliğinin assign-kubelet-identity kaynak kimliğini belirtin.

    az aks update \
        --resource-group myResourceGroup \
        --name myManagedCluster \
        --enable-managed-identity \
        --assign-identity <identity-resource-id> \
        --assign-kubelet-identity <kubelet-identity-resource-id>
    

Kendi kubelet yönetilen kimliğinizi kullanarak başarılı bir küme güncelleştirmesi için çıkışınız aşağıdaki örnek çıktıya benzemelidir:

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },
  "identityProfile": {
    "kubeletidentity": {
      "clientId": "<client-id>",
      "objectId": "<object-id>",
      "resourceId": "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"
    }
  },

Not

Kümeniz Azure Container Registry'den görüntü çekmek için kullanıyorsa --attach-acr , yönetilen kimlik için kullanılan yeni oluşturulan kubelet'in ACR'den çekme izni almasına izin vermek için kümenizi güncelleştirdikten sonra komutunu çalıştırın az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR Resource ID> . Aksi takdirde, yükseltmeden sonra ACR'den çekemezsiniz.

Kubelet kimliğinin özelliklerini alma

Kubelet kimliğinin özelliklerini almak için az aks show ve query komutunu özelliğinde çağırın.identityProfile.kubeletidentity

az aks show \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --query "identityProfile.kubeletidentity"

Önceden oluşturulmuş kubelet kimlik sınırlamaları

Önceden oluşturulmuş kubelet kimliği için aşağıdaki sınırlamalara dikkat edin:

  • Önceden oluşturulmuş bir kubelet kimliği, kullanıcı tarafından atanan yönetilen kimlik olmalıdır.
  • Microsoft Azure'da 21Vianet tarafından sağlanan Doğu Çin ve Çin Kuzey bölgeleri desteklenmez.

AKS tarafından kullanılan yönetilen kimliklerin özeti

AKS, yerleşik hizmetler ve eklentiler için çeşitli yönetilen kimlikler kullanır.

Kimlik Veri Akışı Adı Kullanım örneği Varsayılan izinler Kendi kimliğinizi getirin
Kontrol düzlemi AKS Küme Adı Aks denetim düzlemi bileşenleri tarafından giriş yük dengeleyicileri ve AKS tarafından yönetilen genel IP'ler, Küme Otomatik Ölçeklendiricisi, Azure Disk, Dosya, Blob CSI sürücüleri gibi küme kaynaklarını yönetmek için kullanılır. Node kaynak grubu için katkıda bulunan rolü Desteklenir
Kubelet AKS Kümesi Adı-aracı havuzu Azure Container Registry (ACR) ile kimlik doğrulaması. Yok (kubernetes v1.15+için) Desteklenir
Eklenti AzureNPM Kimlik gerekmez. Yok Hayır
Eklenti AzureCNI ağ izleme Kimlik gerekmez. Yok Hayır
Eklenti azure-policy (ağ geçidi denetleyicisi) Kimlik gerekmez. Yok Hayır
Eklenti azure-policy Kimlik gerekmez. Yok Hayır
Eklenti Calico Kimlik gerekmez. Yok Hayır
Eklenti uygulama yönlendirme Azure DNS ve Azure Key Vault sertifikalarını yönetir Key Vault Gizli Dizileri Key Vault için kullanıcı rolü, DNS bölgeleri için DNZ Bölge Katılımcısı rolü, özel DNS bölgeleri için Özel DNS Bölge Katılımcısı rolü Hayır
Eklenti HTTPApplicationRouting Gerekli ağ kaynaklarını yönetir. Düğüm kaynak grubu için okuyucu rolü, DNS bölgesi için katkıda bulunan rolü Hayır
Eklenti Giriş uygulaması ağ geçidi Gerekli ağ kaynaklarını yönetir. Düğüm kaynak grubu için katkıda bulunan rolü Hayır
Eklenti omsagent AKS ölçümlerini Azure İzleyici'ye göndermek için kullanılır. Ölçüm Yayımcısı rolünü izleme Hayır
Eklenti Sanal Düğüm (ACIConnector) Azure Container Instances (ACI) için gerekli ağ kaynaklarını yönetir. Düğüm kaynak grubu için katkıda bulunan rolü Hayır
Eklenti Maliyet analizi Maliyet ayırma verilerini toplamak için kullanılır
İş yükü kimliği Microsoft Entra iş yükü kimliği Microsoft Entra iş yükü kimliği ile uygulamaların bulut kaynaklarına güvenli bir şekilde erişmesini sağlar. Yok Hayır

Önemli

Azure Kubernetes Service'teki açık kaynak Microsoft Entra pod yönetilen kimliği (önizleme) 24.10.2022 tarihinde kullanım dışı bırakıldı ve proje Eylül 2023'te arşivlendi. Daha fazla bilgi için kullanımdan kaldırma bildirimine bakın. AKS Yönetilen eklentisi Eylül 2024'te kullanımdan kaldırmaya başlar.

Microsoft Entra İş Yükü Kimliği gözden geçirmenizi öneririz. Entra İş Yükü Kimliği kimlik doğrulaması, kullanım dışı bırakılan pod ile yönetilen kimlik (önizleme) özelliğinin yerini alır. Entra İş Yükü Kimliği, pod üzerinde çalışan bir uygulamanın kendisini destekleyen diğer Azure hizmetlerinde kimlik doğrulaması yapmasını sağlamak için önerilen yöntemdir.

Sınırlamalar

  • Yönetilen kimlik özellikli bir kümenin farklı bir kiracıya taşınması veya geçirilmesi desteklenmez.

  • Kümede Microsoft Entra pod yönetilen kimliği (aad-pod-identity) etkinleştirildiyse, Düğüm Tarafından Yönetilen Kimlik (NMI) podları düğümlerin iptable'larını değiştirerek Azure Örnek Meta Verileri (IMDS) uç noktasına yapılan çağrıları durdurur. Bu yapılandırma, belirli bir pod kullanmasa aad-pod-identitybile IMDS uç noktasına yapılan tüm isteklerin NMI tarafından durdurulması anlamına gelir.

    AzurePodIdentityException özel kaynak tanımı (CRD), CRD'de tanımlanan pod eşleştirme etiketlerinden kaynaklanan IMDS uç noktasına gelen isteklerin NMI'de herhangi bir işlem yapılmadan proksid edilmesi gerektiğini belirtecek şekilde yapılandırılabilir. AzurePodIdentityException CRD'sini kubernetes.azure.com/managedby: aks yapılandırarak içinde kube-system ad alanında aad-pod-identity etiketi olan sistem podlarını hariç tutun. Daha fazla bilgi için bkz . Azure Kubernetes Service'te Microsoft Entra pod ile yönetilen kimlikleri kullanma.

    Özel durum yapılandırmak için mikrofon özel durumu YAML'sini yükleyin.

  • AKS, özel bir özel DNS bölgesi kullanılırken sistem tarafından atanan yönetilen kimlik kullanımını desteklemez.

Sonraki adımlar