Condividi tramite


Guida introduttiva: Pubblicare un contenitore Nginx come funzione di rete in contenitori (CNF)

Questa guida introduttiva descrive come usare l'estensione dell'interfaccia della riga di comando di Azure az aosm per creare e pubblicare la definizione di una funzione di rete di base. Lo scopo è illustrare il flusso di lavoro delle risorse di Azure Operator Service Manager (AOSM) del server di pubblicazione. I concetti di base qui presentati hanno lo scopo di preparare gli utenti nella creazione di servizi più interessanti.

Prerequisiti

Creare un file di input

Creare un file di input per la pubblicazione della definizione di funzione di rete. Eseguire il comando seguente per generare il file di configurazione di input per la definizione della funzione di rete (NFD).

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

L'esecuzione del comando precedente genera un file cnf-input.jsonc.

Nota

Modificare il file cnf-input.jsonc. Sostituirlo con i valori mostrati nell'esempio seguente. Salvare il file come input-cnf-nfd.jsonc.

Se si usa un gruppo di risorse esistente, modificare il campo publisher_resource_group_name in modo che vi corrisponda.

Suggerimento

È possibile usare più registri contenitori come origini per le immagini nell'interfaccia della riga di comando di AOSM. Le immagini da copiare da questi registri vengono selezionate automaticamente in base allo schema del pacchetto helm. I registri di origine vengono configurati nell'elenco image_sources del file cnf-input.jsonc.

Quando si usano gli ACR, è necessario avere i ruoli Reader e AcrPull nel Registro Azure Container. Quando si usano registri non del Registro Azure Container, è necessario eseguire docker login per eseguire l'autenticazione con ogni registro privato prima di eseguire il comando az aosm nfd build. In questa guida introduttiva viene usato docker.io come registro di origine delle immagini. Si tratta di un registro pubblico e non richiede l'autenticazione.

Ecco il file input-cnf-nfd.jsonc di esempio:

{
  // 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 della risorsa del server di pubblicazione in cui si vuole pubblicare la definizione. Creato se non esiste già.
  • publisher_resource_group_name: gruppo di risorse per la risorsa del server di pubblicazione. Creato se non esiste già.
  • acr_artifact_store_name: nome della risorsa dell'archivio artefatti del Registro Azure Container. Creato se non esiste già.
  • percorso: posizione di Azure da usare durante la creazione di risorse.
  • nf_name: nome della definizione NF.
  • versione: versione della definizione NF in formato A.B.C.
  • image_sources: elenco dei registri da cui eseguire il pull delle immagini.
  • helm_packages:
    • name: nome del pacchetto Helm.
    • path_to_chart: percorso del file del grafico Helm sul disco locale. Accetta .tgz, .tar o .tar.gz. Usare il separatore di file barra (/) Linux anche se è in esecuzione in Windows. Il percorso deve essere un percorso assoluto o il percorso relativo al percorso del file cnf-input.jsonc.
    • default_values: percorso del file (assoluto o relativo a cnf-input.jsonc) del file di valori YAML nel disco locale usato invece del file values.yaml presente nel grafico Helm.
    • depends_on: i nomi dei pacchetti Helm da cui dipende questo pacchetto. Lasciare una matrice vuota se non sono presenti dipendenze.

Compilare la definizione di funzione di rete (NFD)

Per costruire la definizione della funzione di rete (NFD), avviare il processo di compilazione.

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

L'estensione Az CLI AOSM genera una directory denominata cnf-cli-output. Questa directory contiene i file BICEP che definiscono le risorse di AOSM necessarie per pubblicare un NFDV e caricare le immagini necessarie per distribuirla nell'archiviazione gestita da AOSM. Esaminare i file generati per ottenere una migliore comprensione della struttura NFD (Network Function Definition).

Directory/File Descrizione
nfDefinition/deployParameters.json Definisce lo schema per i parametri di distribuzione necessari per creare una funzione di rete da questa versione della definizione della funzione di rete.
nfDefinition/nginxdemo-mappings.json Esegue il mapping dei parametri di distribuzione per network Function Definition Version (NFDV) ai valori necessari per il grafico Helm.
nfDefinition/deploy.bicep Modello Bicep per la creazione della versione NFDV (Network Function Definition Version).
artifacts/artifacts.json Elenco dei pacchetti Helm e delle immagini del contenitore richiesti dal NF.
artifactManifest/deploy.bicep Modello Bicep per la creazione del manifesto dell'artefatto.
base/deploy.bicep Modello Bicep per la creazione di risorse dell'editore, del gruppo di definizione della funzione di rete e dell'archivio artefatti

Pubblicare la definizione della funzione di rete e caricare gli artefatti

Eseguire il comando seguente per pubblicare la definizione della funzione di rete e caricare gli artefatti associati:

Nota

Se si usa Windows, è necessario che Docker Desktop sia in esecuzione durante il passaggio di pubblicazione.

Nota

I nomi dei server di pubblicazione devono essere univoci all'interno di un'area. Molto probabilmente esiste già il file di configurazione "nginx-publisher" definito nel file di configurazione di esempio.

Se viene visualizzato un errore che indica che “Nell’area specificata esiste già una risorsa del server di pubblicazione privato con il nome ‘nginx-publisher’", modificare il campo publisher_name nel file di configurazione in modo che sia univoco (ad esempio, aggiungere un suffisso stringa casuale), eseguire nuovamente il comando build (sopra) ed eseguire nuovamente questo comando publish.

Se si procede alla creazione di una progettazione del servizio di rete, sarà necessario usare questo nuovo nome server di pubblicazione nella matrice resource_element_templates.

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

Al termine del comando, esaminare le risorse all'interno del gruppo di risorse del server di pubblicazione per esaminare i componenti e gli artefatti creati.

Passaggi successivi