コンテナー化されたネットワーク機能 (CNF) を Azure Operator Service Manager (AOSM) にオンボードする

この攻略ガイドでは、ネットワーク機能パブリッシャーとサービス デザイナーが Azure CLI AOSM 拡張機能を使用して、コンテナー化されたネットワーク機能を AOSM にオンボードする方法について学習します。 CNF は後で、Azure Operator Nexus クラスターを含む、Azure Arc に接続された Kubernetes クラスターにデプロイできます。

オンボードは複数ステップのプロセスです。 前提条件を満たしたら、Azure CLI AOSM 拡張機能を使用して次の処理を行います。

  1. Helm チャートと values.yaml に基づいてネットワーク機能定義 (NFD) のグループとバージョンを定義する BICEP ファイルを生成します。
  2. NFD を発行し、CNF イメージとチャートを成果物ストア (AOSM マネージド Azure Container Registry (ACR)) にアップロードします。
  3. 発行された NFD を、ネットワーク サービス設計 (NSD) のグループとバージョンを定義する BICEP ファイルに追加します。
  4. NSD を発行します。

前提条件

Note

ターゲットの Arc 接続された Kubernetes 環境で Helm パッケージの helm install が成功することをテストすることを強くお勧めします。

権限の構成

  • リソース グループを作成するためのあなたのサブスクリプションに対する共同作成者ロール、または共同作成者ロールを持つ既存のリソース グループが必要です。
  • イメージを含むソース ACR で Reader/AcrPull ロールの割り当てが必要です。
  • AOSM マネージド成果物ストアを含むサブスクリプションに対して、Contributor および AcrPush ロールの割り当てが必要です。 これらのアクセス許可により、Azure CLI AOSM 拡張機能は ACR 間の直接コピーを実行できるようになります。 直接コピーは、ACR 間でイメージを転送する最速の方法です。
    • 会社のポリシーによっては、サブスクリプションにスコープされたアクセス許可を持つことができなくなる場合があります。 az aosm nfd publish および az aosm nsd publish コマンドで使用できる --no-subscription-permissions パラメーターは、AOSM サービスから派生した厳密なスコープのアクセス許可を使用して、ローカル コンピューターとの間で 2 ステップのコピーを調整します。 この 2 ステップのコピーは低速ですが、サブスクリプションにスコープされたアクセス許可は必要ありません。

Helm パッケージ

  • オンボードする予定の Helm パッケージは、CLI の実行元のマシンのローカル ストレージに存在する必要があります。
    • Azure CLI AOSM 拡張機能では、既定で Helm パッケージ内の values.yaml ファイルが使用されます。 CLI では、代替 values.yaml を使用したこの動作のオーバーライドがサポートされています。 この代替ファイルは、CLI の実行元のマシンのローカル ストレージに存在する必要があります。

Note

Helm パッケージには、Helm 値のスキーマ、および AOSM へのオンボード時に使用する予定の values.yaml を使用して helm template が実行されるときに想定される Helm パッケージ テンプレートが含まれるようにすることを強くお勧めします。

コンテナー イメージ

  • コンテナー イメージが、既存の ACR、または Docker API をサポートする代替コンテナー レジストリのいずれかに存在します。 コンテナー イメージは、Helm チャートで定義されているイメージの場所と一致する構造内のソース レジストリに保存する必要があります。 この要件については、「CLI CNF イメージの検出とアップロード」で説明されています。
  • az aosm コマンドを実行する前に、docker login コマンドを使用して、コンテナー イメージをホストしている Azure 以外のコンテナー レジストリにサインインします。 ACR を使用している場合、この手順は必要ありません。Azure CLI AOSM 拡張機能は自動的にサインインします。

Helm と Docker エンジン

  • ホスト コンピューターに Helm CLI をインストールします。 Helm v3.8.0 以降を使用する必要があります。
  • ホスト コンピューターに Docker をインストールします。

Azure CLI のダウンロードとインストール

Azure CLI をローカルにインストールするには、「Azure CLI をインストールする方法」を参照してください。

Azure CLI にサインインするには、az login コマンドを使用し、ターミナルに表示されるプロンプトを完了して認証を完了します。 その他のサインイン オプションについては、「Azure CLI を使用してサインインする」を参照してください。

Note

Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。 Azure Cloud Shell で Bash 環境を使用することもできます。 詳細については、「Cloud Shell を開始する」を参照して Azure Cloud Shell で Bash 環境を使用してください。

AOSM CLI 拡張機能をインストールする

Az CLI AOSM 拡張機能には、Azure CLI のバージョン 2.54.0 以降が必要です。

  1. az version を実行し、インストールされているバージョンおよび依存ライブラリを表示します。
  2. az upgrade を実行し、Azure CLI の現在のバージョンにアップグレードします。

