Udostępnij za pośrednictwem


Szybki start: publikowanie kontenera Nginx jako konteneryzowanej funkcji sieciowej (CNF)

W tym przewodniku Szybki start opisano sposób używania rozszerzenia interfejsu az aosm wiersza polecenia platformy Azure do tworzenia i publikowania podstawowej definicji funkcji sieciowej. Jego celem jest zademonstrowanie przepływu pracy zasobów programu Azure Operator Service Manager (AOSM) wydawcy. Przedstawione tutaj podstawowe pojęcia mają na celu przygotowanie użytkowników do tworzenia bardziej ekscytujących usług.

Wymagania wstępne

Tworzenie pliku wejściowego

Utwórz plik wejściowy do publikowania definicji funkcji sieciowej. Wykonaj następujące polecenie, aby wygenerować plik konfiguracji danych wejściowych dla definicji funkcji sieciowej (NFD).

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

Wykonanie poprzedniego polecenia generuje plik cnf-input.jsonc.

Uwaga

Edytuj plik cnf-input.jsonc. Zastąp ją wartościami pokazanymi w poniższym przykładzie. Zapisz plik jako input-cnf-nfd.jsonc.

Jeśli używasz istniejącej grupy zasobów, zmień publisher_resource_group_name pole, aby je dopasować.

Napiwek

Możesz użyć wielu rejestrów kontenerów jako źródeł dla obrazów w interfejsie wiersza polecenia usługi AOSM. Obrazy do skopiowania z tych rejestrów są wybierane automatycznie na podstawie schematu pakietu helm. Rejestry źródłowe są konfigurowane na image_sources liście pliku cnf-input.jsonc.

W przypadku korzystania z usług ACR musisz mieć role Czytelnik i AcrPull w usłudze ACR. W przypadku korzystania z rejestrów innych niż rejestry usługi ACR należy uruchomić az aosm nfd build polecenie docker login , aby uwierzytelnić się przy użyciu każdego rejestru prywatnego. W tym przewodniku Szybki start używamy docker.io jako rejestru źródeł obrazów. Jest to rejestr publiczny i nie wymaga uwierzytelniania.

Oto przykładowy plik 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 — nazwa zasobu wydawcy, do którego ma zostać opublikowana definicja. Utworzono, jeśli jeszcze nie istnieje.
  • publisher_resource_group_name — grupa zasobów dla zasobu wydawcy. Utworzono, jeśli jeszcze nie istnieje.
  • acr_artifact_store_name — nazwa zasobu magazynu artefaktów usługi Azure Container Registry (ACR). Utworzono, jeśli jeszcze nie istnieje.
  • location — lokalizacja platformy Azure do użycia podczas tworzenia zasobów.
  • nf_name — nazwa definicji NF.
  • version — wersja definicji NF w formacie A.B.C.
  • image_sources — lista rejestrów, z których mają być pobierane obrazy.
  • helm_packages:
    • name — nazwa pakietu Helm.
    • path_to_chart — ścieżka pliku programu Helm Chart na dysku lokalnym. Akceptuje plik .tgz, .tar lub .tar.gz. Użyj separatora plików ukośnika systemu Linux (/), nawet jeśli jest uruchomiony w systemie Windows. Ścieżka powinna być ścieżką bezwzględną lub ścieżką względną do lokalizacji cnf-input.jsonc pliku.
    • default_values — ścieżka pliku (bezwzględna lub względna ) cnf-input.jsoncpliku wartości YAML na dysku lokalnym, który jest używany zamiast pliku values.yaml znajdujący się na wykresie helm.
    • depends_on — nazwy pakietów Helm, od których zależy ten pakiet. Pozostaw pustą tablicę, jeśli nie ma żadnych zależności.

Tworzenie definicji funkcji sieci (NFD)

Aby utworzyć definicję funkcji sieciowej (NFD), zainicjuj proces kompilacji.

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

Rozszerzenie AOSM interfejsu wiersza polecenia az generuje katalog o nazwie cnf-cli-output. Ten katalog zawiera pliki BICEP definiujące zasoby AOSM wymagane do opublikowania NFDV i przekazania obrazów wymaganych do wdrożenia w magazynie zarządzanym przez usługę AOSM. Zapoznaj się z wygenerowanymi plikami, aby lepiej zrozumieć strukturę definicji funkcji sieci (NFD).

Katalog/plik opis
nfDefinition/deployParameters.json Definiuje schemat parametrów wdrożenia wymaganych do utworzenia funkcji sieciowej (NF) z tej wersji definicji funkcji sieciowej (NFDV).
nfDefinition/nginxdemo-mappings.json Mapuje parametry wdrożenia dla wersji definicji funkcji sieciowej (NFDV) na wartości wymagane dla wykresu helm.
nfDefinition/deploy.bicep Szablon Bicep do tworzenia samej wersji definicji funkcji sieciowej (NFDV).
artefakty/artifacts.json Lista pakietów helm i obrazów kontenerów wymaganych przez NF.
artifactManifest/deploy.bicep Szablon Bicep do tworzenia manifestu artefaktu.
base/deploy.bicep Szablon Bicep do tworzenia wydawcy, sieciowej grupy definicji funkcji i zasobów magazynu artefaktów

Publikowanie definicji funkcji sieciowej i przekazywanie artefaktów

Wykonaj następujące polecenie, aby opublikować definicję funkcji sieciowej (NFD) i przekazać skojarzone artefakty:

Uwaga

Jeśli używasz systemu Windows, musisz mieć uruchomiony program Docker Desktop podczas kroku publikowania.

Uwaga

Nazwy wydawców muszą być unikatowe w obrębie regionu. Prawdopodobnie plik "nginx-publisher" zdefiniowany w przykładowym pliku konfiguracji już istnieje.

Jeśli zostanie wyświetlony komunikat o błędzie "Zasób wydawcy prywatnego o nazwie "nginx-publisher" już istnieje w podanym regionie", zmodyfikuj publisher_name pole w pliku konfiguracji, aby było unikatowe (np. dodać losowy sufiks ciągu), uruchom ponownie polecenie (powyżej), a następnie ponownie uruchom build to publish polecenie.

Jeśli utworzysz projekt usługi sieciowej, musisz użyć tej nowej nazwy obiektu pubilsher w tablicy resource_element_templates .

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

Po zakończeniu polecenia sprawdź zasoby w grupie zasobów wydawcy, aby przejrzeć utworzone składniki i artefakty.

Następne kroki