Sdílet prostřednictvím


Připojení kontejnerizované síťové funkce (CNF) k Azure Operator Service Manageru (AOSM)

V tomto návodu se vydavatelé síťových funkcí a návrháři služeb naučí, jak pomocí rozšíření Azure CLI AOSM připojit kontejnerizovanou síťovou funkci do AOSM. CNF je možné později nasadit do clusteru Kubernetes připojeného ke službě Azure Arc, včetně clusteru Azure Operator Nexus.

Onboarding je proces s více kroky. Jakmile splníte požadavky, použijete rozšíření Azure CLI AOSM k:

  1. Vygenerujte soubory BICEP, které definují skupinu definic síťových funkcí a verzi (NFD) na základě grafů a hodnot Helm.yaml.
  2. Publikujte NFD a nahrajte image a grafy CNF do úložiště artefaktů (AOSM spravovaného službou Azure Container Registry (ACR)).
  3. Přidejte publikovanou NFD do souborů BICEP, které definují skupinu návrhu síťových služeb a verzi (NSD).
  4. Publikujte NSD.

Požadavky

  • Ve svém předplatném Azure jste povolili AOSM .
  • Pokud má váš CNF běžet na platformě Azure Operator Nexus, máte přístup k instanci Azure Operator Nexus a dokončili požadavky pro nasazení úloh.

Poznámka:

Důrazně doporučujeme otestovat, že balíček helm install Helm bude úspěšný v cílovém prostředí Kubernetes připojeném ke službě Arc.

Konfigurace oprávnění

  • Abyste mohli vytvořit skupinu prostředků, nebo existující skupinu prostředků, ve které máte roli přispěvatele, musíte mít před předplatnou roli Přispěvatel.
  • Potřebujete Reader/AcrPull přiřazení rolí ve zdrojové službě ACR obsahující vaše image.
  • V předplatném, které bude obsahovat úložiště artefaktů spravovaných službou AOSM, vyžadujete ContributorAcrPush přiřazení rolí a rolí. Tato oprávnění umožňují rozšíření Azure CLI AOSM provádět přímé kopírování ACR-to-ACR. Přímá kopie je nejrychlejší způsob přenosu obrázků z jednoho ACR do druhého.
    • Zásady vaší společnosti vám můžou bránit v tom, abyste měli oprávnění vymezená předplatným. Parametr --no-subscription-permissions dostupný pro az aosm nfd publish příkazy a az aosm nsd publish příkazy používá úzce vymezená oprávnění odvozená ze služby AOSM k orchestraci dvoustupňové kopie do a z místního počítače. Tato dvoustupňová kopie je pomalejší, ale nevyžaduje oprávnění vymezená předplatným.

Balíčky Helm

  • Balíčky Helm, které chcete připojit, musí být přítomné v místním úložišti počítače, ze kterého spouštíte rozhraní příkazového řádku.
    • Rozšíření Azure CLI AOSM ve výchozím nastavení použije values.yaml soubor v balíčku Helm. Rozhraní příkazového řádku podporuje přepsání tohoto chování alternativním values.yaml. Tento alternativní soubor musí existovat v místním úložišti počítače, ze kterého spouštíte rozhraní příkazového řádku.

Poznámka:

Důrazně doporučujeme, aby balíček Helm obsahoval schéma pro hodnoty helmu a aby šablony balíčků Helm podle očekávání při helm template spuštění pomocí values.yaml, které chcete použít při onboardingu do AOSM.

Image kontejneru

  • Vaše image kontejneru se nacházejí buď v existující službě ACR, nebo v alternativním registru kontejneru, který podporuje rozhraní API Dockeru. Image kontejnerů musí být uložené ve zdrojovém registru ve struktuře, která odpovídá umístění image definované v grafech helmu. Tento požadavek je vysvětlený ve zjišťování a nahrávání imagí CNF rozhraní příkazového řádku.
  • docker login Před spuštěním příkazů az aosm se pomocí příkazu přihlaste k registru kontejneru mimo Azure, který hostuje image kontejneru. Tento krok se nevyžaduje, pokud používáte ACR: Rozšíření Azure CLI AOSM se automaticky přihlásí.

Helm a modul Dockeru

Stažení a instalace Azure CLI

Pokud chcete azure CLI nainstalovat místně, přečtěte si, jak nainstalovat Azure CLI.

Pokud se chcete přihlásit k Azure CLI, použijte az login příkaz a dokončete výzvy zobrazené v terminálu a dokončete ověřování. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.

Poznámka:

Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Jak spustit Azure CLI v kontejneru Dockeru. Prostředí Bash můžete použít také v Azure Cloud Shellu. Další informace najdete v tématu Spuštění Cloud Shellu pro použití prostředí Bash v Azure Cloud Shellu.

