Usar uma identidade gerenciada no Serviço de Kubernetes do Azure (AKS)
Os clusters do Serviço de Kubernetes do Azure (AKS) exigem uma identidade do Microsoft Entra para acessar os recursos do Azure, como balanceadores de carga e discos gerenciados. As identidades gerenciadas para recursos do Azure são a maneira recomendada de autorizar o acesso de um cluster do AKS a outros serviços do Azure.
Você pode usar uma identidade gerenciada para autorizar o acesso de um cluster do AKS a qualquer serviço que dê suporte à autorização do Microsoft Entra, sem a necessidade de gerenciar credenciais ou incluí-las em seu código. Você atribui à identidade gerenciada uma função de RBAC (controle de acesso baseado em função) do Azure para conceder a ela permissões para um recurso específico no Azure. Por exemplo, você pode conceder permissões a uma identidade gerenciada para acessar segredos em um cofre de chaves do Azure para uso pelo cluster. Para saber mais sobre o RBAC do Azure, veja O que é o controle de acesso baseado em função do Azure (RBAC do Azure)?.
Este artigo mostra como habilitar os seguintes tipos de identidade gerenciada em um cluster novo ou existente do AKS:
- Identidade gerenciada atribuída pelo sistema. Uma identidade gerenciada atribuída pelo sistema está associada a um único recurso do Azure, como um cluster do AKS. Ela existe apenas durante o ciclo de vida do cluster.
- Identidade gerenciada atribuída ao usuário. Uma identidade gerenciada atribuída pelo usuário é um recurso independente do Azure que um cluster do AKS pode usar para autorizar o acesso a outros serviços do Azure. Ela persiste separadamente do cluster do AKS e pode ser usada por vários recursos do Azure.
- Identidade gerenciada do kubelet pré-criada. Uma identidade gerenciada do kubelet pré-criada é uma identidade opcional atribuída pelo usuário que o kubelet pode usar para acessar outros recursos no Azure. Se você não especificar uma identidade gerenciada atribuída pelo usuário para kubelet, o AKS criará uma identidade do kubelet atribuída pelo usuário no grupo de recursos do nó.
Para saber mais sobre identidades gerenciadas, confira Identidades gerenciadas para recursos do Azure.
Visão geral
Um cluster do AKS usa uma identidade gerenciada para solicitar tokens do Microsoft Entra. Esses tokens são usados para autorizar o acesso a outros recursos em execução no Azure. Você pode atribuir uma função RBAC do Azure a uma identidade gerenciada para conceder permissões de cluster para acessar recursos específicos. Por exemplo, se o cluster precisar acessar segredos em um cofre de chaves do Azure, você poderá atribuir à identidade gerenciada do cluster uma função RBAC do Azure que concede essas permissões.
Uma identidade gerenciada pode ser atribuída pelo sistema ou pelo usuário. Esses dois tipos de identidades gerenciadas são semelhantes no sentido de que você pode usar qualquer tipo para autorizar o acesso aos recursos do Azure a partir do cluster do AKS. A principal diferença entre eles é que uma identidade gerenciada atribuída pelo sistema está associada a um único recurso do Azure, como um cluster do AKS, enquanto uma identidade gerenciada atribuída pelo usuário é um recurso independente do Azure. Para obter mais detalhes sobre as diferenças entre os tipos de identidades gerenciadas, consulte Tipos de identidade gerenciada em Identidades gerenciadas para recursos do Azure.
Ambos os tipos de identidades gerenciadas são gerenciados pela plataforma do Azure, para que você possa autorizar o acesso de seus aplicativos sem a necessidade de provisionar ou girar segredos. O Azure gerencia as credenciais da identidade para você.
Quando você implanta um cluster do AKS, uma identidade gerenciada atribuída pelo sistema é criada para você por padrão. Você também pode criar o cluster com uma identidade gerenciada atribuída pelo usuário.
Também é possível criar um cluster com uma entidade de serviço de aplicativo, em vez de uma identidade gerenciada. As identidades gerenciadas são recomendadas em relação às entidades de serviço por questões de segurança e facilidade de uso. Para obter mais informações sobre como criar um cluster com uma entidade de serviço, consulte Usar uma entidade de serviço com o Serviço de Kubernetes do Azure (AKS).
Você pode atualizar um cluster existente para usar uma identidade gerenciada de uma entidade de serviço de aplicativo. Você também pode atualizar um cluster existente para um tipo diferente de identidade gerenciada. Se o seu cluster já estiver usando a identidade gerenciada e ela tiver sido alterada, por exemplo, se você atualizou o tipo de identidade do cluster de atribuída pelo sistema para atribuída pelo usuário, haverá um atraso para os componentes do painel de controle mudarem para a nova identidade. Os componentes do painel de controle continuam a usar a identidade antiga até que seu token expire. Depois que o token for atualizado, ele mudará para a nova identidade. Esse processo pode levar várias horas.
Os tipos de identidade atribuída pelo sistema e atribuída pelo usuário diferem de uma identidade de carga de trabalho do Microsoft Entra, que se destina a ser usada por um aplicativo em execução em um pod.
Antes de começar
Certifique-se de ter a CLI do Azure versão 2.23.0 ou posterior instalada. Execute
az --version
para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.Para usar uma identidade gerenciada de kubelet pré-criada, você precisa da CLI do Azure versão 2.26.0 ou posterior instalada.
Para atualizar um cluster existente para usar uma identidade gerenciada atribuída pelo sistema ou uma identidade gerenciada atribuída pelo usuário, você precisa da CLI do Azure versão 2.49.0 ou posterior instalada.
Antes de executar os exemplos deste artigo, defina sua assinatura como a assinatura ativa atual chamando o comando az account set e passando sua ID da assinatura.
az account set --subscription <subscription-id>
Crie também um grupo de recursos do Azure, se você ainda não tiver um, chamando o comando az group create
.
az group create \
--name myResourceGroup \
--location westus2
Habilitar uma identidade gerenciada atribuída ao sistema
Uma identidade gerenciada atribuída pelo sistema é uma identidade associada a um cluster do AKS ou a outro recurso do Azure. A identidade gerenciada atribuída pelo sistema está vinculada ao ciclo de vida do cluster. Quando o cluster é excluído, a identidade gerenciada atribuída pelo sistema também é excluída.
O cluster do AKS pode usar a identidade gerenciada atribuída pelo sistema para autorizar o acesso a outros recursos em execução no Azure. Você pode atribuir uma função RBAC do Azure à identidade gerenciada atribuída pelo sistema para conceder permissões de cluster para acessar recursos específicos. Por exemplo, se o cluster precisar acessar segredos em um cofre de chaves do Azure, você poderá atribuir à identidade gerenciada atribuída pelo sistema uma função RBAC do Azure que concede essas permissões.
Habilitar uma identidade gerenciada atribuída pelo sistema em um novo cluster do AKS
Para habilitar uma identidade gerenciada atribuída pelo sistema em um novo cluster, chame o az aks create
. Uma identidade gerenciada atribuída pelo sistema é habilitada no novo cluster por padrão.
Crie um cluster do AKS usando o comando az aks create
.
az aks create \
--resource-group myResourceGroup \
--name myManagedCluster \
--generate-ssh-keys
Para verificar se uma identidade gerenciada atribuída pelo sistema está habilitada para o cluster depois de criada, consulte Determinar qual tipo de identidade gerenciada um cluster está usando.
Atualizar um cluster do AKS existente para usar uma identidade gerenciada atribuída pelo sistema
Para atualizar um cluster do AKS existente que está usando uma entidade de serviço para usar uma identidade gerenciada atribuída pelo sistema, execute o comando az aks update
com o parâmetro --enable-managed-identity
.
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-managed-identity
Depois de atualizar o cluster para usar uma identidade gerenciada atribuída pelo sistema em vez de uma entidade de serviço, o painel de controle e os pods usam a identidade gerenciada atribuída pelo sistema para autorização ao acessar outros serviços no Azure. O kubelet continuará usando uma entidade de serviço até que você atualize seu pool de agentes. Você pode usar o comando az aks nodepool upgrade --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-image-only
em seus nós para atualizar para uma identidade gerenciada. Uma atualização do pool de nós causa tempo de inatividade para seu cluster do AKS, pois os nós nos pools de nós são isolados, drenados e recriados.
Observação
Lembre-se das seguintes informações ao atualizar seu cluster:
Uma atualização só funciona se houver uma atualização de VHD para consumir. Se você estiver executando o VHD mais recente, precisará esperar até que o próximo VHD esteja disponível para executar a atualização.
A CLI do Azure garante que a permissão do complemento seja definida corretamente após a migração. Se você não estiver usando a CLI do Azure para executar a operação de migração, precisará lidar com a permissão da identidade do complemento por conta própria. Para obter um exemplo usando um modelo do Azure Resource Manager (ARM), confira Atribuir funções do Azure usando modelos de ARM.
Se seu cluster estava usando
--attach-acr
para extrair imagens do Registro de Contêiner do Azure (ACR), é necessário executar o comandoaz aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR resource ID>
depois de atualizar seu cluster para permitir que o kubelet recém-criado usado para a identidade gerenciada obtenha a permissão para extrair do ACR. Caso contrário, você não conseguirá efetuar pull do ACR após a atualização.
Adicionar uma atribuição de função a uma identidade gerenciada atribuída pelo sistema
Você pode atribuir uma função RBAC do Azure à identidade gerenciada atribuída pelo sistema para conceder permissões de cluster em outro recurso do Azure. O RBAC do Azure dá suporte a definições de função internas e personalizadas que especificam níveis de permissões. Para obter mais informações sobre como atribuir funções RBAC do Azure, consulte Etapas para atribuir uma função do Azure.
Ao atribuir uma função RBAC do Azure a uma identidade gerenciada, você deve definir o escopo da função. Em geral, é uma melhor prática limitar o escopo de uma função aos privilégios mínimos exigidos pela identidade gerenciada. Para obter mais informações sobre o escopo de funções RBAC do Azure, consulte Entenda o escopo do RBAC do Azure.
Quando você cria e usa sua própria VNet, discos do Azure conectados, endereço IP estático, tabela de rotas ou identidade do kubelet atribuída pelo usuário, em que os recursos estão fora do grupo de recursos do nó de trabalho, a CLI do Azure adiciona a atribuição de função automaticamente. Se você estiver usando um modelo do ARM ou outro método, precisará usar a ID da entidade de segurança da identidade gerenciada do para realizar uma atribuição de função.
Se você não estiver usando a CLI do Azure, mas usa sua própria VNet, discos do Azure conectados, endereço IP estático, tabela de rotas ou identidade de kubelet atribuída pelo usuário que esteja fora do grupo de recursos do nó de trabalho, recomendamos usar uma identidade gerenciada atribuída pelo usuário para o painel de controle. Quando o painel de controle usa uma identidade gerenciada atribuída pelo sistema, a identidade é criada ao mesmo tempo que o cluster, de modo que a atribuição de função não pode ser executada até que o cluster tenha sido criado.
Obter a ID da entidade de segurança da identidade gerenciada atribuída pelo sistema
Para atribuir uma função RBAC do Azure a uma identidade gerenciada atribuída pelo sistema de um cluster, primeiro você precisa da ID da entidade de segurança para a identidade gerenciada. Obtenha a ID da entidade de segurança para a identidade gerenciada atribuída pelo sistema do cluster chamando o comando az aks show
.
# 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)
Atribuir uma função RBAC do Azure à identidade gerenciada atribuída pelo sistema
Para conceder permissões de identidade gerenciada atribuída pelo sistema a um recurso no Azure, chame o comando az role assignment create
para atribuir uma função RBAC do Azure à identidade gerenciada.
Para uma VNet, disco do Azure anexado, endereço IP estático ou tabela de rotas fora do grupo de recursos padrão do nó de trabalho, você precisa atribuir a função Network Contributor
ao grupo de recursos personalizado.
Por exemplo, atribua a função Network Contributor
ao grupo de recursos personalizado usando o comando az role assignment create
. Para o parâmetro --scope
, forneça a ID do recurso para o grupo de recursos do cluster.
az role assignment create \
--assignee $CLIENT_ID \
--role "Network Contributor" \
--scope "<resource-group-id>"
Observação
Pode levar até 60 minutos para que as permissões concedidas à identidade gerenciada do cluster sejam propagadas.
Habilitar uma identidade gerenciada atribuída pelo usuário
Uma identidade gerenciada atribuída pelo usuário é um recurso autônomo do Azure. Quando você cria um cluster com uma identidade gerenciada atribuída pelo usuário para o painel de controle, o recurso de identidade gerenciada atribuído pelo usuário deve existir antes da criação do cluster. Esse recurso habilita cenários como a criação do cluster com uma VNet personalizada ou com um tipo de saída de UDR (roteamento definido pelo usuário).
Criar uma identidade gerenciada atribuída ao usuário
Se você ainda não tiver um recurso de identidade gerenciada atribuída pelo usuário, crie um usando o comando az identity create
.
az identity create \
--name myIdentity \
--resource-group myResourceGroup
Sua saída deve ser parecida com o seguinte exemplo de saída:
{
"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"
}
Obter a ID da entidade de segurança da identidade gerenciada atribuída pelo usuário
Para obter a ID da entidade de segurança da identidade gerenciada atribuída pelo usuário, chame az identity show e faça uma consulta da propriedade principalId
:
CLIENT_ID=$(az identity show \
--name myIdentity \
--resource-group myResourceGroup \
--query principalId \
--output tsv)
Obter a ID do recurso da identidade gerenciada atribuída pelo usuário
Para criar um cluster com uma identidade gerenciada atribuída pelo usuário, você precisará da ID do recurso para a nova identidade gerenciada. Para obter a ID do recurso da identidade gerenciada atribuída pelo usuário, chame az aks show e faça uma consulta da propriedade id
:
RESOURCE_ID=$(az identity show \
--name myIdentity \
--resource-group myResourceGroup \
--query id \
--output tsv)
Atribuir uma função RBAC do Azure a uma identidade gerenciada atribuída pelo usuário
Antes de criar o cluster, adicione uma atribuição de função para a identidade gerenciada chamando o comando az role assignment create
.
O exemplo a seguir atribui a função de Usuário de Segredos do Key Vault à identidade gerenciada atribuída pelo usuário para conceder a ela permissões para acessar segredos em um cofre de chaves. A atribuição de função tem como escopo o recurso do cofre de chaves:
az role assignment create \
--assignee $CLIENT_ID \
--role "Key Vault Secrets User" \
--scope "<keyvault-resource-id>"
Observação
Pode levar até 60 minutos para que as permissões concedidas à identidade gerenciada do cluster sejam propagadas.
Criar um cluster com a identidade gerenciada atribuída pelo usuário
Para criar um cluster do AKS com a identidade gerenciada atribuída pelo usuário, chame o comando az aks create
. Inclua o parâmetro --assign-identity
e passe a ID do recurso para a identidade gerenciada atribuída pelo usuário:
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
Observação
As regiões USDOD Central, USDOD East e USGov Iowa na nuvem do Governo dos Estados Unidos do Azure não dão suporte à criação de um cluster com uma identidade gerenciada atribuída pelo usuário.
Atualizar um cluster existente para usar uma identidade gerenciada atribuída pelo usuário
Para atualizar um cluster existente para usar uma identidade gerenciada atribuída pelo usuário, chame o comando az aks update
. Inclua o parâmetro --assign-identity
e passe a ID do recurso para a identidade gerenciada atribuída pelo usuário:
az aks update \
--resource-group myResourceGroup \
--name myManagedCluster \
--enable-managed-identity \
--assign-identity $RESOURCE_ID
A saída de uma atualização bem-sucedida do cluster para usar uma identidade gerenciada atribuída pelo usuário deve ser semelhante à seguinte saída de exemplo:
"identity": {
"principalId": null,
"tenantId": null,
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
"clientId": "<client-id>",
"principalId": "<principal-id>"
}
}
},
Observação
A migração de uma identidade gerenciada para o painel de controle, de atribuída pelo sistema para atribuída pelo usuário, não causa nenhum tempo de inatividade para o painel de controle e os pools de agentes. Os componentes do painel de controle continuarão usando a identidade antiga atribuída pelo sistema por várias horas até a próxima atualização do token.
Determinar qual tipo de identidade gerenciada um cluster está usando
Para determinar qual tipo de identidade gerenciada o cluster do AKS existente está usando, chame o comando az aks show e faça uma consulta para a propriedade tipo da identidade.
az aks show \
--name myAKSCluster \
--resource-group myResourceGroup \
--query identity.type \
--output tsv
Se o cluster estiver usando uma identidade gerenciada, o valor da propriedade tipo será SystemAssigned ou UserAssigned.
Se o cluster estiver usando uma entidade de serviço, o valor da propriedade tipo será nulo. Considere atualizar o cluster para usar uma identidade gerenciada.
Usar uma identidade gerenciada do kubelet criada previamente
Uma identidade do kubelet pré-criada é uma identidade gerenciada atribuída pelo usuário que existe antes da criação do cluster. Esse recurso permite cenários como a conexão com o ACR (Registro de Contêiner do Azure) durante a criação do cluster.
Observação
O AKS cria uma identidade do kubelet atribuída pelo sistema no grupo de recursos do nó se você não especificar sua própria identidade gerenciada pelo kubelet.
Para uma identidade de kubelet atribuída pelo usuário fora do grupo de recursos padrão do nó de trabalho, você precisa atribuir a função de Operador de Identidade Gerenciada na identidade de kubelet para a identidade gerenciada do painel de controle.
identidade gerenciada do kubelet
Se você não tiver uma identidade gerenciada do kubelet, crie uma usando o comando az identity create
.
az identity create \
--name myKubeletIdentity \
--resource-group myResourceGroup
Sua saída deve ser parecida com o seguinte exemplo de saída:
{
"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"
}
Atribuir uma função RBAC à identidade gerenciada do kubelet
Atribua a função ACRPull
na identidade do kubelet usando o comando az role assignment create
. Forneça a ID da entidade de segurança da identidade kubelet para a variável $KUBELET_CLIENT_ID e forneça a ID do Registro do ACR para a variável $ACR_REGISTRY_ID.
az role assignment create \
--assignee $KUBELET_CLIENT_ID \
--role "acrpull" \
--scope "$ACR_REGISTRY_ID"
Criar um cluster para usar a identidade do kubelet
Agora você pode criar seu cluster do AKS com suas identidades existentes. certifique-se de fornecer a ID do recurso da identidade gerenciada para o painel de controle, incluindo o argumento assign-identity
e a identidade gerenciada de kubelet usando o argumento assign-kubelet-identity
.
Crie um cluster do AKS com suas identidades existentes usando o comando az aks create
.
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
Uma criação bem-sucedida de cluster do AKS usando uma identidade gerenciada de kubelet deve resultar em uma saída semelhante à seguinte:
"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"
}
},
Atualizar um cluster existente para usar a identidade do kubelet
Para atualizar um cluster existente para usar a identidade gerenciada do kubelet, primeiro obtenha a identidade gerenciada do painel de controle atual para o cluster do AKS.
Aviso
A atualização da identidade gerenciada do kubelet atualiza os pools de nós do cluster do AKS, o que causa tempo de inatividade para o cluster, pois os nós nos pools de nós serão isolados/drenados e recriados.
Confirme se o cluster do AKS está usando a identidade gerenciada atribuída pelo usuário usando o comando
az aks show
.az aks show \ --resource-group <RGName> \ --name <ClusterName> \ --query "servicePrincipalProfile"
Se o cluster estiver usando uma identidade gerenciada, a saída mostrará
clientId
com um valor de msi. Um cluster que usa uma entidade de serviço mostra uma ID de objeto. Por exemplo:# The cluster is using a managed identity. { "clientId": "msi" }
Depois de confirmar que seu cluster está usando uma identidade gerenciada, localize a ID do recurso da identidade gerenciada usando o comando
az aks show
.az aks show --resource-group <RGName> \ --name <ClusterName> \ --query "identity"
Para uma identidade gerenciada atribuída pelo usuário, sua saída deve ser semelhante à saída do exemplo a seguir:
{ "principalId": null, "tenantId": null, "type": "UserAssigned", "userAssignedIdentities": <identity-resource-id> "clientId": "<client-id>", "principalId": "<principal-id>" },
Atualize seu cluster com as identidades existentes usando o comando
az aks update
. Forneça a ID do recurso da identidade gerenciada atribuída pelo usuário para o painel de controle para o argumentoassign-identity
. Forneça a ID do recurso da identidade gerenciada do kubelet para o argumentoassign-kubelet-identity
.az aks update \ --resource-group myResourceGroup \ --name myManagedCluster \ --enable-managed-identity \ --assign-identity <identity-resource-id> \ --assign-kubelet-identity <kubelet-identity-resource-id>
Sua saída para uma atualização bem-sucedida do cluster usando sua própria identidade gerenciada do kubelet deve ser semelhante à seguinte saída de exemplo:
"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"
}
},
Observação
Se seu cluster estava usando --attach-acr
para extrair imagens do Registro de Contêiner do Azure, é necessário executar o comando az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR Resource ID>
depois de atualizar seu cluster para permitir que o kubelet recém-criado usado para a identidade gerenciada obtenha a permissão para extrair do ACR. Caso contrário, não será possível efetuar pull do ACR após a atualização.
Obter as propriedades da identidade do kubelet
Para obter as propriedades da identidade do kubelet, chame az aks show e faça uma consulta da propriedade identityProfile.kubeletidentity
.
az aks show \
--name myAKSCluster \
--resource-group myResourceGroup \
--query "identityProfile.kubeletidentity"
Limitações de identidade do kubelet pré- criadas
Observe as seguintes limitações para a identidade do kubelet pré-criada:
- Uma identidade do kubelet pré-criada deve ser uma identidade gerenciada atribuída pelo usuário.
- Não há suporte para as regiões Norte e Leste da China no Microsoft Azure operado pela 21Vianet.
Resumo das identidades gerenciadas usadas pelo AKS
O AKS usa várias identidades gerenciadas para serviços e complementos internos.
Identidade | Nome | Caso de uso | Permissões padrão | Traga sua própria identidade |
---|---|---|---|---|
Painel de controle | Nome do cluster AKS | Usado pelos componentes do plano de controle do AKS para gerenciar os recursos de cluster, incluindo balanceadores de carga de entrada e IPs públicos gerenciados pelo AKS, dimensionador automático de cluster; operações de dimensionamento automático de cluster, drivers da CSI de Disco, Blob e dos Arquivos do Azure. | Função de colaborador para o grupo de recursos de nó | Com suporte |
Kubelet | Nome do cluster do AKS – agentpool | Autenticação com o Registro de Contêiner do Azure(ACR). | N/D (para kubernetes v1.15+) | Com suporte |
Complemento | AzureNPM | Nenhuma identidade é necessária. | N/D | Não |
Complemento | Monitoramento de rede AzureCNI | Nenhuma identidade é necessária. | N/D | Não |
Complemento | azure-policy (gatekeeper) | Nenhuma identidade é necessária. | N/D | Não |
Complemento | azure-policy | Nenhuma identidade é necessária. | N/D | Não |
Complemento | Calico | Nenhuma identidade é necessária. | N/D | Não |
Complemento | roteamento de aplicativo | Gerencia certificados de DNS do Azure e do Azure Key Vault | Função de usuário de Segredos do Key Vault para o Key Vault, função de colaborador de zona DNZ para zonas DNS, função de colaborador de zona DNS privada para zonas DNS privadas | Não |
Complemento | HTTPApplicationRouting | Gerencia os recursos de rede necessários. | Função de leitor para o grupo de recursos de nó, função de colaborador para a zona DNS | Não |
Complemento | Gateway de aplicativo de entrada | Gerencia os recursos de rede necessários. | Função de colaborador para o grupo de recursos de nó | Não |
Complemento | omsagent | Usado para enviar métricas do AKS para o Azure Monitor. | Função de Publicador de Métricas de Monitoramento | Não |
Complemento | Virtual-Node (ACIConnector) | Gerencia os recursos de rede necessários para as Instâncias de Contêiner do Azure (ACI). | Função de colaborador para o grupo de recursos de nó | Não |
Complemento | Análise de custo | Usado para coletar dados de alocação de custos | ||
Identidade da carga de trabalho | ID da carga do Microsoft Entra | Permite aos aplicativos acessarem os recursos de nuvem com segurança com a ID da carga de trabalho do Microsoft Entra. | N/D | Não |
Importante
A identidade gerenciada por pod do Microsoft Entra de software livre (versão prévia) no Serviço de Kubernetes do Azure foi preterida em 24/10/2022, e o projeto arquivado em setembro de 2023. Para obter mais informações, confira o aviso de preterimento. O complemento Gerenciado do AKS começa a ser preterido em setembro de 2024.
Recomendamos que você leia ID de carga de trabalho do Microsoft Entra. A autenticação da ID de carga de trabalho do Microsoft Entra substitui o recurso de identidade gerenciada por pod preterido (versão prévia). A ID de carga de trabalho do Microsoft Entra é o método recomendado para habilitar um aplicativo em execução em um pod para se autenticar em outros serviços do Azure que dão suporte a ele.
Limitações
Não há suporte para mover ou migrar um cluster habilitado para identidade gerenciada para um locatário diferente.
Se o cluster tiver a identidade gerenciada por pod do Microsoft Entra (
aad-pod-identity
) habilitada, os pods da Identidade Gerenciada por Nó (NMI) modificarão os iptables dos nós para interceptar as chamadas no ponto de extremidade dos Metadados da Instância do Azure (IMDS). Essa configuração significa que qualquer solicitação feita ao ponto de extremidade IMDS será interceptada pela NMI, mesmo que o pod não useaad-pod-identity
.A CRD (definição de recurso personalizado) do AzurePodIdentityException pode ser configurada para especificar que as solicitações para o ponto de extremidade IMDS originadas de rótulos de correspondência de pod definidos no CRD devem ser proxies sem nenhum processamento na NMI. Exclua os pods do sistema com o rótulo
kubernetes.azure.com/managedby: aks
no namespace kube-system emaad-pod-identity
configurando o CRD AzurePodIdentityException. Para obter mais informações, confira Usar identidades gerenciadas por pod do Microsoft Entra no Serviço de Kubernetes do Azure.Para configurar uma exceção, instale o YAML mic-exception.
O AKS não suporta o uso de uma identidade gerenciada atribuída pelo sistema quando estiver usando uma zona DNS privada personalizada.
Próximas etapas
- Use os modelos do Azure Resource Manager para criar um cluster habilitado para identidade gerenciada.
- Saiba como usar kubelogin para todos os métodos de autenticação do Microsoft Entra com suporte no AKS.
Azure Kubernetes Service