Puncte:0

Care este modalitatea corectă de a atribui rolul de colaborator al rețelei unui cluster AKS prin șablonul ARM / Bicep?

drapel cn

Î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?
Puncte:0
drapel us

La întrebarea dvs. (deși nu direct) i se răspunde Aici.

Comportamentul pe care îl descrii este discutat în aceasta sectiune. Deoarece Azure Resource Manager memorează uneori în cache configurările și datele pentru a îmbunătăți performanța, uneori poate dura până la 30 de minute pentru ca modificările să intre în vigoare atunci când atribuiți roluri sau eliminați atribuirile de roluri.

Folosind Azure CLI, puteți forța o reîmprospătare a modificărilor atribuirii rolului deconectare și conectare.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.