Dela via


Snabbstart: Publicera Nginx-container som containerbaserad nätverksfunktion (CNF)

Den här snabbstarten az aosm beskriver hur du använder Azure CLI-tillägget för att skapa och publicera en grundläggande definition för nätverksfunktioner. Syftet är att demonstrera arbetsflödet för AOSM-resurserna (Publisher Azure Operator Service Manager). De grundläggande begrepp som presenteras här är avsedda att förbereda användarna för att skapa mer spännande tjänster.

Förutsättningar

Skapa indatafil

Skapa en indatafil för publicering av nätverksfunktionsdefinitionen. Kör följande kommando för att generera indatakonfigurationsfilen för NFD (Network Function Definition).

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

Körningen av föregående kommando genererar en cnf-input.jsonc-fil.

Kommentar

Redigera filen cnf-input.jsonc. Ersätt den med de värden som visas i följande exempel. Spara filen som input-cnf-nfd.jsonc.

Om du använder en befintlig resursgrupp ändrar du fältet publisher_resource_group_name så att det matchar det.

Dricks

Du kan använda flera containerregister som källor för dina avbildningar i AOSM CLI. De avbildningar som ska kopieras från dessa register väljs automatiskt baserat på helm-paketschemat. Källregistren konfigureras i image_sources listan över filen cnf-input.jsonc.

När du använder ACL måste du ha rollerna Läsare och AcrPull på ACR. När du använder icke-ACR-register måste du köra docker login för att autentisera med varje privat register innan du az aosm nfd build kör kommandot. I den här snabbstarten använder docker.io vi som avbildningskällans register. Det här är ett offentligt register och kräver inte autentisering.

Här är exempel på indata-cnf-nfd.jsonc-fil:

{
  // 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 – Namnet på den Publisher-resurs som du vill att definitionen ska publiceras till. Skapas om den inte redan finns.
  • publisher_resource_group_name – Resursgrupp för Publisher-resursen. Skapas om den inte redan finns.
  • acr_artifact_store_name – Namnet på Resursen för Azure Container Registry (ACR) Artifact Store. Skapas om den inte redan finns.
  • location – Den Azure-plats som ska användas när du skapar resurser.
  • nf_name – namnet på NF-definitionen.
  • version – NF-definitionens version i A.B.C-format.
  • image_sources – lista över de register som bilderna ska hämtas från.
  • helm_packages:
    • name – Namnet på Helm-paketet.
    • path_to_chart – Filsökvägen för Helm Chart på den lokala disken. Accepterar .tgz, .tar eller .tar.gz. Använd Filavgränsare för Linux-snedstreck (/) även om den körs i Windows. Sökvägen ska vara en absolut sökväg eller sökväg i förhållande till filens cnf-input.jsonc plats.
    • default_values – Filsökvägen (absolut eller relativ till cnf-input.jsonc) för YAML-värdefilen på den lokala disk som används i stället för filen values.yaml som finns i helm-diagrammet.
    • depends_on – Namnen på Helm-paketen som det här paketet är beroende av. Lämna som en tom matris om det inte finns några beroenden.

Skapa nätverksfunktionsdefinitionen (NFD)

Om du vill skapa NFD (Network Function Definition) initierar du byggprocessen.

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

Az CLI AOSM-tillägget genererar en katalog med namnet cnf-cli-output. Den här katalogen innehåller BICEP-filerna som definierar de AOSM-resurser som krävs för att publicera en NFDV och ladda upp de avbildningar som krävs för att distribuera den till AOSM-hanterad lagring. Granska de genererade filerna för att få en bättre förståelse för NFD-strukturen (Network Function Definition).

Katalog/fil beskrivning
nfDefinition/deployParameters.json Definierar schemat för de distributionsparametrar som krävs för att skapa en nätverksfunktion (NF) från den här NFDV-versionen (Network Function Definition Version).
nfDefinition/nginxdemo-mappings.json Mappar distributionsparametrarna för NFDV (Network Function Definition Version) till de värden som krävs för helm-diagrammet.
nfDefinition/deploy.bicep Bicep-mall för att skapa själva NFDV-versionen (Network Function Definition Version).
artefakter/artifacts.json En lista över helm-paket och containeravbildningar som krävs av NF.
artifactManifest/deploy.bicep Bicep-mall för att skapa artefaktmanifestet.
base/deploy.bicep Bicep-mall för att skapa resurser för utgivare, nätverksfunktionsdefinition och artefaktarkiv

Publicera nätverksfunktionsdefinitionen och ladda upp artefakter

Kör följande kommando för att publicera NFD (Network Function Definition) och ladda upp de associerade artefakterna:

Kommentar

Om du använder Windows måste Docker Desktop köras under publiceringssteget.

Kommentar

Utgivarnamn måste vara unika i en region. Det är ganska troligt att nginx-publisher som definierats i exempelkonfigurationsfilen redan finns.

Om du får ett felmeddelande om att det redan finns en privat utgivarresurs med namnet nginx-publisher i den angivna regionen redigerar publisher_name du fältet i konfigurationsfilen så att den är unik (t.ex. lägger till ett suffix för slumpmässig sträng), kör build kommandot igen (ovan) och kör sedan kommandot igen publish .

Om du fortsätter med att skapa en nätverkstjänstdesign måste du använda det här nya pubilsher-namnet i matrisen resource_element_templates .

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

När kommandot har slutförts kontrollerar du resurserna i publisher-resursgruppen för att granska de skapade komponenterna och artefakterna.

Nästa steg