Udostępnij za pośrednictwem


Problemy z rozszerzeniem Azure Operator Service Manager (AOSM) interfejsu wiersza polecenia platformy Azure

Ten dokument zawiera listę typowych problemów występujących podczas korzystania z rozszerzenia AOSM interfejsu wiersza polecenia platformy Azure do dołączania funkcji sieciowych oraz ich rozwiązań.

Typowe problemy

Program Publisher już istnieje w regionie

Nazwy wydawców muszą być unikatowe w regionie świadczenia usługi Azure. Jeśli zostanie wyświetlony następujący błąd, wybrana nazwa wydawcy jest już używana:

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

Aby rozwiązać ten błąd:

Jeśli jesteś właścicielem wydawcy, znajduje się on w dzierżawie i chcesz go ponownie użyć:

Wydawca jest zdefiniowany w pliku konfiguracji rozszerzenia interfejsu wiersza polecenia usługi AOSM. Pola publisher_name i publisher_resource_group_name muszą być zgodne z polami istniejącego wydawcy i muszą znajdować się w dzierżawie używanej na potrzeby tego wdrożenia.

Zmień element publisher_resource_group_name w pliku konfiguracji, aby odwoływać się do istniejącego wydawcy, ponownie uruchomić odpowiednie build polecenie, a następnie ponownie uruchomić publish polecenie.

Nie jesteś właścicielem istniejącego wydawcy:

Użyj nowej nazwy wydawcy.

Niepowodzenie przekazywania artefaktów projektu usługi sieciowej (NSD)

Przekazywanie artefaktów przy użyciu az aosm nsd publish polecenia może się nie powieść w rzadkich przypadkach. Dane wyjściowe błędu w tym przypadku to

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

Aby rozwiązać ten błąd:

Sposób 1. Upewnij się, że masz Contributor przypisania ról i AcrPush w subskrypcji, której chcesz użyć. Przypisz je, jeśli nie. Jeśli ustawienie tego przypisania roli nie jest możliwe, uruchom az aosm nsd publish polecenie z parametrem --no-subscription-permissions .

Sposób 2. Jeśli te uprawnienia nie rozwiążą problemu, uruchom następujące polecenia z nsd-cli-output/artifacts folderu utworzonego przez az aosm nsd build polecenie :

  • Tworzenie szablonu usługi ARM funkcji sieciowej z pliku BICEP wygenerowanego przez interfejs wiersza polecenia
bicep build <nf-name>.bicep
  • Wygeneruj poświadczenia tokenu mapy zakresu na podstawie manifestu artefaktu utworzonego w poleceniu az aosm nsd publish .

Ważne

Wymagane jest użycie manifestu artefaktu utworzonego w poleceniu az aosm nsd publish . Szablon arm systemu plików NF jest zadeklarowany tylko w tym manifeście, dlatego tylko token mapy zakresu wygenerowany przez ten manifest umożliwia wypychanie (lub ściąganie) szablonu arm systemu plików NF do magazynu artefaktów.

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>
  • Użyj usługi ORAS, aby przekazać szablon arm funkcji sieciowej do zarządzanej przez usługę AOSM usługi Azure Container Registry (ACR). Tag <arm-template-version> artefaktu musi mieć 1.0.0 format.
oras push <aosm-managed-acr-name>.azurecr.io/Contoso-nsd:<arm-template-version> ./nsd-cli-output/artifacts/<nf-name>.json

Błędy kopiowania między dzierżawami

Rozszerzenie AOSM interfejsu wiersza polecenia platformy Azure nie obsługuje natywnie kopii obrazów między dzierżawami. Można jednak skonfigurować środowisko interfejsu wiersza polecenia w taki sposób, aby umożliwić korzystanie z tej funkcji. Proces polega na ustawieniu domyślnej subskrypcji platformy Azure na subskrypcję, która zawiera źródłową usługę ACR, zaloguj się do źródłowego rekordu ACR, a następnie uruchom wszystkie az aosm polecenia z parametrem --subscription , ustawiając wartość na subskrypcję docelową. Subskrypcje źródłowe i docelowe mogą znajdować się w różnych dzierżawach.

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>

Typowe błędy konfiguracji

Wdrażanie usługi sieci lokacji (SNS) kończy się niepowodzeniem, gdy konfiguracja wersji projektu usługi sieciowej (NSDV) lokacji i sieci nie jest zgodna

Próby utworzenia snS kończą się niepowodzeniem, jeśli właściwość nfvi zasobu lokacji nie jest zgodna z właściwością nfvisFromSite NSDV. Błąd:

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

W tym przykładzie właściwość NSDV nfvisFromSite zawiera:

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

