Sdílet prostřednictvím


Problémy s rozšířením Azure CLI Azure Operator Service Manageru (AOSM)

Tento dokument obsahuje seznam běžných problémů při použití rozšíření Azure CLI AOSM k onboardingu síťových funkcí a jejich řešení.

Běžné problémy

Publisher již v oblasti existuje.

Názvy vydavatelů musí být jedinečné v rámci oblasti Azure. Pokud se zobrazí následující chyba, název vydavatele, který jste zvolili, se už používá:

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

Vyřešení této chyby:

Pokud vlastníte vydavatele, nachází se ve vašem tenantovi a chcete ho znovu použít:

Vydavatel je definován v konfiguračním souboru s příponou AOSM CLI. Pole publisher_name musí publisher_resource_group_name odpovídat existujícímu vydavateli a musí být v tenantovi, který používáte pro toto nasazení.

publisher_resource_group_name Změňte konfigurační soubor tak, aby odkazovat na existujícího vydavatele, znovu spusťte odpovídající build příkaz a spusťte publish příkaz znovu.

Existujícího vydavatele nevlastníte:

Použijte nový název vydavatele.

Selhání nahrávání artefaktů návrhu síťové služby (NSD)

Nahrávání artefaktů pomocí az aosm nsd publish příkazu může ve výjimečných případech selhat. Výstup chyby v tomto případě je

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'}]}]}

Vyřešení této chyby:

Možnost 1. Ověřte, že máte Contributor přiřazení rolí k AcrPush předplatnému, které chcete použít. Pokud ne, přiřaďte je. Pokud nastavení tohoto přiřazení role není možné, spusťte az aosm nsd publish příkaz s parametrem --no-subscription-permissions .

Možnost 2. Pokud tato oprávnění problém nevyřeší, spusťte následující příkazy ze nsd-cli-output/artifacts složky vytvořené příkazem az aosm nsd build :

  • Sestavení šablony ARM síťové funkce ze souboru BICEP vygenerovaného rozhraním příkazového řádku
bicep build <nf-name>.bicep
  • Vygenerujte přihlašovací údaje tokenu mapování oboru z manifestu artefaktů vytvořeného az aosm nsd publish v příkazu.

Důležité

Musíte použít manifest artefaktů az aosm nsd publish vytvořený v příkazu. Šablona ARM NF je deklarována pouze v tomto manifestu, takže pouze token mapování oboru vygenerovaný tímto manifestem vám umožní odeslat (nebo vyžádat) šablonu NF ARM do úložiště artefaktů.

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>
  • Pomocí ORAS nahrajte šablonu ARM síťové funkce do služby Azure Container Registry (ACR) spravované službou AOSM. Značka <arm-template-version> artefaktu musí být ve 1.0.0 formátu.
oras push <aosm-managed-acr-name>.azurecr.io/Contoso-nsd:<arm-template-version> ./nsd-cli-output/artifacts/<nf-name>.json

Selhání kopírování mezi tenanty

Rozšíření Azure CLI AOSM nativně nepodporuje kopie imagí mezi tenanty. Je ale možné nakonfigurovat prostředí rozhraní příkazového řádku způsobem, který tuto funkci umožňuje. Tento postup spočívá v nastavení výchozího předplatného Azure na předplatné obsahující zdrojové ACR, přihlášení ke zdrojové službě ACR a následné spuštění všech az aosm příkazů s parametrem --subscription a nastavení hodnoty na cílové předplatné. Zdrojová a cílová předplatná můžou být v různých tenantech.

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>

Běžné chybné konfigurace

Nasazení služby SNS (Site Network Service) selže v případě, že se konfigurace verze NSDV (Site And Network Service Design Version) neshoduje

Pokusy o vytvoření SNS selžou, pokud vlastnost nfvi prostředku webu neodpovídá vlastnosti nfvisFromSite NSDV. Nastala chyba

{
"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.\"}]}}",
}

V tomto příkladu vlastnost NSDV nfvisFromSite obsahuje:

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

Vlastnost Prostředek webu nfvi se musí shodovat s názvem a typem v 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>'
        }
      }
    ]
  }
}

