Compartir a través de


Inicio rápido: Publicación del contenedor de Nginx como función de red en contenedor (CNF)

En este inicio rápido se describe cómo usar la extensión de la CLI de Azure az aosm para crear y publicar una definición básica de función de red. Su propósito es demostrar el flujo de trabajo de los recursos de Publisher Azure Operator Service Manager (AOSM). Los conceptos básicos que se presentan aquí están diseñados para preparar a los usuarios para crear servicios más emocionantes.

Requisitos previos

Crear un archivo de entrada

Cree un archivo de entrada para publicar la definición de función de red. Ejecute el comando siguiente para generar el archivo de configuración de entrada para la definición de función de red (NFD).

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

La ejecución del comando anterior genera un archivo cnf-input.jsonc.

Nota:

Edite el archivo cnf-input.jsonc. Reemplácelo por los valores que se muestran en el ejemplo siguiente. Guarde el archivo como input-cnf-nfd.jsonc.

Si usa un grupo de recursos existente, cambie el campo publisher_resource_group_name para que coincida con él.

Sugerencia

Es posible usar varios registros de contenedor como orígenes para las imágenes en la CLI de AOSM. Las imágenes que se van a copiar de estos registros se seleccionan automáticamente en función del esquema del paquete de Helm. Los registros de origen se configuran en la lista image_sources en el archivo cnf-input.jsonc.

Al usar ACR, debe tener los roles Lector y AcrPull en ACR. Al usar otros registros que no son de ACR, debe ejecutar docker login para autenticarse con todos los registros privados antes de ejecutar el comando az aosm nfd build. En este inicio rápido, se usa docker.io como registro de origen de imágenes. Se trata de un registro público y no requiere autenticación.

Este es el archivo input-cnf-nfd.jsonc de ejemplo:

{
  // 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: Nombre del recurso del publicador en el que desea que se publique la definición. Se crea si aún no existe.
  • publisher_resource_group_name: Grupo de recursos para el recurso del publicador. Se crea si aún no existe.
  • acr_artifact_store_name: nombre del recurso de almacén de artefactos de Azure Container Registry (ACR). Se crea si aún no existe.
  • Ubicación: La ubicación de Azure que se utilizará al crear recursos.
  • nf_name: El nombre de la definición de NF.
  • Versión: La versión de la definición NF en formato A.B.C.
  • image_sources: lista de los registros desde los que extraer las imágenes.
  • helm_packages:
    • Nombre: El nombre del paquete Helm.
    • path_to_chart: La ruta del archivo del gráfico de Helm en el disco local. Acepta .tgz, .tar o .tar.gz. Use el separador de archivos de barra diagonal de Linux (/) incluso si se ejecuta en Windows. La ruta de acceso debe ser una ruta de acceso absoluta o la ruta de acceso relativa a la ubicación del archivo cnf-input.jsonc.
    • default_values: ruta de acceso del archivo (absoluta o relativa a cnf-input.jsonc) del archivo de valores de YAML en el disco local que se usa en lugar del archivo values.yaml presente en el gráfico de Helm.
    • depends_on: Nombres de los paquetes de Helm de los que depende este paquete. Déjelo como una matriz vacía si no hay dependencias.

Compilar la definición de función de red (NFD)

Para construir la definición de función de red (NFD), inicie el proceso de compilación.

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

La extensión AOSM de la CLI de Az genera un directorio denominado cnf-cli-output. Este directorio contiene los archivos de BICEP que definen los recursos de AOSM necesarios para publicar una NFDV y cargar las imágenes necesarias para implementarlos en el almacenamiento administrado por AOSM. Examine los archivos generados para comprender mejor la estructura de definición de función de red (NFD).

Directorio o archivo Descripción
nfDefinition/deployParameters.json Define el esquema de los parámetros de implementación necesarios para crear una función de red (NF) a partir de esta versión de definición de función de red (NFDV).
nfDefinition/nginxdemo-mappings.json Asigna los parámetros de implementación de la Versión de definición de función de red (NFDV) a los valores necesarios para el gráfico de Helm.
nfDefinition/deploy.bicep Plantilla de Bicep para crear la propia versión de definición de función de red (NFDV).
artifacts/artifacts.json Lista de los paquetes de Helm y las imágenes de contenedor requeridas por la NF.
artifactManifest/deploy.bicep Plantilla de Bicep para crear el manifiesto del artefacto.
base/deploy.bicep Plantilla de Bicep para crear el publicador, el grupo de definición de función de red y los recursos del almacén de artefactos

Publicar la definición de función de red y cargar artefactos

Ejecute el siguiente comando para publicar la definición de función de red (NFD) y cargar los artefactos asociados:

Nota:

Si usa Windows, debe tener el escritorio de Docker en ejecución durante el paso de publicación.

Nota:

Los nombres del publicador deben ser únicos dentro de una región. Es muy probable que el "nginx-publisher" definido en el archivo de configuración de ejemplo ya exista.

Si recibe un error que indica "Un recurso de publicador privado con el nombre "nginx-publisher" ya existe en la región proporcionada", edite el campo publisher_name en el archivo de configuración para que sea único (por ejemplo, agregue un sufijo de cadena aleatorio), vuelva a ejecutar el comando build (anterior) y vuelva a ejecutar este comando publish.

Si va a crear un diseño de servicio de red, deberá usar este nuevo nombre de publicador en la matriz resource_element_templates.

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

Cuando se complete el comando, inspeccione los recursos del grupo de recursos del publicador para revisar los componentes y artefactos creados.

Pasos siguientes