クイックスタート: Operator とコンテナー化ネットワーク機能 (CNF) の前提条件
このクイック スタートには、Operator とコンテナー化されたネットワーク機能 (CNF) の前提条件タスクが含まれています。 NSD (ネットワーク サービス定義) 内でこれらのタスクを自動化することは可能ですが、このクイック スタートでは、手動でアクションを実行します。
Note
この記事で説明するタスクの完了には時間がかかる場合があります。
アクセス許可
"共同作成者" ロールと "ユーザー アクセス管理者" ロールを持っている既存のリソース グループが含まれている Azure サブスクリプションが必要です。
または、AOSM CLI 拡張機能でリソース グループを作成することもできます。その場合、このサブスクリプションに対する "共同作成者" ロールが必要になります。 この機能を使用する場合は、新しく作成されたこのリソース グループのスコープを持つ "ユーザー アクセス管理者" ロールをユーザーに追加する必要があります。
また、ネットワーク機能定義の発行元リソース グループに対する "ユーザー アクセス管理者" ロールも必要です。 ネットワーク機能定義の発行元リソース グループは、「クイック スタート: コンテナー化ネットワーク機能 (CNF) として Nginx コンテナーを公開する」で使用されています。 input-cnf-nfd.jsonc ファイルでリソース グループ名を確認します。
環境変数を設定する
必要に応じて、環境変数の設定と参照を特定の環境に合わせて調整します。 たとえば、Windows PowerShell では、環境変数を次のように設定します。
$env:ARC_RG="<my rg>"
環境変数を使用するには、それを $env:ARC_RG
として参照します。
export resourceGroup=operator-rg
export location=<region>
export clusterName=<replace with clustername>
export customlocationId=${clusterName}-custom-location
export extensionId=${clusterName}-extension
リソース グループの作成
Azure Kubernetes Service (AKS) クラスターをホスティングするリソース グループを作成します。 これは、後のガイドでオペレーター リソースが作成される場所でもあります。
az account set --subscription <subscription>
az group create -n ${resourceGroup} -l ${location}
Azure Kubernetes Service (AKS) クラスターをプロビジョニングする
az aks create -g ${resourceGroup} -n ${clusterName} --node-count 3 --generate-ssh-keys
Enable Azure Arc (Azure Arc を有効にする)
Azure Kubernetes Service (AKS) クラスター用の Azure Arc を有効にします。 以下のコマンドを実行するだけで十分です。 詳細については、「Azure Arc 対応 Kubernetes にカスタムの場所を作成および管理する」を参照してください。
AKS クラスターの構成ファイルを取得する
az aks get-credentials --resource-group ${resourceGroup} --name ${clusterName}
接続されているクラスターを作成する
クラスターを作成します。
az connectedk8s connect --name ${clusterName} --resource-group ${resourceGroup}
サブスクリプションを登録する
サブスクリプションを Microsoft.ExtendedLocation リソース プロバイダーに登録します。
az provider register --namespace Microsoft.ExtendedLocation
カスタムの場所を有効にする
クラスターでカスタムの場所を有効にします。
az connectedk8s enable-features -n ${clusterName} -g ${resourceGroup} --features cluster-connect custom-locations
クラスターの接続
クラスターを接続します。
az connectedk8s connect --name ${clusterName} -g ${resourceGroup} --location $location
拡張機能を作成
拡張機能を作成します。
az k8s-extension create -g ${resourceGroup} --cluster-name ${clusterName} --cluster-type connectedClusters --name ${extensionId} --extension-type microsoft.azure.hybridnetwork --release-train preview --scope cluster
カスタムの場所を作成する
カスタムの場所を作成します。
export ConnectedClusterResourceId=$(az connectedk8s show --resource-group ${resourceGroup} --name ${clusterName} --query id -o tsv)
export ClusterExtensionResourceId=$(az k8s-extension show -c $clusterName -n $extensionId -t connectedClusters -g ${resourceGroup} --query id -o tsv)
az customlocation create -g ${resourceGroup} -n ${customlocationId} --namespace "azurehybridnetwork" --host-resource-id $ConnectedClusterResourceId --cluster-extension-ids $ClusterExtensionResourceId
カスタムの場所の値を取得する
カスタムの場所の値を取得する サイト ネットワーク サービス (SNS) の構成グループの値を入力するために、この情報が必要です。
Azure portal でカスタムの場所 (customLocationId) の名前を検索し、[プロパティ] を選択します。 [Essentials] 情報領域で完全なリソース ID を見つけて、フィールド名の ID を探します。 次の図は、リソース ID 情報が配置されている場所の例を示しています。
ヒント
完全なリソース ID の形式は、/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/microsoft.extendedlocation/customlocations/{customLocationName} です
サイト ネットワーク サービスのユーザー割り当てマネージド ID を作成する
次の Bicep スクリプトを prerequisites.bicep としてローカルに保存します。
param location string = resourceGroup().location param identityName string = 'identity-for-nginx-sns' resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = { name: identityName location: location } output managedIdentityId string = managedIdentity.id
次のコマンドを発行して、ユーザー割り当てマネージド ID のデプロイを開始します。
az deployment group create --name prerequisites --resource-group ${resourceGroup} --template-file prerequisites.bicep
スクリプトにより、マネージド ID が作成されます。
マネージド ID のリソース ID を取得する
次のコマンドを実行して、作成したマネージド ID のリソース ID を見つけます。
az deployment group list -g ${resourceGroup} | jq -r --arg Deployment prerequisites '.[] | select(.name == $Deployment).properties.outputs.managedIdentityId.value'
出力 (リソース ID) をコピーして保存します。 この出力は、サイト ネットワーク サービスを作成するときに必要になります。
サイト ネットワーク サービス (SNS) のアクセス許可を更新する
これらのタスクを実行するには、Operator とネットワーク機能定義発行元リソース グループの両方で、"所有者" または "ユーザー アクセス管理者" のロールが必要です。 Operator のリソース グループは前のタスクで作成しました。 ネットワーク機能定義の発行元リソース グループは、「クイック スタート: コンテナー化されたネットワーク機能 (CNF) として Nginx コンテナーを公開する」で作成され、input.json ファイルで nginx-publisher-rg という名前が付けられています。
前の手順では、参照リソース グループ内に identity-for-nginx-sns とラベル付けされたマネージド ID を作成しました。 この ID は、サイト ネットワーク サービス (SNS) をデプロイする上で重要な役割を果たします。 次のセクションの手順に従って、発行元リソース グループに対する "共同作成者" ロールと、それ自体に対するマネージド ID オペレーター ロールを付与します。 この ID を通じて、サイト ネットワーク サービス (SNS) は必要なアクセス許可を取得します。
発行元リソース グループに対する共同作成者ロールをマネージド ID に付与する
Azure portal にアクセスし、ネットワーク機能定義の発行時に作成された発行元リソース グループを開きます。
リソース グループのサイドバー メニューで、[アクセス制御 (IAM)] を選びます。
[ロールの割り当ての追加] を選択します。
[特権管理者ロール] カテゴリーで、[共同作成者] を選択し、[次へ] で進みます。
[マネージド ID] を選択します。
[+ メンバーの選択] を選び、ユーザー割り当てマネージド ID identity-for-nginx-sns を見つけて選択します。
カスタムの場所に対する共同作成者ロールをマネージド ID に付与する
Azure portal にアクセスし、オペレーター リソース グループ (operator-rg) を開きます。
リソース グループのサイドバー メニューで、[アクセス制御 (IAM)] を選びます。
[ロールの割り当ての追加] を選択します。
[特権管理者ロール] カテゴリーで、[共同作成者] を選択し、[次へ] で進みます。
[マネージド ID] を選択します。
[+ メンバーの選択] を選び、ユーザー割り当てマネージド ID identity-for-nginx-sns を見つけて選択します。
マネージド ID 自体にオペレーター ロールを付与する
Azure portal に移動し、マネージド ID を検索します。
マネージド ID の一覧から [identity-for-nginx-sns] を選択します。
サイド メニューで、[アクセス制御 (IAM)] を選択します。
[ロールの割り当ての追加] を選択します。
[マネージド ID オペレーター] ロールを選択し、[次へ] で進みます。
[マネージド ID] を選択します。
[+ メンバーの選択] を選択し、identity-for-nginx-sns という名前のユーザー割り当てマネージド ID に移動し、割り当てを続行します。
[確認と作成] を選択します。
この記事で説明されているすべてのタスクを完了すると、サイト ネットワーク サービス (SNS) に、指定した Azure 環境内で効果的に機能するために必要なアクセス許可が付与されます。