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


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

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

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

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

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

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

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

Примечание.

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

Если вы используете существующую группу ресурсов, измените publisher_resource_group_name поле, чтобы оно соответствовало.

Совет

Вы можете использовать несколько реестров контейнеров в качестве источников для образов в интерфейсе командной строки AOSM. Образы, скопированные из этих реестров, выбираются автоматически на основе схемы пакета helm. Исходные реестры настраиваются в image_sources списке файла cnf-input.jsonc.

При использовании ACR необходимо иметь роли чтения и AcrPull в ACR. При использовании реестров, отличных от ACR, необходимо выполнить docker login проверку подлинности в каждом частном реестре перед выполнением az aosm nfd build команды. В этом кратком руководстве мы используем docker.io в качестве исходного реестра образов. Это общедоступный реестр и не требует проверки подлинности.

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

{
  // Azure location to use when creating resources e.g uksouth
  "location": "uksouth",
  // Name of the Publisher resource you want your definition published to.
  // Will be created if it does not exist.
  "publisher_name": "nginx-publisher",
  // Resource group for the Publisher resource.
  // Will be created if it does not exist.
  "publisher_resource_group_name": "nginx-publisher-rg",
  // Name of the ACR Artifact Store resource.
  // Will be created if it does not exist.
  "acr_artifact_store_name": "nginx-nsd-acr",
  // Name of NF definition.
  "nf_name": "nginx",
  // Version of the NF definition in 1.1.1 format (three integers separated by dots).
  "version": "1.0.0",
  // List of registries from which to pull the image(s).
  // For example ["sourceacr.azurecr.io/test", "myacr2.azurecr.io", "ghcr.io/path"].
  // For non Azure Container Registries, ensure you have run a docker login command before running build.
  //
  "image_sources": ["docker.io"],
  // List of Helm packages to be included in the CNF.
  "helm_packages": [
    {
      "name": "nginxdemo",
      "path_to_chart": "nginxdemo-0.3.0.tgz",
      "default_values": ""
    }
  ]
}
  • publisher_name — имя ресурса издателя, в котором вы хотите опубликовать определение. Создано, если оно еще не существует.
  • publisher_resource_group_name — группа ресурсов для ресурса издателя. Создано, если оно еще не существует.
  • acr_artifact_store_name — имя ресурса хранилища артефактов Реестр контейнеров Azure (ACR). Создано, если оно еще не существует.
  • расположение — расположение Azure, используемое при создании ресурсов.
  • nf_name — имя определения NF.
  • версия — версия определения NF в формате A.B.C.
  • image_sources — список реестров, из которых нужно извлечь изображения.
  • helm_packages:
    • name — имя пакета Helm.
    • path_to_chart — путь к файлу Диаграммы Helm на локальном диске. Принимает Tgz, .tar или .tar.gz. Используйте разделитель косой черты (/) Linux, даже если работает в Windows. Путь должен быть абсолютным или путь относительно расположения cnf-input.jsonc файла.
    • default_values — путь к файлу (абсолютный или относительныйcnf-input.jsonc) файла значений YAML на локальном диске, который используется вместо файла values.yaml, присутствующих на диаграмме helm.
    • depends_on. Имена пакетов Helm зависят от этого пакета. Оставьте пустой массив, если нет зависимостей.

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

Чтобы создать определение сетевой функции (NFD), инициируйте процесс сборки.

az aosm nfd build -f input-cnf-nfd.jsonc --definition-type cnf

Расширение Az CLI AOSM создает каталог с именем cnf-cli-output. Этот каталог содержит файлы BICEP, определяющие ресурсы AOSM, необходимые для публикации NFDV и отправки образов, необходимых для развертывания в управляемом AOSM хранилище. Изучите созданные файлы, чтобы лучше понять структуру определения сетевой функции (NFD).

Каталог/файл Description
nfDefinition/deployParameters.json Определяет схему параметров развертывания, необходимых для создания сетевой функции (NF) из этой версии определения сетевой функции (NFDV).
nfDefinition/nginxdemo-mappings.json Сопоставляет параметры развертывания для версии определения сетевой функции (NFDV) со значениями, необходимыми для диаграммы helm.
nfDefinition/deploy.bicep Шаблон Bicep для создания самой версии определения сетевой функции (NFDV).
артефакты/artifacts.json Список пакетов helm и образов контейнеров, необходимых NF.
artifactManifest/deploy.bicep Шаблон Bicep для создания манифеста артефакта.
base/deploy.bicep Шаблон Bicep для создания издателя, группы определения сетевой функции и ресурсов хранилища артефактов

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

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

Примечание.

Если вы используете Windows, на этапе публикации необходимо запустить Docker Desktop.

Примечание.

Имена издателей должны быть уникальными в пределах региона. Скорее всего, издатель nginx, определенный в примере файла конфигурации, уже существует.

Если вы получите сообщение об ошибке "Ресурс частного издателя с именем nginx-publisher" уже существует в указанном регионе", измените publisher_name поле в файле конфигурации таким образом, чтобы оно было уникальным (например, добавление случайной строковой суффикса), повторно выполните build команду (выше), а затем повторно выполните эту publish команду.

Если вы перейдете к созданию структуры сетевой службы, вам потребуется использовать это новое имя pubilsher в массиве resource_element_templates .

az aosm nfd publish -b cnf-cli-output --definition-type cnf

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

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