Partilhar via


Guia de início rápido: publicar o contêiner Nginx como função de rede conteinerizada (CNF)

Este guia de início rápido descreve como usar a extensão CLI do az aosm Azure para criar e publicar uma definição básica de função de rede. Sua finalidade é demonstrar o fluxo de trabalho dos recursos do Publisher Azure Operator Service Manager (AOSM). Os conceitos básicos apresentados aqui destinam-se a preparar os usuários para construir serviços mais interessantes.

Pré-requisitos

Criar arquivo de entrada

Crie um arquivo de entrada para publicar a Definição de Função de Rede. Execute o seguinte comando para gerar o arquivo de configuração de entrada para a definição de função de rede (NFD).

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

A execução do comando anterior gera um arquivo cnf-input.jsonc.

Nota

Edite o arquivo cnf-input.jsonc. Substitua-o pelos valores mostrados no exemplo a seguir. Salve o arquivo como input-cnf-nfd.jsonc.

Se você estiver usando um grupo de recursos existente, altere o publisher_resource_group_name campo para correspondê-lo.

Gorjeta

Você pode usar vários registros de contêiner como fontes para suas imagens na CLI do AOSM. As imagens a serem copiadas desses registros são selecionadas automaticamente com base no esquema do pacote de leme. Os registros de origem são configurados na image_sources lista do arquivo cnf-input.jsonc.

Ao usar ACRs, você deve ter as funções Reader e AcrPull no ACR. Ao usar registros não-ACR, você deve executar docker login para autenticar com cada registro privado antes de executar o az aosm nfd build comando. Neste guia de início rápido, usamos docker.io como o registro de origem da imagem. Este é um registo público e não requer autenticação.

Aqui está o exemplo de arquivo 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 - Nome do recurso Publisher para o qual pretende publicar a sua definição. Criado se ainda não existir.
  • publisher_resource_group_name - Grupo de recursos para o recurso Publicador. Criado se ainda não existir.
  • acr_artifact_store_name - Nome do recurso do Repositório de Artefatos do Registro de Contêiner do Azure (ACR). Criado se ainda não existir.
  • location - O local do Azure a ser usado ao criar recursos.
  • nf_name - O nome da definição do novo alimento.
  • version - A versão da definição de NF em formato A.B.C.
  • image_sources - lista dos registos dos quais extrair as imagens.
  • helm_packages:
    • name - O nome do pacote Helm.
    • path_to_chart - O caminho do arquivo do Helm Chart no disco local. Aceita .tgz, .tar ou .tar.gz. Use o separador de arquivos de barra (/) do Linux mesmo se estiver sendo executado no Windows. O caminho deve ser um caminho absoluto ou o caminho relativo ao local do cnf-input.jsonc arquivo.
    • default_values - O caminho do arquivo (absoluto ou relativo acnf-input.jsonc) do arquivo de valores YAML no disco local que é usado em vez do arquivo values.yaml presente no gráfico de leme.
    • depends_on - Nomes dos pacotes Helm dos quais este pacote depende. Deixe como uma matriz vazia se não houver dependências.

Criar a definição de função de rede (NFD)

Para construir a definição de função de rede (NFD), inicie o processo de compilação.

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

A extensão Az CLI AOSM gera um diretório chamado cnf-cli-output. Este diretório contém os arquivos BICEP que definem os recursos do AOSM necessários para publicar um NFDV e carregar as imagens necessárias para implantá-lo no armazenamento gerenciado pelo AOSM. Examine os arquivos gerados para obter uma melhor compreensão da estrutura de definição de função de rede (NFD).

Diretório/Arquivo Description
nfDefinição/deployParameters.json Define o esquema para os parâmetros de implantação necessários para criar uma Função de Rede (NF) a partir desta Versão de Definição de Função de Rede (NFDV).
nfDefinição/nginxdemo-mappings.json Mapeia os parâmetros de implantação para a Versão de Definição de Função de Rede (NFDV) para os valores necessários para o gráfico de leme.
nfDefinition/deploy.bicep Modelo Bicep para criar a própria Versão de Definição de Função de Rede (NFDV).
artefactos/artifacts.json Uma lista dos pacotes de leme e das imagens de contentores exigidas pelo NF.
artifactManifest/deploy.bicep Modelo de bíceps para criar o manifesto do artefato.
base/deploy.bicep Modelo de bíceps para criar o editor, o grupo de definição de função de rede e os recursos de armazenamento de artefatos

Publicar a definição de função de rede e carregar artefatos

Execute o seguinte comando para publicar a definição de função de rede (NFD) e carregar os artefatos associados:

Nota

Se você estiver usando o Windows, deverá ter o Docker Desktop em execução durante a etapa de publicação.

Nota

Os nomes dos editores devem ser exclusivos dentro de uma região. É bastante provável que o 'nginx-publisher' definido no arquivo de configuração de exemplo já exista.

Se você receber um erro dizendo "Um recurso de editor privado com o nome 'nginx-publisher' já existe na região fornecida", edite o publisher_name campo no arquivo de configuração para que ele seja exclusivo (por exemplo, adicione um sufixo de cadeia de caracteres aleatório), execute novamente o build comando (acima) e, em seguida, execute novamente este publish comando.

Se você continuar a criar um design de serviço de rede, precisará usar esse novo nome de resource_element_templates editor na matriz.

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

Quando o comando for concluído, inspecione os recursos dentro do Grupo de Recursos do Publisher para revisar os componentes e artefatos criados.

Próximos passos