Heim  >  Artikel  >  Backend-Entwicklung  >  Azure Golang SDK – Weisen Sie dem AKS-Cluster die AcrPull-Rolle zu

Azure Golang SDK – Weisen Sie dem AKS-Cluster die AcrPull-Rolle zu

PHPz
PHPznach vorne
2024-02-10 21:39:08295Durchsuche

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

php-Editor Xinyi stellt Ihnen eine wichtige Funktion im Azure Golang SDK vor: die Zuweisung der AcrPull-Rolle zum AKS-Cluster. Diese Funktion kann Entwicklern helfen, Container-Images bequemer auf der Azure-Cloud-Plattform zu verwalten und zu verwenden. Mithilfe des Golang SDK können Entwickler dem AKS-Cluster problemlos die AcrPull-Rolle zuweisen und so die Funktion zum Abrufen und Verwenden privater Container-Images im Cluster aktivieren. Dies verbessert nicht nur die Effizienz bei der Entwicklung und Bereitstellung von Containeranwendungen, sondern erhöht auch die Sicherheit und Kontrollierbarkeit und bietet Entwicklern ein besseres Benutzererlebnis.

Frageninhalt

Nachdem ich den AKS-Cluster und ACR erstellt habe, versuche ich nun, dem AKS-Cluster programmgesteuert die Rolle AcrPull zuzuweisen. Derzeit versuche ich, dies mit der Funktion RoleAssignmentsClient.Create() aus dem Golang SDK zu tun.

Das habe ich bisher versucht:

<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>

Wenn ich den Anruf mit dem oben genannten Wert tätige, erhalte ich die folgende Fehlermeldung:

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'."
}
--------------------------------------------------------------------------------

Ich bin mir nicht sicher, ob es sich hierbei um ein konzeptionelles Missverständnis handelt oder ob ich die API einfach falsch verwende.

Jede Hilfe wäre sehr dankbar. Danke!

Problemumgehung

Der Bereich, auf den Sie zeigen, scheint falsch zu sein. Beim Anwenden von RBAC-Berechtigungen müssen Sie den Bereich auf die Ressource festlegen, für die die RBAC-Richtlinie gilt.

Wenn Sie also eine RBAC-Richtlinie für Ihren AKS-Cluster anwenden, um AcrPull Berechtigungen zu erhalten, sollte der Bereich auf die Ressourcen-ID der Azure Container Registry festgelegt werden.

Das obige ist der detaillierte Inhalt vonAzure Golang SDK – Weisen Sie dem AKS-Cluster die AcrPull-Rolle zu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen