Compartilhar via


Início Rápido: publicar o contêiner Nginx como CNF (Função de Rede em Contêineres)

Este início rápido descreve como usar a extensão az aosm da CLI do 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 Gerenciador de Serviço do Operador do Microsoft Azure (AOSM) do Publicador. Os conceitos básicos apresentados aqui servem para preparar os usuários para criar 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 comando a seguir 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.

Observação

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 campo publisher_resource_group_name para corresponder a ele.

Dica

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 helm. Os registros de origem são configurados na lista image_sources 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 comando az aosm nfd build. Nesse início rápido usamos docker.io como registro de origem da imagem. Esse é um registro público e não requer autenticação.

Aqui está o arquivo input-cnf-nfd.jsonc de exemplo:

{
  // 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: o nome do recurso Publicador para o qual você deseja que sua definição seja publicada. Um será criado se ele ainda não existir.
  • publisher_resource_group_name: o grupo de recursos para o recurso Publicador. Um será criado se ele ainda não existir.
  • acr_artifact_store_name: nome do recurso do repositório de artefatos do Registro de Contêiner do Azure (ACR). Um será criado se ele ainda não existir.
  • location: o local do Azure a ser usado ao criar recursos.
  • nf_name - O nome da definição de NF.
  • versão – A versão da definição de NF no formato A.B.C.
  • image_sources: lista dos registros dos quais efetuar pull de imagens.
  • helm_packages:
    • nome – O nome do pacote helm.
    • path_to_chart - O caminho do arquivo do Gráfico do Helm no disco local. Aceita .tgz, .tar ou .tar.gz. Use o separador de arquivos de barra do Linux (/) mesmo que esteja em execução no Windows. O caminho deve ser um caminho absoluto ou o caminho relativo ao local do arquivo cnf-input.jsonc.
    • default_values: o caminho do arquivo (absoluto ou relativo a cnf-input.jsonc) do arquivo de valores YAML no disco local que é usado em vez do arquivo values.yaml presente no gráfico do Helm.
    • depends_on - Os nomes dos pacotes do 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 build.

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. Esse diretório contém os arquivos BICEP que definem os recursos do AOSM necessários para publicar uma NFDV e carregar as imagens necessárias para implantá-lo no armazenamento gerenciado pelo AOSM. Examine os arquivos gerados para entender melhor a estrutura de definição de função de rede (NFD).

Diretório/arquivo Descrição
nfDefinition/deployParameters.json Define o esquema dos parâmetros de implantação necessários para criar uma função de rede (NF) a partir dessa versão de definição de função de rede (NFDV).
nfDefinition/nginxdemo-mappings.json Mapeia os parâmetros de implantação da Versão de Definição de Função de Rede (NFDV) para os valores necessários para o gráfico helm.
nfDefinition/deploy.bicep Modelo do Bicep para criar a versão de definição de função de rede (NFDV) em si.
artifacts/artifacts.json Uma lista dos pacotes Helm e imagens de contêiner exigidas pela NF.
artifactManifest/deploy.bicep Modelo do Bicep para criar os manifestos do artefato.
base/deploy.bicep Modelo do Bicep para criar o publicador, o grupo de definição de função de rede e os recursos do repositório 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:

Observação

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

Observação

Os nomes dos editores devem ser exclusivos em uma região. É bem 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 campopublisher_name no arquivo de configuração para que seja exclusivo (por exemplo, adicione um sufixo de cadeia de caracteres aleatório), execute novamente o comando build (acima) e, em seguida, execute novamente esse publish comando.

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

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

Quando o comando for concluído, inspecione os recursos em seu Grupo de Recursos do Publicador para examinar os componentes e artefatos criados.

Próximas etapas