Instalace rozšíření AOSM CLI

Rozšíření Az CLI AOSM vyžaduje verzi 2.54.0 nebo novější azure CLI.

  1. Spuštěním zobrazíte az version nainstalované verze a závislé knihovny.
  2. Spusťte az upgrade upgrade na aktuální verzi Azure CLI.

Pomocí tohoto příkazu nainstalujte rozšíření rozhraní příkazového řádku AOSM:

az extension add --name aosm

Sestavení skupiny definic síťových funkcí a verze

Tento krok vytvoří složku v pracovním adresáři volaným cnf-cli-output pomocí šablon BICEP prostředků AOSM, které definují vaši skupinu definic síťových funkcí a verzi a úložiště artefaktů. Tyto prostředky budou nakonec zahrnuty do návrhu síťových služeb.

  1. Vygenerujte vstupní soubor přípony Azure CLI AOSM pro CNF.

    az aosm nfd generate-config --definition-type cnf --output-file <filename.jsonc>
    
  2. Otevřete vstupní soubor, který jste vygenerovali v předchozím kroku, a pomocí vložených komentářů zadejte požadované hodnoty. Tento příklad ukazuje vstupní soubor přípony Az CLI AOSM pro fiktivní CNF společnosti Contoso.

    Poznámka:

    Rozšíření Azure CLI AOSM zveřejňuje požadované parametry pouze bez výchozích hodnot ve vstupu values.yaml . Můžete nastavit expose_all_parameters tak, aby true se zpřístupnily všechny hodnoty helmu ve verzi definice síťové funkce (NFDV) a schématu skupiny konfigurace (CGS). Další informace najdete v tématu Zpřístupnění parametru pomocí rozšíření rozhraní příkazového řádku AOSM.

    {
      // Azure location to use when creating resources e.g uksouth
      "location": "eastus",
      // Name of the Publisher resource you want your definition published to.
      // Will be created if it does not exist.
      "publisher_name": "contoso",
      // Resource group for the Publisher resource.
      // You should create this before running the publish command
      "publisher_resource_group_name": "contoso",
      // Name of the ACR Artifact Store resource.
      // Will be created if it does not exist.
      "acr_artifact_store_name": "contoso-artifact-store",
      // Name of NF definition.
      "nf_name": "contoso-cnf-nfd",
      // Version of the NF definition in 1.1.1 format (three integers separated by dots).
      "version": "1.0.0",
      // If set to true, all NFD configuration parameters are made available to the designer, including optional parameters and those with defaults.
      // If not set or set to false, only required parameters without defaults will be exposed.
      "expose_all_parameters": false,
      // 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": ["contoso.azuercr.io/contoso", "docker.io"],
      // List of Helm packages to be included in the CNF.
      "helm_packages": [
          {
              // The name of the Helm package.
              "name": "contoso-helm-package",
              // The file path to the helm chart on the local disk, relative to the directory from which the command is run.
              // Accepts .tgz, .tar or .tar.gz, or an unpacked directory. Use Linux slash (/) file separator even if running on Windows.
              "path_to_chart": "/home/cnf-onboard/contoso-cnf-helm-chart-0-1-0.tgz",
              // The file path (absolute or relative to this configuration file) of YAML values file on the local disk which will be used instead of the values.yaml file present in the helm chart.
              // Accepts .yaml or .yml. Use Linux slash (/) file separator even if running on Windows.
              "default_values": "",
          }
      ]
    }
    
  3. Spuštěním následujícího příkazu sestavte skupinu definic síťových funkcí a šablony BICEP verze.

az aosm nfd build --definition-type cnf --config-file <filename.jsonc>

Strukturu složek a souborů si můžete prohlédnout a v případě potřeby upravit.

Publikování skupiny a verze definice síťové funkce

Tento krok vytvoří prostředky AOSM, které definují definici síťové funkce a úložiště artefaktů, které se použijí k ukládání imagí kontejneru síťové funkce. Také nahraje obrázky a grafy do úložiště artefaktů buď tak, že je zkopírujete přímo ze zdrojové služby ACR, nebo pokud nemáte obor Contributor předplatného a AcrPush role, přetáhnete image Dockeru místně a nahrajete je do úložiště artefaktů pomocí úzce vymezených přihlašovacích údajů vygenerovaných ze služby AOSM.

  1. Spuštěním následujícího příkazu publikujte skupinu definic síťových funkcí a verzi. Pokud nemáte obor Contributor předplatného a AcrPush role, zahrňte --no-subscription-permissions ho do příkazu.

Poznámka:

