Delen via


Quickstart: Nginx-container publiceren als Containerized Network Function (CNF)

In deze quickstart wordt beschreven hoe u de az aosm Azure CLI-extensie gebruikt om een eenvoudige netwerkfunctiedefinitie te maken en te publiceren. Het doel is om de werkstroom van de AOSM-resources (Publisher Azure Operator Service Manager) te demonstreren. De basisconcepten die hier worden gepresenteerd, zijn bedoeld om gebruikers voor te bereiden op het bouwen van interessantere services.

Vereisten

Invoerbestand maken

Maak een invoerbestand voor het publiceren van de definitie van de netwerkfunctie. Voer de volgende opdracht uit om het invoerconfiguratiebestand voor de NFD (Network Function Definition) te genereren.

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

De uitvoering van de voorgaande opdracht genereert een cnf-input.jsonc-bestand.

Notitie

Bewerk het cnf-input.jsonc-bestand. Vervang deze door de waarden die worden weergegeven in het volgende voorbeeld. Sla het bestand op als input-cnf-nfd.jsonc.

Als u een bestaande resourcegroep gebruikt, wijzigt u het publisher_resource_group_name veld zodat het overeenkomt.

Tip

U kunt meerdere containerregisters gebruiken als bronnen voor uw installatiekopieën in de AOSM CLI. De installatiekopieën die uit deze registers moeten worden gekopieerd, worden automatisch geselecteerd op basis van het Helm-pakketschema. De bronregisters worden geconfigureerd in de image_sources lijst van het cnf-input.jsonc-bestand.

Wanneer u ACR's gebruikt, moet u de rollen Lezer en AcrPull hebben op de ACR. Wanneer u niet-ACR-registers gebruikt, moet u worden uitgevoerd docker login om te verifiëren bij elk privéregister voordat u de az aosm nfd build opdracht uitvoert. In deze quickstart gebruiken docker.io we het bronregister van de installatiekopieën. Dit is een openbaar register en vereist geen verificatie.

Hier volgt een voorbeeld van het bestand 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: de naam van de Publisher-resource waarnaar u de definitie wilt publiceren. Gemaakt als deze nog niet bestaat.
  • publisher_resource_group_name - Resourcegroep voor de Publisher-resource. Gemaakt als deze nog niet bestaat.
  • acr_artifact_store_name : naam van de ACR-resource (Azure Container Registry). Gemaakt als deze nog niet bestaat.
  • locatie : de Azure-locatie die moet worden gebruikt bij het maken van resources.
  • nf_name : de naam van de NF-definitie.
  • versie : de versie van de NF-definitie in A.B.C-indeling.
  • image_sources - lijst met de registers waaruit de installatiekopieën moeten worden opgehaald.
  • helm_packages:
    • name : de naam van het Helm-pakket.
    • path_to_chart: het bestandspad van Helm-grafiek op de lokale schijf. Accepteert .tgz, .tar of .tar.gz. Gebruik linux-slash (/) bestandsscheidingsteken, zelfs als dit wordt uitgevoerd in Windows. Het pad moet een absoluut pad of het pad ten opzichte van de locatie van het cnf-input.jsonc bestand zijn.
    • default_values : het bestandspad (absoluut of relatief ten cnf-input.jsoncopzichte van) van het YAML-waardenbestand op de lokale schijf die wordt gebruikt in plaats van het bestand values.yaml dat aanwezig is in de Helm-grafiek.
    • depends_on: de namen van de Helm-pakketten waarvan dit pakket afhankelijk is. Laat deze staan als een lege matrix als er geen afhankelijkheden zijn.

De netwerkfunctiedefinitie (NFD) bouwen

Als u de NFD (Network Function Definition) wilt maken, start u het buildproces.

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

De Az CLI AOSM-extensie genereert een map met de naam cnf-cli-output. Deze map bevat de BICEP-bestanden die de AOSM-resources definiëren die nodig zijn voor het publiceren van een NFDV en het uploaden van de installatiekopieën die nodig zijn om deze te implementeren in door AOSM beheerde opslag. Bekijk de gegenereerde bestanden om een beter inzicht te krijgen in de NFD-structuur (Network Function Definition).

Map/bestand Beschrijving
nfDefinition/deployParameters.json Hiermee definieert u het schema voor de implementatieparameters die nodig zijn om een netwerkfunctie (NF) te maken op basis van deze NFDV (Network Function Definition Version).
nfDefinition/nginxdemo-mappings.json Wijst de implementatieparameters voor de NFDV (Network Function Definition Version) toe aan de waarden die vereist zijn voor de Helm-grafiek.
nfDefinition/deploy.bicep Bicep-sjabloon voor het maken van de Network Function Definition Version (NFDV) zelf.
artefacten/artifacts.json Een lijst met de Helm-pakketten en containerinstallatiekopieën die vereist zijn voor het NF.
artifactManifest/deploy.bicep Bicep-sjabloon voor het maken van het artefactmanifest.
base/deploy.bicep Bicep-sjabloon voor het maken van de uitgever, netwerkfunctiedefinitiegroep en artefactopslagbronnen

De definitie van de netwerkfunctie publiceren en artefacten uploaden

Voer de volgende opdracht uit om de NFD (Network Function Definition) te publiceren en de bijbehorende artefacten te uploaden:

Notitie

Als u Windows gebruikt, moet Docker Desktop worden uitgevoerd tijdens de publicatiestap.

Notitie

Uitgeversnamen moeten uniek zijn binnen een regio. Het is vrij waarschijnlijk dat de nginx-publisher die is gedefinieerd in het voorbeeldconfiguratiebestand al bestaat.

Als er een foutbericht wordt weergegeven met de tekst 'Een privé-uitgeverresource met de naam 'nginx-publisher' bestaat al in de opgegeven regio', bewerkt u het publisher_name veld in het configuratiebestand zodat het uniek is (bijvoorbeeld een willekeurig tekenreeksachtervoegsel toevoegen), voert u de build opdracht (hierboven) opnieuw uit en voert u deze publish opdracht opnieuw uit.

Als u verdergaat met het maken van een netwerkserviceontwerp, moet u deze nieuwe uitgevernaam in de resource_element_templates matrix gebruiken.

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

Wanneer de opdracht is voltooid, inspecteert u de resources in uw Publisher-resourcegroep om de gemaakte onderdelen en artefacten te controleren.

Volgende stappen