この記事では、カスタム仮想ネットワーク (VNet) でノード自動プロビジョニング (NAP) が有効になっているAzure Kubernetes Service (AKS) クラスターを作成する方法について説明します。 VNet とサブネットを作成し、マネージド ID に VNet へのアクセス権を付与します。
[前提条件]
- Azure サブスクリプション。 アカウントがない場合は、無料アカウントを作成することができます。
- Azure CLI バージョン
2.76.0以降。 バージョンを見つけるには、az --versionを実行します。 Azure CLI のインストールまたはアップグレードの詳細については、「Azure CLI のインストール」を参照してください。 -
Azure Cloud Shellなどの Bash 環境。 コマンドをローカルで実行する場合は、
az loginコマンドを使用してサインインします。 - Kubernetes コマンド ライン クライアント、
kubectl。kubectlは既にAzure Cloud Shellにインストールされています。 ローカルにインストールするには、az aks install-cliコマンドを使用します。 -
Microsoft.Authorization/roleAssignments/writeアクセス許可 (ネットワーク共同作成者ロールを割り当てるためのロール ベースAccess Control管理者ロールなど)。 - AKS のノード自動プロビジョニング (NAP) の概要と、Azure Kubernetes Service (AKS)のノード自動プロビジョニング (NAP) のネットワーク構成の概要に関するページで説明されている概念に関する知識。
制限事項
- カスタム仮想ネットワーク (VNet) で NAP クラスターを作成する場合は、 Standard Load Balancer を使用する必要があります。 Basic Load Balancer はサポートされていません。
- NAP のその他の制限事項とサポートされていない機能を確認するには、 AKS のノード自動プロビジョニング (NAP) の概要に関する記事を 参照してください。
環境変数を設定し、リソース グループを作成する
この記事全体で使用する環境変数を設定します。 プレースホルダーの値をあなた自身の値に置き換えてください。
export SUBSCRIPTION_ID="<subscription-id>" export RG_NAME="<resource-group-name>" export LOCATION="<location>" export VNET_NAME="<vnet-name>" export SUBNET_NAME="<subnet-name>" export IDENTITY_NAME="<managed-identity-name>" export CLUSTER_NAME="<cluster-name>"az account setコマンドを使用して、Azure サブスクリプションを選択します。az account set --subscription $SUBSCRIPTION_IDaz group createコマンドを使用して、リソース グループを作成します。az group create \ --name $RG_NAME \ --location $LOCATION
仮想ネットワークとサブネットを作成する
az network vnet createコマンドを使用して VNet を作成します。az network vnet create \ --name $VNET_NAME \ --resource-group $RG_NAME \ --location $LOCATION \ --address-prefixes 172.19.0.0/16az network vnet subnet createコマンドを使用してノード サブネットを作成します。az network vnet subnet create \ --resource-group $RG_NAME \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --address-prefixes 172.19.0.0/24
マネージド ID を作成し、VNet のアクセス許可を割り当てる
az identity createコマンドを使用して、マネージド ID を作成します。az identity create \ --resource-group $RG_NAME \ --name $IDENTITY_NAME \ --location $LOCATIONaz identity showコマンドを使用して、マネージド ID のプリンシパル ID を取得し、環境変数に保存します。IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group $RG_NAME --name $IDENTITY_NAME --query principalId -o tsv)az role assignment createコマンドを使用して、マネージド ID にネットワーク共同作成者ロールを割り当てます。--assignee-principal-typeパラメーターは、マネージド ID を作成した後のレプリケーションの遅延によって発生するエラーを防ぎます。Important
VNet スコープのネットワーク共同作成者ロールは、広範なアクセス許可を付与します。 運用環境でこの方法を使用する前に、 カスタム サブネット構成の RBAC 設定 を確認し、スコープ付きサブネットのアクセス許可を割り当てることを検討してください。
az role assignment create \ --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME" \ --role "Network Contributor" \ --assignee-object-id $IDENTITY_PRINCIPAL_ID \ --assignee-principal-type ServicePrincipal
NAP を有効にしてクラスターに接続する
前のセクションで作成したマネージド ID、VNet、およびノード サブネットを使用します。 クラスターでは、「制限事項」の説明に従って、Standard Load Balancerを使用する必要があります。
az aks createコマンドを使用して、カスタム VNet で NAP が有効になっている AKS クラスターを作成します。 次の表では、コマンドで使用される NAP およびネットワーク パラメーターについて説明します。パラメーター 値 Description --node-provisioning-modeAutoクラスターで NAP を有効にします。 --network-pluginazureクラスター ネットワークAzure CNI を使用します。 --network-plugin-modeoverlayポッド ネットワークAzure CNI オーバーレイを使用します。 --network-dataplaneciliumCilium データ プレーンを使用します。 詳細については、Azure Kubernetes Service (AKS)のノード自動プロビジョニング (NAP) のネットワーク構成の概要を参照してください。
az aks create \ --name $CLUSTER_NAME \ --resource-group $RG_NAME \ --location $LOCATION \ --assign-identity "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$IDENTITY_NAME" \ --network-dataplane cilium \ --network-plugin azure \ --network-plugin-mode overlay \ --vnet-subnet-id "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME" \ --node-provisioning-mode Auto \ --generate-ssh-keysクラスターの作成が完了すると、コマンドはクラスターに関する JSON 形式の情報を返します。
kubectlコマンドを使用して、Kubernetes クラスターに接続するようにaz aks get-credentialsを構成します。 このコマンドは、資格情報をダウンロードし、それを使用するように Kubernetes CLI を構成します。az aks get-credentials \ --resource-group $RG_NAME \ --name $CLUSTER_NAMEkubectl getコマンドを使用して、ご利用のクラスターへの接続を確認します。 このコマンドでは、クラスター ノードの一覧が返されます。kubectl get nodes
次のステップ
AKS でのノード自動プロビジョニングの詳細については、次の記事を参照してください。