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
Er is een Azure-account met een actief abonnement vereist. Als u geen Azure-abonnement hebt, volgt u de instructies hier Gratis om een account te maken voordat u begint.
Een bestaande resourcegroep met de rol Inzender of de rol Inzender voor dit abonnement, zodat de AOSM CLI-extensie de resourcegroep kan maken.
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.jsonc
opzichte 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.