次のコマンドを使用して、AOSM CLI 拡張機能をインストールします。

az extension add --name aosm

ネットワーク機能定義のグループとバージョンをビルドする

この手順では、ネットワ機能定義のグループとバージョンを定義する AOSM リソースの BICEP テンプレートと成果物ストアを使用して、cnf-cli-output という名前のフォルダーを作業ディレクトリに作成します。 これらのリソースは最終的に、ネットワーク サービス設計に含まれます。

  1. CNF 用の Azure CLI AOSM 拡張機能の入力ファイルを生成します。

    az aosm nfd generate-config --definition-type cnf --output-file <filename.jsonc>
    
  2. 前の手順で生成した入力ファイルを開き、インライン コメントを使用して必要な値を入力します。 この例では、架空の Contoso CNF の Azure CLI AOSM 拡張機能の入力ファイルを示します。

    Note

    Azure CLI AOSM 拡張機能では、既定で入力 values.yaml に既定値なしで必要なパラメーターのみが公開されます。 expose_all_parameterstrue に設定して、ネットワーク機能定義バージョン (NFDV) と構成グループ スキーマ (CGS) 内のすべての Helm 値を公開できます。 詳細については、「AOSM CLI 拡張機能を使用したパラメーターの公開」を参照してください。

    {
      // 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. 次のコマンドを実行して、ネットワーク機能定義のグループとバージョンの BICEP テンプレートをビルドします。

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

フォルダーとファイルの構造を確認し、必要に応じて変更を加えることができます。

ネットワーク機能定義のグループとバージョンを発行する

この手順では、ネットワーク機能のコンテナー イメージの保存に使用されるネットワーク機能定義と成果物ストアを定義する AOSM リソースを作成します。 また、ソース ACR からイメージとチャートを直接コピーすることで、または、サブスクリプション スコープの Contributor および AcrPush ロールがない場合は、Docker イメージをローカルに再タグ付けし、AOSM サービスから生成された厳密にスコープされた資格情報を使用して成果物ストアにアップロードすることで、イメージとチャートを成果物ストアにアップロードします。

  1. 次のコマンドを実行して、ネットワーク機能定義のグループとバージョンを発行します。 サブスクリプション スコープの Contributor および AcrPush ロールがない場合は、コマンドに --no-subscription-permissions を含めます。

Note

Windows を使用している場合は、発行手順中に Docker デスクトップが実行されている必要があります。

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

ネットワーク サービス設計のグループとバージョンをビルドする

このセクションでは、nsd-cli-output という名前のフォルダーを作業ディレクトリに作成します。 このフォルダーには、ネットワーク サービス設計のグループとバージョンを定義する AOSM リソースの BICEP テンプレートが含まれます。 このネットワーク サービス設計は、前のセクションでオンボードしたネットワーク機能をデプロイするサイト ネットワーク サービス リソースで使用されるテンプレートです。

  1. Azure CLI AOSM 拡張機能の NSD 入力ファイルを生成します。

    az aosm nsd generate-config --output-file <nsd-output-filename.jsonc>
    
  2. 前の手順で生成した入力ファイルを開き、インライン コメントを使用して必要な値を入力します。 生成された入力ファイルには、ArmTemplate 型の追加の resource_element_typeが含まれます。 これは、CNF のオンボード時には不要であり、削除できます。 結果は、こちらの例のようになります。 この例では、Azure Arc に接続された Nexus Kubernetes クラスターに架空の Contoso CNF をデプロイするために使用できる架空の Contoso NSD の Azure CLI 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.
        // 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"
                }
            }
        ]
    }
    

    Note

    リソース要素テンプレート セクションでは、NSD に含める NFD を定義します。 プロパティは、az aosm nfd build コマンドに渡される入力ファイルで使用されているものと一致する必要があります。 これは、NSD をビルドする際に、Azure CLI AOSM 拡張機能によって NFD が正しくオンボードされたことが検証されるためです。

  3. 次のコマンドを実行して、ネットワーク サービス設計のグループとバージョンの BICEP テンプレートをビルドします。

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

フォルダーとファイルの構造を確認し、必要に応じて変更を加えることができます。

ネットワーク サービス設計のグループとバージョンを発行する

この手順では、ネットワーク サービス設計のグループとバージョンを定義する AOSM リソースを作成します。 また、NSD で必要な成果物を成果物ストア (ネットワーク機能 ARM テンプレート) にアップロードします。

  1. 次のコマンドを実行して、ネットワーク サービス設計のグループとバージョンを発行します。 サブスクリプション スコープの Contributor および AcrPush ロールがない場合は、コマンドに --no-subscription-permissions を含めます。
az aosm nsd publish --build-output-folder nsd-cli-output

これで、AOSM パブリッシャー リソースの完全なセットが完成し、オペレーター フローを実行する準備が整いました。

次のステップ