Краткое руководство. Публикация контейнера Nginx в качестве контейнерной сетевой функции (CNF)

В этом кратком руководстве описывается, как использовать az aosm расширение Azure CLI для создания и публикации базового определения сетевой функции. Она предназначена для демонстрации рабочего процесса ресурсов Azure Operator Service Manager (AOSM) издателя. Основные понятия, представленные здесь, предназначены для подготовки пользователей к созданию более интересных служб.

Необходимые компоненты

Создание входного файла

Создайте входной файл для публикации определения сетевой функции. Выполните следующую команду, чтобы создать входной файл конфигурации для определения сетевой функции (NFD).

az aosm nfd generate-config --definition-type cnf

Выполнение предыдущей команды создает файл input.json.

Примечание.

Измените файл input.json. Замените его значениями, показанными в следующем примере. Сохраните файл как input-cnf-nfd.json.

Примечание.

В этом кратком руководстве мы используем source_local_docker_image. Для дальнейших cnfs вы можете сделать в будущем, вы можете использовать ссылку на существующий Реестр контейнеров Azure который содержит изображения для CNF. В настоящее время поддерживается только одно пространство ACR и пространства имен для каждого CNF. Изображения, скопированные из этого ACR, заполняются автоматически на основе схемы пакета helm. Чтобы использовать этот параметр в будущем, заполните source_registry и при необходимости source_registry_namespace в файле input.json. Для этого ACR необходимо иметь разрешения читателя или AcrPull.

Ниже приведен пример файла input-cnf-nfd.json:

{
    "publisher_name": "nginx-publisher",
    "publisher_resource_group_name": "nginx-publisher-rg",
    "nf_name": "nginx",
    "version": "1.0.0",
    "acr_artifact_store_name": "nginx-nsd-acr",
    "location": "uksouth",
    "images": {
        "source_local_docker_image": "nginx:stable"
    },
    "helm_packages": [
        {
            "name": "nginxdemo",
            "path_to_chart": "nginxdemo-0.1.0.tgz",
            "path_to_mappings": "",
            "depends_on": []
        }
    ]
}
  • publisher_name — имя ресурса издателя, в котором вы хотите опубликовать определение. Создано, если оно еще не существует.
  • publisher_resource_group_name — группа ресурсов для ресурса издателя. Создано, если оно еще не существует.
  • acr_artifact_store_name — имя ресурса хранилища артефактов ACR. Создано, если оно еще не существует.
  • расположение — расположение Azure, используемое при создании ресурсов.
  • nf_name — имя определения NF.
  • версия — версия определения NF в формате A.B.C.
  • изображения:
    • source_local_docker_image — необязательно. Имя образа исходного docker с локального компьютера. В случае ограниченного использования, если для CNF требуется только один образ Docker, который существует в локальном репозитории docker.
  • helm_packages:
    • name — имя пакета Helm.
    • path_to_chart — путь к файлу Диаграммы Helm на локальном диске. Принимает TGZ, TAR или TAR.gz. Используйте разделитель косой черты (/) Linux, даже если работает в Windows. Путь должен быть абсолютным или путь относительно расположения input.json файла.
    • path_to_mappings — путь к файлу (абсолютный или относительныйinput.json) сопоставлений значений на локальном диске, где выбранные значения заменяются заполнителями deploymentParameter. Принимает .yaml или .yml. Если оставить пустую строку, создается файл сопоставления значений с каждым значением, сопоставленным с параметром развертывания. Используйте пустую строку и --interactive команду сборки для интерактивного выбора значений для сопоставления.
    • depends_on. Имена пакетов Helm зависят от этого пакета. Оставьте пустой массив, если нет зависимостей.

Создание определения сетевой функции (NFD)

Чтобы создать определение сетевой функции (NFD), инициируйте процесс сборки в интерактивном режиме. Этот режим позволяет выборочно предоставлять значения из values.yaml развертыванияParameters.

az aosm nfd build -f input-cnf-nfd.json --definition-type cnf --interactive

Во время интерактивного процесса можно ответить на "n" (нет) для всех параметров, кроме следующих двух:

  • Чтобы предоставить параметр serviceAccount_create, ответьте на "y" (да)
  • Чтобы предоставить параметр service_port, ответьте на "y" (да)

После завершения сборки изучите созданные файлы, чтобы лучше понять структуру определения сетевой функции (NFD). Эти файлы создаются:

Каталог/файл Description
configMappings Карты параметры развертывания для версии определения сетевой функции (NFDV) к значениям, необходимым для диаграммы helm.
generatedValuesMappings Выходные данные yaml интерактивного режима, создавшего configMappings. При необходимости измените и повторно выполните команду.
схемы Определяет параметры развертывания, необходимые для создания сетевой функции (NF) из этой версии определения сетевой функции (NFDV).
cnfartifactmanifests.bicep Шаблон Bicep для создания манифеста артефакта.
cnfdefinition.bicep Шаблон Bicep для создания самой версии определения сетевой функции (NFDV).

Если ошибки были сделаны во время интерактивного выбора, существует два варианта их исправления:

  1. Повторно выполните команду с правильными выбранными параметрами.
  2. Вручную настройте сопоставления созданных значений в generatedValuesMappings папке. Затем измените его path_to_mappings_fileinput.json , чтобы ссылаться на измененный путь к файлу.

Публикация определения сетевой функции и отправка артефактов

Выполните следующую команду, чтобы опубликовать определение сетевой функции (NFD) и отправить связанные артефакты:

az aosm nfd publish -f input-cnf-nfd.json --definition-type cnf

По завершении команды проверьте ресурсы в группе ресурсов издателя, чтобы просмотреть созданные компоненты и артефакты.

Следующие шаги