Краткое руководство. Публикация контейнера Nginx в качестве контейнерной сетевой функции (CNF)
В этом кратком руководстве описывается, как использовать az aosm
расширение Azure CLI для создания и публикации базового определения сетевой функции. Его целью является демонстрация рабочего процесса ресурсов Publisher Azure Operator Service Manager (AOSM). Основные понятия, представленные здесь, предназначены для подготовки пользователей к созданию более интересных служб.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Если у вас нет подписки Azure, следуйте инструкциям, приведенным здесь , чтобы создать учетную запись перед началом работы.
Выполните краткое руководство. Выполните необходимые условия для развертывания контейнерной сетевой функции в Диспетчере служб оператора Azure.
Существующая группа ресурсов, в которой у вас есть роль участника или роль участника в этой подписке, чтобы расширение ИНТЕРФЕЙСА командной строки 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
По завершении команды проверьте ресурсы в группе ресурсов издателя, чтобы просмотреть созданные компоненты и артефакты.