Dela via


Problem med Azure CLI Azure Operator Service Manager-tillägg (AOSM)

Det här dokumentet innehåller en lista över vanliga problem när du använder Azure CLI AOSM-tillägget för att registrera nätverksfunktioner och deras lösningar.

Vanliga problem

Publisher finns redan i regionen

Utgivarnamn måste vara unika i en Azure-region. Om du ser följande fel används redan det utgivarnamn som du har valt:

Message: A private publisher resource with the name 'nginx-publisher' already exists in the provided region.

Lös problemet så här:

Om du äger utgivaren finns den i din klientorganisation och du vill återanvända den:

Utgivaren definieras i konfigurationsfilen för AOSM CLI-tillägget. Fälten publisher_name och publisher_resource_group_name måste matcha dem för den befintliga utgivaren och måste finnas i den klientorganisation som du använder för den här distributionen.

publisher_resource_group_name Ändra i konfigurationsfilen så att den refererar till den befintliga utgivaren, kör motsvarande build kommando igen och kör sedan kommandot igenpublish.

Du äger inte den befintliga utgivaren:

Använd ett nytt utgivarnamn.

Fel vid uppladdning av NSD-artefakter (Network Service Design)

Artefaktuppladdningar med kommandot az aosm nsd publish kan misslyckas vid sällsynta tillfällen. Felutdata i det här fallet är

ValueError: Issue retrieving session url: {'errors': [{'code': 'UNAUTHORIZED', 'message': 'authentication required, visit https://aka.ms/acr/authorization for more information.', 'detail': [{'Type': 'repository', 'Name': 'contoso-nsd', 'Action': 'pull'}, {'Type': 'repository', 'Name': 'contoso-nsd', 'Action': 'push'}]}]}

Lös problemet så här:

Alternativ 1. Bekräfta att du har Contributor rolltilldelningarna och AcrPush för den prenumeration som du vill använda. Tilldela dem om du inte gör det. Om det inte går att ange den här rolltilldelningen az aosm nsd publish kör du kommandot med parametern --no-subscription-permissions .

Alternativ 2. Om dessa behörigheter inte löser problemet kör du följande kommandon från mappen nsd-cli-output/artifacts som skapades av az aosm nsd build kommandot:

  • Skapa ARM-mallen för nätverksfunktionen från BICEP-filen som genereras av CLI
bicep build <nf-name>.bicep
  • Generera autentiseringsuppgifter för omfångsmappningstoken från artefaktmanifestet som skapades az aosm nsd publish i kommandot .

Viktigt!

Du måste använda artefaktmanifestet som skapades az aosm nsd publish i kommandot . NF ARM-mallen deklareras endast i det manifestet, och därför kan du bara skicka (eller hämta) NF ARM-mallen till Artifact Store.

az rest --method POST --url 'https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.HybridNetwork/publishers/<publisher>/artifactStores/<artifact-store>/artifactManifests/<artifactManifest>/listCredential?api-version=2023-09-01'
oras login <aosm-managed-acr-name>.azurecr.io --username <username> --password <scope map token>
  • Använd ORAS för att ladda upp ARM-mallen för nätverksfunktionen till AOSM-hanterade Azure Container Registry (ACR). Artefakttaggen <arm-template-version> måste vara i 1.0.0 format.
oras push <aosm-managed-acr-name>.azurecr.io/Contoso-nsd:<arm-template-version> ./nsd-cli-output/artifacts/<nf-name>.json

Kopieringsfel mellan klientorganisationer

Azure CLI AOSM-tillägget har inte inbyggt stöd för kopior av avbildningar mellan klientorganisationer. Det är dock möjligt att konfigurera CLI-miljön på ett sätt som tillåter den här funktionen. Processen är att ange azure-standardprenumerationen till den prenumeration som innehåller käll-ACR, logga in på käll-ACR och sedan köra alla az aosm kommandon med parametern --subscription och ange värdet till målprenumerationen. Käll- och målprenumerationerna kan finnas i olika klientorganisationer.

az account set --subscription <source-acr-subscription>
az acr login --name <source-acr-name> -u <source-acr-username> -p <source-acr-password> --subscription <source-acr-subscription>
az aosm nfd publish --definition-type cnf --subscription <target-subscription>

Vanliga felkonfigurationer

SNS-distribution (Site Network Service) misslyckas när NSDV-konfigurationen (Site And Network Service Design Version) inte matchar

SNS-skapandeförsök misslyckas om egenskapen nfvi för platsresursen inte matchar egenskapen nfvisFromSite för NSDV. Felet är

{
"statusMessage": "{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"InvalidRequestContent\",\"message\":\"For NfviAlias = nfvi1, either NfviName = nsd-contoso_NFVI and NfviType = AzureCore does not match with site resource.\"}]}}",
}

