Поделиться через


Проблемы с расширением Azure CLI Оператора Azure Service Manager (AOSM)

Этот документ содержит список распространенных проблем при использовании расширения AOSM Azure CLI для подключения сетевых функций и их разрешения.

Распространенные проблемы

Издатель уже существует в регионе

Имена издателей должны быть уникальными в пределах региона Azure. Если появится следующая ошибка, выбранное имя издателя уже используется:

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

Устранение ошибки

Если вы владеете издателем, он находится в клиенте, и вы хотите повторно использовать его:

Издатель определен в файле конфигурации расширения AOSM CLI. publisher_resource_group_name Поля publisher_name и поля должны соответствовать существующим издателям, и он должен находиться в клиенте, который используется для этого развертывания.

publisher_resource_group_name Измените файл конфигурации таким образом, чтобы он ссылается на существующего издателя, повторно выполните соответствующую build команду, а затем повторно выполните publish команду.

Вы не владеете существующим издателем:

Используйте новое имя издателя.

Сбой отправки артефактов в конструкторе сетевых служб (NSD)

Отправка артефактов с помощью az aosm nsd publish команды может завершиться сбоем в редких случаях. Выходные данные об ошибке в этом случае

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

Устранение ошибки

Вариант 1. Убедитесь, что у вас есть Contributor назначения ролей в AcrPush подписке, которую вы хотите использовать. Назначьте их, если вы этого не сделали. Если установка этого назначения роли невозможна, выполните az aosm nsd publish команду с параметром --no-subscription-permissions .

Вариант 2. Если эти разрешения не устраняют проблему, выполните следующие команды из nsd-cli-output/artifacts папки, созданной командой az aosm nsd build :

  • Создание шаблона ARM сетевой функции из файла BICEP, созданного интерфейсом командной строки
bicep build <nf-name>.bicep
  • Создайте учетные данные маркера карты области из манифеста артефакта, созданного в команде az aosm nsd publish .

Внимание

Необходимо использовать манифест Артефакта, созданный в команде az aosm nsd publish . Шаблон NF ARM объявлен только в этом манифесте, поэтому только маркер карты области, созданный этим манифестом, позволит отправлять (или извлекать) шаблон NF ARM в Хранилище артефактов.

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>
  • Используйте ORAS для отправки шаблона ARM сетевой функции в управляемый Реестр контейнеров Azure AOSM (ACR). <arm-template-version> Тег артефакта должен быть в 1.0.0 формате.
oras push <aosm-managed-acr-name>.azurecr.io/Contoso-nsd:<arm-template-version> ./nsd-cli-output/artifacts/<nf-name>.json

Сбои копирования между клиентами

Расширение AOSM Azure CLI не поддерживает копии образов между клиентами. Однако можно настроить среду ИНТЕРФЕЙСА командной строки таким образом, чтобы она позволяла использовать эту функцию. Процесс состоит в том, чтобы настроить подписку Azure по умолчанию для подписки, содержащей исходный ACR, войти в исходный ACR, а затем выполнить все az aosm команды с --subscription параметром, задав значение целевой подписки. Исходные и целевые подписки могут находиться в разных клиентах.

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>

Распространенные неправильные конфигурации

Развертывание службы сети сайта (SNS) завершается сбоем, если конфигурация конструктора сайта и сетевой службы (NSDV) не совпадает

Попытка создания SNS завершается ошибкой, если свойство nfvi ресурса Site не соответствует свойству nfvisFromSite NSDV. Ошибка:

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

В этом примере свойство NSDV nfvisFromSite содержит следующее:

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

Свойство nfvi ресурса сайта должно соответствовать имени и ввести в 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 в значении группы конфигурации (CGV) не соответствует опубликованной версии определения сетевой функции (NFDV)

Схемы групп конфигурации, созданные расширением AOSM Azure CLI, имеют обязательный параметр nfdvName. nfdvname — это имя NFDV, которое является строкой в 1.0.0 формате. Это не имя сетевой функции (NF) или группы определения сетевых функций (NFG). В следующем примере показано правильное использование.

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

Неправильное свойство значений CGV при отсутствии параметров в схеме группы конфигурации (CGS)

Схемы групп конфигурации, созданные расширением AOSM Azure CLI, предоставляют deployParameters поле, которое по умолчанию является массивом объектов JSON. Существует несколько причин, по которым может потребоваться создать CGV с пустым deployParameters полем:

  • У вас нет конфигурации в схеме группы конфигурации, и все значения задаются в значениях по умолчанию.yaml на диаграмме Helm.
  • Вы создали схему группы конфигурации, включающую значения по умолчанию и не хотите переопределить их.

Если вы создаете CGV с пустым deployParameters полем, значение поля должно быть массивом, содержащим пустой объект JSON.

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

AOSM возвращает следующее сообщение об ошибке, если CGV содержит пустой массив (т []. е. ) вместо массива, содержащего пустой объект ([{}]).

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

Несоответствие между свойством изображения в диаграммах helm и расположением в исходном ACR

Интерфейс командной строки AOSM требует, чтобы образы в исходном реестре были в той же структуре репозитория, что и на диаграмме helm. Например, изображение, включенное в диаграмму helm, должно core/contoso-a:1.0.0 быть доступно в исходном реестре в пути, который заканчивается core/contoso-a:1.0.0. Сбой при передаче образа в правильный путь в исходном реестре приводит az aosm nfd publish к сбою со следующей ошибкой.

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

Доступно несколько решений.

  • Измените диаграмму helm или передайте пути к изображениям в values.yaml и задайте пути изображения для сопоставления структуры репозитория в исходном реестре.
  • Передайте образы в исходный реестр таким образом, чтобы объединение "image_sources" в cnf-input.jsonc файле и путь к изображению из диаграммы helm совпадал с загруженным расположением в исходном реестре.
  • Интерфейс командной строки AOSM сохраняет метаданные для обнаруженных cnf-cli-output/artifacts/artifacts.jsonизображений. Путь к интерфейсу командной строки AOSM в исходном реестре <registry_name>/<registry_namespace>/<artifact_name>/<artifact_version>. Этот файл можно изменить вручную, чтобы значения соответствовали расположению изображения в исходном ACR.

CGVs не соответствуют CGS, если параметр имеет тип NULL

В настоящее время AOSM не поддерживается null в качестве значения по умолчанию в схеме deployParameters, что означает, что значение null по умолчанию не допускается в схемах групп конфигурации. Чтобы обойти эту проблему, интерфейс командной строки AOSM задает значение по умолчанию для параметров типа NULL "null", которое позволяет NFDV успешно публиковать.

При использовании портала для создания CGV параметр автоматически заполняется "null" в качестве значения. Если вы не измените это значение, на портале отображается сообщение об ошибке, сказав: "Новое значение группы конфигурации не соответствует схеме - измените значения".

Снимок экрана портала, в котором есть сообщение об ошибке, так как значения группы конфигурации не соответствуют схеме группы конфигурации.

Чтобы устранить эту ошибку, перейдите "null" на null CGV.

Например, изначально у нас есть значение "null":

"serviceAccount_name": "null",

Что должно быть изменено на значение null.

"serviceAccount_name": null,