Název nfdvName v hodnotě skupiny konfigurace (CGV) neodpovídá publikované verzi definice síťové funkce (NFDV).

Schémata skupin konfigurace generovaná rozšířením Azure CLI AOSM mají povinný parametr s názvem nfdvName. nfdvname je název NFDV, což je řetězec ve 1.0.0 formátu. Nejedná se o název síťové funkce (NF) ani skupiny definic síťových funkcí (NFDG). Následující příklad ukazuje správné využití.

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

Nesprávná vlastnost hodnot CGV při vystavení žádných parametrů ve schématu skupiny konfigurace (CGS)

Schémata skupin konfigurace generovaná rozšířením Azure CLI AOSM zpřístupňují deployParameters pole, které ve výchozím nastavení představuje pole objektů JSON. Existuje několik důvodů, proč můžete chtít vytvořit CGV s prázdným deployParameters polem:

  • Ve schématu skupiny konfigurace nemáte žádnou konfiguraci a všechny hodnoty jsou nastavené ve výchozích hodnotách.yaml v chartu Helm.
  • Vytvořili jste schéma skupiny konfigurace, které obsahuje výchozí hodnoty a nechcete je přepsat.

Pokud vytváříte CGV s prázdným deployParameters polem, hodnota pole musí být pole obsahující prázdný objekt JSON.

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

AOSM vrátí následující chybovou zprávu, pokud CGV obsahuje prázdné pole (to znamená []) místo pole obsahující prázdný 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."}

Neshoda mezi vlastností obrázku v chartech Helm a umístěním ve zdrojové službě ACR

Rozhraní příkazového řádku AOSM vyžaduje, aby image ve zdrojovém registru byly ve stejné struktuře úložiště jako v chartu Helm. Například obrázek zahrnutý v chartu Helm, jak core/contoso-a:1.0.0 musí být k dispozici ve zdrojovém registru v cestě, která končí .core/contoso-a:1.0.0 Selhání nahrání image do správné cesty ve zdrojovém registru způsobí az aosm nfd publish selhání s následující chybou.

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"}}]}

K dispozici je několik řešení.

  • Upravte chart Helm nebo předejte cesty k obrázkům v values.yaml a nastavte cesty k obrázkům tak, aby odpovídaly struktuře úložiště ve zdrojovém registru.
  • Nahrajte image do zdrojového registru tak, aby zřetězení "image_sources" v cnf-input.jsonc souboru a cesta k obrázku z chartu Helm odpovídala nahranému umístění ve zdrojovém registru.
  • Rozhraní příkazového řádku AOSM ukládá metadata pro image, ve cnf-cli-output/artifacts/artifacts.jsonkteré se objeví. Cesta, kterou rozhraní příkazového řádku AOSM hledá ve zdrojovém registru, je <registry_name>/<registry_namespace>/<artifact_name>/<artifact_version>. Tento soubor můžete ručně upravit tak, aby hodnoty odpovídaly umístění obrázku ve zdrojové službě ACR.

CGV neodpovídá CGS, pokud má parametr typ null

V současné době AOSM nepodporuje null jako výchozí hodnotu ve schématu deployParameters, což znamená, že výchozí hodnota null není povolená ani ve schématech skupiny konfigurace. Chcete-li tento problém vyřešit, AOSM CLI nastaví výchozí hodnotu parametrů typu null na řetězec "null", který umožňuje úspěšné publikování NFDV.

Při vytváření CGV pomocí portálu se parametr automaticky vyplňuje tak, aby měl "null" hodnotu. Pokud tuto hodnotu nezměníte, zobrazí se na portálu chybová zpráva s informací, že nová hodnota skupiny konfigurace neodpovídá schématu – upravte hodnoty.

Snímek obrazovky portálu, kde se zobrazuje chybová zpráva, protože hodnoty skupiny konfigurace neodpovídají schématu skupiny konfigurace

Pokud chcete tuto chybu opravit, přejděte "null" na null CGV.

Například původně máme hodnotu "null":

"serviceAccount_name": "null",

Který musí být změněn na hodnotu null.

"serviceAccount_name": null,