Maison  >  Article  >  développement back-end  >  Azure golang SDK - Attribuer le rôle AcrPull au cluster AKS

Azure golang SDK - Attribuer le rôle AcrPull au cluster AKS

PHPz
PHPzavant
2024-02-10 21:39:08295parcourir

Azure golang SDK - 将 AcrPull 角色分配给 AKS 群集

l'éditeur php Xinyi vous présente une fonction importante du SDK Azure golang : l'attribution du rôle AcrPull au cluster AKS. Cette fonctionnalité peut aider les développeurs à gérer et à utiliser les images de conteneurs plus facilement sur la plateforme cloud Azure. En utilisant le SDK golang, les développeurs peuvent facilement attribuer le rôle AcrPull au cluster AKS, permettant ainsi la fonction d'extraction et d'utilisation d'images de conteneurs privés dans le cluster. Cela améliore non seulement l'efficacité du développement et du déploiement d'applications conteneurisées, mais améliore également la sécurité et la contrôlabilité, offrant ainsi aux développeurs une meilleure expérience utilisateur.

Contenu de la question

Après avoir créé le cluster AKS et ACR, j'essaie maintenant d'accorder le rôle AcrPull au cluster AKS par programme. Actuellement, j'essaie de le faire en utilisant la fonction RoleAssignmentsClient.Create() du SDK golang.

Voici ce que j'ai essayé jusqu'à présent :

<code>AcrPullDefinitionID := "/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d"
//         pulled that ^ off of: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#acrpull

providerNamespace := "/providers/Microsoft.ContainerService/managedClusters/"

scope := "/subscriptions/" + subscriptionID + "/resourceGroups/" + resourceGroupName + providerNamespace + resourceName
res, err := raClient.Create(ctx, scope, roleAssigmentName, armauthorization.RoleAssignmentCreateParameters{
        Properties: &armauthorization.RoleAssignmentProperties{
            PrincipalID:      to.Ptr(clientID),
            PrincipalType:    to.Ptr(armauthorization.PrincipalTypeServicePrincipal),
            RoleDefinitionID: to.Ptr("/subscriptions/" + subscriptionID + AcrPullDefinitionID),
    },
}, nil)
</code>

Lorsque j'effectue l'appel avec la valeur ci-dessus, j'obtiens l'erreur suivante :

for resource: {AKSClusterName} of type: /providers/Microsoft.ContainerService/managedClusters/
Unable to create roleAssignment: PUT https://management.azure.com/subscriptions/{subscriptionID}/resourceGroups/{resourceGroup}/providers/Microsoft.ContainerService/managedClusters/{AKSClusterName}/providers/Microsoft.Authorization/roleAssignments/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d
--------------------------------------------------------------------------------
RESPONSE 405: 405 Method Not Allowed
ERROR CODE UNAVAILABLE
--------------------------------------------------------------------------------
{
  "message": "The requested resource does not support http method 'PUT'."
}
--------------------------------------------------------------------------------

Je ne sais pas s'il s'agit d'un malentendu conceptuel ou si j'utilise simplement l'API de manière incorrecte.

Toute aide serait grandement appréciée. Merci!

Solution de contournement

La plage que vous indiquez semble incorrecte. Lors de l'application des autorisations RBAC, vous devez définir la portée sur la ressource à laquelle la stratégie RBAC s'applique.

Donc, si vous appliquez une stratégie RBAC pour que votre cluster AKS dispose des autorisations AcrPull, la portée doit être définie sur l'ID de ressource d'Azure Container Registry.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer