Azure
通過 ARM/Bicep 模板將網路參與者角色分配給 AKS 群集的正確方法是什麼?
我正在嘗試使用 Bicep/ARM 為我的 AKS 伺服器配置負載均衡器。我在 kubernetes 中使用 NGinx 入口控制器,它似乎確實可以工作,但是當我第一次啟動時,我遇到了一個錯誤。
主要是我想知道 Azure 文件中此步驟的等效 ARM 或 Bicep 模板是什麼?
https://docs.microsoft.com/en-us/azure/aks/static-ip#create-a-service-using-the-static-ip-address
az role assignment create \ --assignee <Client ID> \ --role "Network Contributor" \ --scope /subscriptions/<subscription id>/resourceGroups/<resource group name>
我正在使用 Bicep 並創建了我的 AKS 伺服器,例如:
resource ExampleKubernetes 'Microsoft.ContainerService/managedClusters@2021-07-01' = { // ... }
然後我向 kubelet 身份添加角色分配,如下所示:
var NetworkContibutor = '4d97b98b-1d4f-4787-a291-c67834d212e7' resource AssignNetworkContributorToKubelet 'Microsoft.Authorization/roleAssignments@2020-08-01-preview' = { name: guid(resourceGroup().id, ExampleKubernetes.id, NetworkContibutor) dependsOn: [ ExampleKubernetes ] properties: { roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', NetworkContibutor) principalType: 'ServicePrincipal' principalId: ExampleKubernetes.properties.identityProfile.kubeletidentity.objectId } }
這似乎可行,我可以在儀表板中看到分配給託管主體的角色……但是 kubernetes 中的服務似乎仍然失敗,並且仍然存在權限問題:
Error syncing load balancer: failed to ensure load balancer: Retriable: false, RetryAfter: 0s, HTTPStatusCode: 403, RawError: Retriable: false, RetryAfter: 0s, HTTPStatusCode: 403, RawError: {"error":{"code":"AuthorizationFailed","message":"The client '<some guid A>' with object id '<some buid A>' does not have authorization to perform action 'Microsoft.Network/publicIPAddresses/read' over scope '/subscriptions/<subid>/resourceGroups/example/providers/Microsoft.Network/publicIPAddresses/example' or the scope is invalid. If access was recently granted, please refresh your credentials."}}
奇怪的是,後來在某些時候它似乎只是神奇地工作。該錯誤顯示“retriable false”,並且該服務似乎沒有重試,但隨後將 NGinx 部署到 kubernetes 將導致它重試並突然繁榮其工作。
似乎錯誤消息告訴我角色傳播存在一些不確定的延遲……所以我的問題是:
- 是對的嗎?實際上只是延遲並且我的程式碼基本上是正確的嗎?
- 我使用了正確的 principalId 嗎?或者這實際上是不必要的?
- 有沒有辦法讓我強制傳播這些角色更新?如果需要,我可以在兩者之間有一個 CLI 步驟。權限準備好後,如何等待安裝連接到 LB 的入口控制器?
你的問題(雖然不是直接的)在這裡得到了回答。
本節將討論您所描述的行為。由於 Azure 資源管理器有時會記憶體配置和數據以提高性能,因此在分配角色或刪除角色分配時,更改有時可能需要長達 30 分鐘才能生效。
使用 Azure CLI,您可以通過註銷和登錄來強制刷新您的角色分配更改。