クイックスタート: コンテナー化ネットワーク機能 (CNF) として Nginx コンテナーを公開する
このクイック スタートでは、az aosm
Azure CLI 拡張機能を使用して、基本的なネットワーク機能定義を作成して公開する方法について説明します。 その目的は、Publisher Azure Operator Service Manager (AOSM) リソースのワークフローを示すことです。 ここで説明する基本的な概念は、ユーザーがより優れたサービスを構築するための準備を目的としています。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウントが必要です。 Azure サブスクリプションをお持ちでない場合は、開始する前に、こちらの「無料で始める」の手順に従ってアカウントを作成してください。
「クイック スタート: Azure Operator Service Manager にコンテナー化ワーク機能をデプロイするための前提条件を満たす」を済ませます。
AOSM CLI 拡張機能でリソース グループを作成できるようにするための、投稿者ロールがある既存のリソース グループ、またはこのサブスクリプションに対する投稿者ロール。
入力ファイルを作成する
ネットワーク機能定義を公開するための入力ファイルを作成します。 次のコマンドを実行して、ネットワーク機能定義 (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 リソース グループ内のリソースを調べて、作成されたコンポーネントと成果物を確認します。