Încerc să configurez un Load Balancer pentru serverul meu AKS folosind Bicep/ARM. Folosesc NGinx Ingress Controller în kubernetes și se pare că funcționează, dar când învârt lucrurile pentru prima dată, întâmpin o eroare.
În principal, mă întreb care este șablonul echivalent ARM sau Bicep pentru acest pas din documentația Azure?
https://docs.microsoft.com/en-us/azure/aks/static-ip#create-a-service-using-the-static-ip-address
az atribuire rol create \
--assignee <Client ID> \
--rol „Colaborator de rețea” \
--scope /subscriptions/<id abonament>/resourceGroups/<nume grup de resurse>
Folosesc Bicep și mi-am creat serverul AKS astfel, de exemplu:
resursă ExempluKubernetes „Microsoft.ContainerService/managedClusters@2021-07-01” = {
// ...
}
Apoi adaug o atribuire de rol la identitatea kubelet astfel:
var NetworkContibutor = '4d97b98b-1d4f-4787-a291-c67834d212e7'
resursă AssignNetworkContributorToKubelet „Microsoft.Authorization/roleAssignments@2020-08-01-preview” = {
nume: guid(resourceGroup().id, ExampleKubernetes.id, NetworkContibutor)
depinde de: [
ExempluKubernetes
]
proprietăți: {
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', NetworkContibutor)
principalType: „ServicePrincipal”
principalId: ExempluKubernetes.properties.identityProfile.kubeletidentity.objectId
}
}
Ceea ce pare să funcționeze, pot vedea rolul atribuit principalului gestionat în tabloul de bord... dar serviciul din kubernetes pare să eșueze cu o problemă de permisiune încă:
Eroare la sincronizarea echilibrului de încărcare: nu s-a asigurat echilibrul de încărcare: Retriable: fals,
RetryAfter: 0s, HTTPStatusCode: 403, RawError: Retriable: false, RetryAfter:
0s, HTTPStatusCode: 403, RawError:
{"error":{"code":"AuthorizationFailed","message":"Clientul
„<un ghid A>” cu id-ul obiectului
„<some buid A>” nu are autorizație de performanță
acțiunea „Microsoft.Network/publicIPAddresses/read” peste domeniul de aplicare
„/subscriptions/<subid>/resourceGroups/example/providers/Microsoft.Network/publicIPAddresses/example”
sau domeniul de aplicare este invalid. Dacă accesul a fost acordat recent, vă rugăm să reîmprospătați
acreditări."}}
Ceea ce este ciudat este că mai târziu, la un moment dat, pare să funcționeze magic. Acea eroare spune „retriable false” și se pare că serviciul nu reîncearcă, dar o implementare ulterioară a NGinx pe kubernetes va atunci determină-l să reîncerce și să-și ridice brusc funcționarea.
Se pare că mesajul de eroare îmi spune că există o întârziere nedeterministă a propagării rolului... Deci întrebările mele sunt:
- Este corect? Este de fapt doar o întârziere și codul meu este în principiu corect?
- Folosesc principalId-ul corect? Sau este chiar inutil?
- Există vreo modalitate de a forța aceste actualizări de rol să se propage? Aș putea avea un pas CLI între ele dacă aș avea nevoie. Cum pot aștepta să instalez controlerul meu de intrare care se conectează la LB după ce permisiunile sunt gata?