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
É necessária uma conta do Azure com uma assinatura ativa. Se você não tiver uma assinatura do Azure, siga as instruções aqui Iniciar gratuitamente para criar uma conta antes de começar.
Um grupo de recursos existente onde você tem a função de Colaborador ou a função de Colaborador nessa assinatura para que a extensão CLI do AOSM possa criar o grupo de recursos.
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.