Właściwość nfvi zasobu lokacji musi być zgodna z nazwą i typem w 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>'
        }
      }
    ]
  }
}

Nazwa nfdvName w wartości grupy konfiguracji (CGV) nie jest zgodna z opublikowaną wersją definicji funkcji sieciowej (NFDV)

Schematy grup konfiguracji generowane przez rozszerzenie AOSM interfejsu wiersza polecenia platformy Azure mają obowiązkowy parametr o nazwie nfdvName. nfdvname to nazwa NFDV, która jest ciągiem w 1.0.0 formacie. Nie jest to nazwa funkcji sieciowej (NF) ani sieciowej grupy definicji funkcji (NFDG). W poniższym przykładzie pokazano prawidłowe użycie.

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

Niepoprawna właściwość wartości CGV w przypadku ujawniania żadnych parametrów w schemacie grupy konfiguracji (CGS)

Schematy grup konfiguracji generowane przez rozszerzenie AOSM interfejsu wiersza polecenia platformy Azure uwidacznia deployParameters pole, które domyślnie jest tablicą obiektów JSON. Istnieje kilka powodów, dla których warto utworzyć CGV z pustym deployParameters polem:

  • Nie ma konfiguracji uwidocznionej w schemacie grupy konfiguracji, a wszystkie wartości są ustawiane w domyślnych wartościach.yaml na wykresie helm.
  • Utworzono schemat grupy konfiguracji, który zawiera wartości domyślne i nie chcesz ich zastąpić.

Jeśli tworzysz CGV z pustym deployParameters polem, wartość pola musi być tablicą zawierającą pusty obiekt JSON.

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

Program AOSM zwraca następujący komunikat o błędzie, jeśli CGV zawiera pustą tablicę (czyli []) zamiast tablicy zawierającej pusty obiekt ([{}]).

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

Niezgodność właściwości obrazu w wykresach helm i lokalizacji w źródłowym usłudze ACR

Interfejs wiersza polecenia AOSM wymaga, aby obrazy w rejestrze źródłowym mieściły się w tej samej strukturze repozytorium, co jest zapisywane na wykresie helm. Na przykład obraz zawarty w wykresie core/contoso-a:1.0.0 helm musi być dostępny w rejestrze źródłowym w ścieżce kończącej się ciągiem core/contoso-a:1.0.0. Nie można przekazać obrazu do właściwej ścieżki w rejestrze źródłowym, co powoduje az aosm nfd publish niepowodzenie z powodu następującego błędu.

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

Dostępnych jest wiele rozwiązań.

  • Edytuj wykres helm lub przekaż ścieżki obrazów w pliku values.yaml i ustaw ścieżki obrazów tak, aby odpowiadały strukturze repozytorium w rejestrze źródłowym.
  • Przekaż obrazy do rejestru źródłowego, tak aby łączenie "image_sources" w cnf-input.jsonc pliku i ścieżki obrazu z wykresu helm było zgodne z przekazaną lokalizacją w rejestrze źródłowym.
  • Interfejs wiersza polecenia AOSM przechowuje metadane obrazów, które odnajduje w programie cnf-cli-output/artifacts/artifacts.json. Ścieżka do wyszukiwania interfejsu wiersza polecenia AOSM w rejestrze źródłowym to <registry_name>/<registry_namespace>/<artifact_name>/<artifact_version>. Możesz ręcznie edytować ten plik, aby wartości odpowiadały lokalizacji obrazu w źródłowej usłudze ACR.

CGVs nie są zgodne z usługą CGS, gdy parametr ma typ null

Obecnie usługa AOSM nie obsługuje null jako wartości domyślnej w schemacie deployParameters, co oznacza, że wartość null domyślna nie jest dozwolona w schematach grupy konfiguracji. Aby obejść ten problem, interfejs wiersza polecenia AOSM ustawia wartość domyślną parametrów typu null na ciąg "null", który umożliwia pomyślne opublikowanie NFDV.

W przypadku tworzenia zestawów CGV przy użyciu portalu autowypełnianie parametrów jako "null" jego wartość. Jeśli ta wartość nie zostanie zmieniona, w portalu zostanie wyświetlony komunikat o błędzie z informacją: "Nowa wartość grupy konfiguracji nie jest zgodna ze schematem — edytuj wartości".

Zrzut ekranu portalu, w którym występuje komunikat o błędzie, ponieważ wartości grupy konfiguracji nie są zgodne ze schematem grupy konfiguracji.

Aby naprawić ten błąd, zmień wartość "null" na null w CGV.

Na przykład pierwotnie mamy wartość "null":

"serviceAccount_name": "null",

Które należy zmienić na wartość null.

"serviceAccount_name": null,