I det här exemplet innehåller egenskapen NSDV nfvisFromSite:

    nfvisFromSite: {
      nfvi1: {
        name: 'nsd-contoso_NFVI1'
        type: 'AzureArcKubernetes'
      }

Egenskapen Site resource nfvi måste matcha namnet och typen i NSDV.

resource site 'Microsoft.HybridNetwork/sites@2023-09-01' = {
  name: 'contoso-site'
  location: 'eastus'
  properties: {
    nfvis : [
      {
        name: 'nsd-contoso_NFVI1'
        nfviType: 'AzureArcKubernetes'
        customLocationReference: {
          id: '<custom-location-arm-id>'
        }
      }
    ]
  }
}

NfdvName i konfigurationsgruppens värde (CGV) matchar inte den publicerade NFDV-versionen (Network Function Definition Version)

Konfigurationsgruppscheman som genereras av Azure CLI AOSM-tillägget har en obligatorisk parameter som heter nfdvName. nfdvname är namnet på NFDV, som är en sträng i 1.0.0 format. Det är inte namnet på NF (Network Function) eller NFDG (Network Function Definition Group). I följande exempel visas rätt användning.

{
    "nsd-contoso": {
        "nfdvName": "1.0.0",
        "deployParameters": [
            {}
        ],
        "customLocationId": "<custom-location-arm-id>",
        "managedIdentityId": "<managed-id-arm-id>"
    }
}

Felaktig CGV-värdeegenskap när inga parametrar exponeras i ett konfigurationsgruppsschema (CGS)

Konfigurationsgruppscheman som genereras av Azure CLI AOSM-tillägget exponerar ett deployParameters fält som som standard är en matris med JSON-objekt. Det finns flera orsaker till att du kanske vill skapa en CGV med ett tomt deployParameters fält:

  • Du har ingen konfiguration som exponeras i konfigurationsgruppens schema och alla värden anges i standardvärdena.yaml i Helm-diagrammet.
  • Du har skapat ett konfigurationsgruppschema som innehåller standardvärden och du vill inte åsidosätta dem.

Om du skapar en CGV med ett tomt deployParameters fält måste fältvärdet vara en matris som innehåller ett tomt JSON-objekt.

{
    "nsd-contoso": {
        "nfdv": "1.0.0",
        "deployParameters": [
            {}
        ],
        "customLocationId": "<custom-location-arm-id>",
        "managedIdentityId": "<managed-id-arm-id>"
    }
}

AOSM returnerar följande felmeddelande om CGV innehåller en tom matris (dvs. []) i stället för en matris som innehåller ett tomt objekt ([{}]).

{"code":"BadRequest","message":"NSDV ResourceElementTemplate (name: 'mco-nsdg', type: 'NetworkFunctionDefinition') expects at least one 'networkfunctions' resource in the associated template. Please use the type: 'ArmResourceDefinition' to install generic ARM resources."}

Matchningsfel mellan bildegenskap i helm-diagram och plats i käll-ACR

AOSM CLI kräver att avbildningarna i källregistret är i samma lagringsplatsstruktur som de är skrivna i helm-diagrammet. Till exempel en avbildning som ingår i ett helm-diagram som core/contoso-a:1.0.0 måste vara tillgänglig i källregistret i en sökväg som slutar i core/contoso-a:1.0.0. Om det inte går att ladda upp avbildningen till rätt sökväg i källregistret misslyckas az aosm nfd publish följande fel.

Code: InvalidParameters
Message: Operation registries-cd9ad97d-f3a3-11ee-a728-6b163569f55a failed. Resource /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.ContainerRegistry/registries/contoso Invalid message NotFound Not Found {"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest tagged by \"0.0.0-9\" is not found","detail":{"Tag":"0.0.0-9"}}]}

Det finns flera tillgängliga lösningar.

  • Redigera helm-diagrammet eller skicka in bildsökvägarna i values.yaml och ange avbildningssökvägarna så att de matchar lagringsplatsens struktur i källregistret.
  • Ladda upp avbildningarna till källregistret så att sammanfogningen av "image_sources" i cnf-input.jsonc filen och avbildningssökvägen från helm-diagrammet matchar den uppladdade platsen i källregistret.
  • AOSM CLI lagrar metadata för de bilder som identifieras i cnf-cli-output/artifacts/artifacts.json. Sökvägen som AOSM CLI söker i källregistret är <registry_name>/<registry_namespace>/<artifact_name>/<artifact_version>. Du kan redigera den här filen manuellt så att värdena matchar bildens plats i din käll-ACR.

CGV:er matchar inte CGS när parametern har null-typ

För närvarande stöder null inte AOSM som standardvärde i deployParameters-schemat, vilket innebär att standardvärdet null inte heller tillåts i konfigurationsgruppscheman. För att undvika det här problemet anger AOSM CLI standardvärdet för parametrar av typen null som strängen "null", vilket gör att en NFDV kan publiceras korrekt.

När du använder portalen för att skapa CGV:er fylls "null" parametern automatiskt som dess värde. Om du inte ändrar det här värdet visas ett felmeddelande i portalen som säger: "Nytt konfigurationsgruppvärde matchar inte schemat – redigera värdena."

Skärmbild av portalen där det finns ett felmeddelande eftersom konfigurationsgruppens värden inte matchar konfigurationsgruppens schema.

Åtgärda det här felet genom att ändra "null" till null i CGV:erna.

Till exempel har vi ursprungligen värdet "null":

"serviceAccount_name": "null",

Som måste ändras till värdet null.

"serviceAccount_name": null,