クイックスタート: コンテナー化ネットワーク機能 (CNF) として Nginx コンテナーを公開する

このクイック スタートでは、az aosm Azure CLI 拡張機能を使用して、基本的なネットワーク機能定義を作成して公開する方法について説明します。 その目的は、Publisher Azure Operator Service Manager (AOSM) リソースのワークフローを示すことです。 ここで説明する基本的な概念は、ユーザーがより優れたサービスを構築するための準備を目的としています。

前提条件

入力ファイルを作成する

ネットワーク機能定義を公開するための入力ファイルを作成します。 次のコマンドを実行して、ネットワーク機能定義 (NFD) の入力構成ファイルを生成します。

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

上記のコマンドを実行すると、icnf-input.jsonc ファイルが生成されます。

Note

cnf-input.jsonc ファイルを編集します。 次の例に示す値に置き換えます。 input-cnf-nfd.jsonc としてファイルを保存します。

既存のリソース グループを使用している場合は、それに合わせて publisher_resource_group_name フィールドを変更します。

ヒント

AOSM CLI では、イメージのソースとして複数のコンテナー レジストリを使用できます。 これらのレジストリからコピーされるイメージは、helm パッケージのスキーマに基づいて自動的に選択されます。 ソース レジストリは、cnf-input.jsonc ファイルの image_sources リストで構成されます。

ACR を使用している場合は、ACR の閲覧者ロールと AcrPull ロールが必要です。 ACR 以外のレジストリを使用している場合は、az aosm nfd build コマンドを実行する前に、docker login を実行して各プライベート レジストリで認証する必要があります。 このクイックスタートでは、イメージ ソース レジストリとして docker.io を使用します。 これはパブリック レジストリであり、認証は必要ありません。

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 - 定義の公開先となるパブリッシャー リソースの名前。 まだ存在していない場合は作成されます。
  • publisher_resource_group_name - パブリッシャー リソースのリソース グループ。 まだ存在していない場合は作成されます。
  • acr_artifact_store_name - Azure Container Registry (ACR) 成果物ストア リソースの名前。 まだ存在していない場合は作成されます。
  • location - リソースの作成時に使用する Azure の場所。
  • nf_name - NF 定義の名前。
  • version - A.B.C 形式の NF 定義のバージョン。
  • image_sources - イメージのプル元となるレジストリの一覧。
  • helm_packages:
    • name - Helm パッケージの名前。
    • path_to_chart - ローカル ディスク上の Helm chart のファイル パス。 .tgz、.tar、または .tar.gz を受け入れます。 Windows で実行する場合でも、Linux スラッシュ (/) のファイル区切り記号を使用します。 このパスは、絶対パス、または cnf-input.jsonc ファイルの場所を基準とした相対パスにする必要があります。
    • default_values - helm チャートに存在する values.yaml ファイルの代わりに使用される、ローカル ディスク上の YAML 値ファイルのファイル パス (絶対パスまたは cnf-input.jsonc に対する相対パス)。
    • depends_on - このパッケージが依存する Helm パッケージの名前。 依存関係がない場合は、空の配列のままにします。

ネットワーク機能定義 (NFD) をビルドする

ネットワーク機能定義 (NFD) を構築するには、ビルド プロセスを開始します。

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

Az CLI AOSM 拡張機能は、cnf-cli-output という名前のディレクトリを生成します。 このディレクトリには、NFDV を発行し、それを AOSM 管理のストレージにデプロイするのに必要なイメージをアップロードするために必要な AOSM リソースを定義する BICEP ファイルが含まれています。 生成されたファイルを調べて、ネットワーク機能定義 (NFD) 構造について理解を深めます。

ディレクトリ/ファイル 説明
nfDefinition/deployParameters.json このネットワーク機能定義バージョン (NFDV) からネットワーク機能 (NF) を作成するために必要なデプロイ パラメーターのスキーマを定義します。
nfDefinition/nginxdemo-mappings.json ネットワーク機能定義バージョン (NFDV) のデプロイ パラメーターを、Helm chart に必要な値にマップします。
nfDefinition/deploy.bicep ネットワーク機能定義バージョン (NFDV) 自体を作成するための Bicep テンプレート。
artifacts/artifacts.json NF に必要な Helm パッケージとコンテナー イメージの一覧。
artifactManifest/deploy.bicep 成果物マニフェストを作成するための Bicep テンプレート。
base/deploy.bicep パブリッシャー、ネットワーク機能定義グループ、および成果物ストア リソースを作成するための Bicep テンプレート

ネットワーク機能定義を公開して成果物をアップロードする

ネットワーク機能定義 (NFD) を公開して関連する成果物をアップロードするには、次のコマンドを実行します。

Note

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

Note

公開元名は、リージョン内で一意である必要があります。 構成ファイルの例で定義されている 'nginx-publisher' が既に存在している可能性が高いです。

"'nginx-publisher' という名前のプライベートの公開元リソースは、指定されたリージョンに既に存在します" という内容のエラーが発生した場合は、構成ファイル内の publisher_name フィールドを一意になるように編集し (たとえば、ランダムな文字列サフィックスを追加する)、build コマンド (上記) を再実行してから、この publish コマンドを再実行します。

続けてネットワーク サービス設計を作成する場合は、resource_element_templates 配列でこの新しい公開元名を使用する必要があります。

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

コマンドが完了したら、Publisher リソース グループ内のリソースを調べて、作成されたコンポーネントと成果物を確認します。

次のステップ