Pokud používáte Windows, musíte mít v kroku publikování spuštěnou aplikaci Docker Desktop.

az aosm nfd publish --build-output-folder cnf-cli-output --definition-type cnf

Sestavení skupiny a verze návrhu síťové služby

Tento oddíl vytvoří složku v pracovním adresáři s názvem nsd-cli-output. Tato složka obsahuje šablony BICEP prostředků AOSM, které definují skupinu návrhu síťové služby a verzi. Tento návrh síťové služby je šablona použitá v prostředku síťové služby lokality, která nasadí funkci sítě, kterou jste nasadili v předchozích částech.

  1. Vygenerujte vstupní soubor rozšíření Azure CLI AOSM NSD.

    az aosm nsd generate-config --output-file <nsd-output-filename.jsonc>
    
  2. Otevřete vstupní soubor, který jste vygenerovali v předchozím kroku, a pomocí vložených komentářů zadejte požadované hodnoty. Vygenerovaný vstupní soubor obsahuje další resource_element_type typ ArmTemplate. To není nutné při připojování CNF; můžete ho odstranit. Výsledek by měl vypadat jako v tomto příkladu. Příklad ukazuje vstupní soubor s příponou Az CLI AOSM pro fiktivní skupinu NSD společnosti Contoso, která se dá použít k nasazení fiktivního SOUBORU CNF společnosti Contoso do clusteru Nexus Kubernetes připojeného k arc.

    {
        // Azure location to use when creating resources e.g uksouth
        "location": "eastus",
        // Name of the Publisher resource you want your definition published to.
        // Will be created if it does not exist.
        "publisher_name": "contoso",
        // Resource group for the Publisher resource.
        // Will be created if it does not exist.
        "publisher_resource_group_name": "contoso",
        // Name of the ACR Artifact Store resource.
        // Will be created if it does not exist.
        "acr_artifact_store_name": "contoso-artifact-store",
        // Network Service Design (NSD) name. This is the collection of Network Service Design Versions. Will be created if it does not exist.
        "nsd_name": "contoso-nsd",
        // Version of the NSD to be created. This should be in the format A.B.C
        "nsd_version": "1.0.0",
        // Optional. Description of the Network Service Design Version (NSDV).
        "nsdv_description": "An NSD that deploys the onboarded contoso-cnf NFD",
        // List of Resource Element Templates (RETs).
        // There must be at least one NF RET.
        // ArmTemplate RETs are optional. Delete if not required.
        "resource_element_templates": [
            {
                // Type of Resource Element. Either NF or ArmTemplate
                "resource_element_type": "NF",
                "properties": {
                    // The name of the existing publisher for the NSD.
                    "publisher": "contoso",
                    // The resource group that the publisher is hosted in.
                    "publisher_resource_group": "contoso",
                    // The name of the existing Network Function Definition Group to deploy using this NSD.
                    // This will be the same as the NF name if you published your NFDV using the CLI.
                    "name": "contoso-cnf-nfd",
                    // The version of the existing Network Function Definition to base this NSD on.
                    // This NSD will be able to deploy any NFDV with deployment parameters compatible with this version.
                    "version": "1.0.0",
                    // The region that the NFDV is published to.
                    "publisher_offering_location": "eastus",
                    // Type of Network Function. Valid values are 'cnf' or 'vnf'.
                    "type": "cnf"
                }
            }
        ]
    }
    

    Poznámka:

    Oddíl šablony elementu prostředku definuje, který NFD je součástí NSD. Vlastnosti musí odpovídat vlastnostem použitým ve vstupním souboru předaném az aosm nfd build příkazu. Důvodem je to, že rozšíření Azure CLI AOSM ověřuje, že při sestavování NSD je správně nasazený NFD.

  3. Spuštěním následujícího příkazu sestavte skupinu návrhu síťové služby a šablony BICEP verze.

az aosm nsd build --config-file <nsd-output-filename.jsonc>

V případě potřeby můžete zkontrolovat strukturu složek a souborů a provádět změny.

Publikování skupiny a verze návrhu síťové služby

Tento krok vytvoří prostředky AOSM, které definují skupinu a verzi návrhu síťové služby. Také nahraje artefakty vyžadované NSD do úložiště artefaktů (šablona ARM síťové funkce).

  1. Spuštěním následujícího příkazu publikujte skupinu a verzi návrhu síťové služby. Pokud nemáte obor Contributor předplatného a AcrPush role, zahrňte --no-subscription-permissions ho do příkazu.
az aosm nsd publish --build-output-folder nsd-cli-output

Teď máte úplnou sadu prostředků vydavatele AOSM a jste připraveni provést tok operátoru.

Další kroky