このハウツー ガイドでは、ネットワーク関数パブリッシャーとサービス デザイナーが Azure CLI AOSM 拡張機能を使用して、コンテナー化されたネットワーク関数を AOSM にオンボードする方法について説明します。 CNF は、後で Azure Operator Nexus クラスターを含む、Azure Arc に接続された Kubernetes クラスターにデプロイできます。
オンボーディングは複数ステップのプロセスです。 前提条件を満たしたら、Azure CLI AOSM 拡張機能を使用して次の処理を行います。
- Helm チャートと values.yaml に基づいてネットワーク関数定義グループとバージョン (NFD) を定義する Bicep ファイルを生成します。
- NFD を発行し、CNF イメージとグラフをアーティファクト ストア (AOSM で管理される Azure Container Registry (ACR)) にアップロードします。
- 公開された NFD を、ネットワーク サービス デザイン グループとバージョン (NSD) を定義する Bicep ファイルに追加します。
- NSD を発行します。
[前提条件]
- Azure サブスクリプションで AOSM が有効になっています。
- CNF が Azure Operator Nexus 上で実行されることを意図している場合は、Azure Operator Nexus インスタンスにアクセスでき、 ワークロードのデプロイの前提条件が満たされています。
注
ターゲットの Arc に接続された Kubernetes 環境で Helm パッケージの helm install
が成功することをテストすることを強くお勧めします。
アクセス許可を構成する
- リソース グループまたは共同作成者ロールを持つ既存のリソース グループを作成するには、サブスクリプションに対する共同作成者ロールが必要です。
- イメージを含むソース ACR で
Reader
/AcrPull
ロールの割り当てが必要です。 - AOSM マネージド アーティファクト ストアを含むサブスクリプションに対して、
Contributor
ロールとAcrPush
ロールの割り当てが必要です。 これらのアクセス許可により、Azure CLI AOSM 拡張機能は ACR から ACR への直接コピーを実行できます。 直接コピーは、ある ACR から別の ACR に画像を転送する最速の方法です。- 会社のポリシーによって、サブスクリプションスコープのアクセス許可を持てなくなることがあるかもしれません。
--no-subscription-permissions
コマンドとaz aosm nfd publish
コマンドで使用できるaz aosm nsd publish
パラメーターは、AOSM サービスから派生した厳密なスコープのアクセス許可を使用して、ローカル コンピューターとの間で2段階コピーを調整します。 この2段階のコピーは遅いですが、サブスクリプション範囲のアクセス許可は必要ありません。
- 会社のポリシーによって、サブスクリプションスコープのアクセス許可を持てなくなることがあるかもしれません。
Helm パッケージ
- オンボードする予定の Helm パッケージは、CLI を実行するマシンのローカル ストレージに存在する必要があります。
- Azure CLI AOSM 拡張機能では、既定で helm パッケージ内の
values.yaml
ファイルが使用されます。 CLI では、代替のvalues.yaml
を使用してこの動作をオーバーライドできます。 この代替ファイルは、CLI を実行するコンピューターのローカル ストレージに存在する必要があります。
- Azure CLI AOSM 拡張機能では、既定で helm パッケージ内の
注
Helm パッケージに Helm 値のスキーマを含めること、および AOSM へのオンボード時に使用する予定の values.yaml を使用して helm template
が実行されるときに想定される Helm パッケージ テンプレートを含めることを強くお勧めします。
コンテナー イメージ
- コンテナー イメージは、既存の ACR または Docker API をサポートする代替コンテナー レジストリのいずれかに存在します。 コンテナー イメージは、Helm チャートで定義されているイメージの場所と一致する構造でソース レジストリに格納する必要があります。 この要件は、 CLI CNF イメージの検出とアップロードで説明されています。
-
docker login
コマンドを実行する前に、az aosm
コマンドを使用して、コンテナー イメージをホストしている Azure 以外のコンテナー レジストリにサインインします。 ACR を使用している場合、この手順は必要ありません。Azure CLI AOSM 拡張機能は自動的にサインインします。
Helm と Docker エンジン
Azure CLI のダウンロードとインストール
Azure CLI をローカルにインストールするには、「Azure CLI をインストールする方法」をご覧ください。
Azure CLI にサインインするには、az login
コマンドを使用し、ターミナルに表示されるプロンプトを完了して認証を完了します。 その他のサインイン オプションについては、「Azure CLI を使用してサインインする」を参照してください。
注
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 以降が必要です。
-
az version
を実行し、インストールされているバージョンおよび依存ライブラリを表示します。 -
az upgrade
を実行し、Azure CLI の現在のバージョンにアップグレードします。
次のコマンドを使用して、AOSM CLI 拡張機能をインストールします。
az extension add --name aosm
ネットワーク関数定義グループとバージョンをビルドする
この手順では、ネットワーク関数定義グループとバージョンを定義する AOSM リソースの Bicep ファイルとアーティファクト ストアを使用して、 cnf-cli-output
という名前の作業ディレクトリにフォルダーを作成します。 これらのリソースは最終的にネットワーク サービス設計に含まれます。
CNF の Azure CLI AOSM 拡張機能入力ファイルを生成します。
az aosm nfd generate-config --definition-type cnf --output-file <filename.jsonc>
前の手順で生成した入力ファイルを開き、インライン コメントを使用して必要な値を入力します。 この例では、架空の Contoso CNF の Az CLI AOSM 拡張入力ファイルを示します。
注
Azure CLI AOSM 拡張機能では、既定で入力
values.yaml
に既定値なしで必要なパラメーターのみが公開されます。expose_all_parameters
をtrue
に設定して、ネットワーク関数定義バージョン (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": "", } ] }
次のコマンドを実行して、ネットワーク関数定義グループとバージョン Bicep ファイルをビルドします。
az aosm nfd build --definition-type cnf --config-file <filename.jsonc>
フォルダーとファイルの構造を確認し、必要に応じて変更を加えることができます。
ネットワーク関数定義グループとバージョンを公開する
この手順では、ネットワーク関数の定義を定義する AOSM リソースと、ネットワーク関数のコンテナー イメージの格納に使用される成果物ストアを作成します。 また、ソース ACR から直接コピーするか、サブスクリプション スコープの Contributor
と AcrPush
ロールがない場合は、Docker イメージをローカルに再タグ付けし、AOSM サービスから生成された厳密にスコープされた資格情報を使用してアーティファクト ストアにアップロードすることで、イメージとグラフをアーティファクト ストアにアップロードします。
- 次のコマンドを実行して、ネットワーク関数定義グループとバージョンを発行します。 サブスクリプション スコープの
Contributor
ロールとAcrPush
ロールがない場合は、コマンドに--no-subscription-permissions
を含めます。
注
Windows を使用している場合は、発行手順中に Docker デスクトップが実行されている必要があります。
az aosm nfd publish --build-output-folder cnf-cli-output --definition-type cnf
ネットワーク サービス デザイン グループとバージョンを構築する
このセクションでは、 nsd-cli-output
という名前の作業ディレクトリにフォルダーを作成します。 このフォルダーには、ネットワーク サービス デザイン グループとバージョンを定義する AOSM リソースの Bicep ファイルが含まれています。 このネットワーク サービス設計は、前のセクションでオンボードしたネットワーク関数をデプロイする Site Network Service リソースで使用されるテンプレートです。
Azure CLI AOSM 拡張機能 NSD 入力ファイルを生成します。
az aosm nsd generate-config --output-file <nsd-output-filename.jsonc>
前の手順で生成した入力ファイルを開き、インライン コメントを使用して必要な値を入力します。 生成された入力ファイルには、
resource_element_type
型の追加のArmTemplate
が含まれています。 これは、CNF をオンボードするときに不要です。削除できます。 結果は、こちらの例のようになります。 この例では、架空の Contoso CNF を Arc に接続された Nexus Kubernetes クラスターにデプロイするために使用できる架空の Contoso NSD の Az 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" } } ] }
注
リソース要素テンプレート セクションでは、NSD に含める NFD を定義します。 プロパティは、
az aosm nfd build
コマンドに渡された入力ファイルで使用されているものと一致する必要があります。 これは、NSD をビルドするときに、Azure CLI AOSM 拡張機能によって NFD が正しくオンボードされたことが検証されるためです。次のコマンドを実行して、Network Service Design Group ファイルとバージョン Bicep ファイルをビルドします。
az aosm nsd build --config-file <nsd-output-filename.jsonc>
フォルダーとファイルの構造を確認し、必要に応じて変更を加えることができます。
ネットワーク サービス デザイン グループとバージョンを公開する
この手順では、ネットワーク サービス デザイン グループとバージョンを定義する AOSM リソースを作成します。 また、NSD で必要な成果物をアーティファクト ストア (ネットワーク関数 ARM テンプレート) にアップロードします。
- 次のコマンドを実行して、ネットワーク サービス デザイン グループとバージョンを発行します。 サブスクリプション スコープの
Contributor
ロールとAcrPush
ロールがない場合は、コマンドに--no-subscription-permissions
を含めます。
az aosm nsd publish --build-output-folder nsd-cli-output
これで、AOSM パブリッシャー リソースの完全なセットが完成し、オペレーター フローを実行する準備が整いました。