次の方法で共有


API Server VNet 統合を使用して Azure Kubernetes Service クラスターを作成する

API サーバー VNet 統合を使用して構成された Azure Kubernetes Service (AKS) クラスターは、API サーバー エンドポイントを、AKS がデプロイされている VNet 内の委任されたサブネットに直接投影します。 API サーバー VNet 統合により、プライベート リンクやトンネルなしで、API サーバーとクラスター ノード間のネットワーク通信が可能になります。 API サーバーは、委任されたサブネット内の内部ロード バランサー VIP の内部で使用できます。ノードは、これを使用するように構成されます。 API サーバー VNet 統合を使用することにより、API サーバーとノード プールの間のネットワーク トラフィックがプライベート ネットワークにのみとどまるようにすることができます。

API サーバーの接続

コントロール プレーンまたは API サーバーは、AKS で管理された Azure サブスクリプションに含まれています。 クラスターまたはノード プールは Azure サブスクリプションに含まれています。 クラスター ノードを構成するサーバーと仮想マシンは、委任されたサブネットに投影される API サーバー VIP とポッド IP を介して相互に通信できます。

API サーバー VNet 統合はパブリック クラスターとプライベート クラスターでサポートされています。 パブリック アクセスはクラスター プロビジョニング後に追加または削除できます。 VNet 統合でないクラスターとは異なり、エージェント ノードは常に、DNS を使用せずに API サーバー内部ロード バランサー (ILB) IP のプライベート IP アドレスを使用して直接通信します。 ノードから API サーバーへのトラフィックはすべてプライベート ネットワークに保持され、API サーバーからノードへの接続にトンネルは必要ありません。 API サーバーと通信する必要があるクラスター外クライアントは、通常パブリック ネットワーク アクセスが有効になっていればそれを行うことができます。 パブリック ネットワーク アクセスが無効になっている場合は、標準のプライベート クラスターと同じプライベート DNS セットアップ手法に従う必要があります。

前提条件

  • Azure CLI バージョン 2.73.0 以降がインストールされている必要があります。 az --version コマンドを使用して、バージョンを確認できます。

制限事項

  • API Server VNet 統合では、暗号化された仮想ネットワークはサポートされていません。

可用性

  • API Server VNet 統合は、eastus2 とカタールセントラルを除くすべての GA パブリック クラウド リージョンで使用できます。 これらのリージョンでこの機能の有効化に継続的に取り組んでおり、これらのリージョンが利用可能になると、このページが更新されます。

マネージド VNet を使用する API サーバー VNet 統合を備えた AKS クラスターを作成する

API サーバー VNet 統合を備えた AKS クラスターは、マネージド VNet モードまたは bring-your-own VNet モードで構成できます。 これらはパブリック クラスター (API サーバーにはパブリック IP 経由でアクセス可能) またはプライベート クラスター (API サーバーにはプライベート VNet 接続経由でのみアクセス可能) として作成できます。 クラスターを再デプロイせずに、パブリック状態とプライベート状態を切り替えることもできます。

リソース グループを作成する

  • az group create コマンドを使用して、リソース グループを作成します。

    az group create --___location westus2 --name <resource-group>
    

パブリック クラスターをデプロイする

  • az aks create フラグを指定した --enable-api-server-vnet-integration コマンドを使用して、マネージド VNet 用の API サーバー VNet 統合を備えたパブリック AKS クラスターをデプロイします。

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --___location <___location> \
        --network-plugin azure \
        --enable-apiserver-vnet-integration \
        --generate-ssh-keys
    

プライベート クラスターをデプロイする

  • az aks create--enable-api-server-vnet-integration フラグを指定した --enable-private-cluster コマンドを使用して、マネージド VNet 用の API サーバー VNet 統合を備えたプライベート AKS クラスターをデプロイします。

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --___location <___location> \
        --network-plugin azure \
        --enable-private-cluster \
        --enable-apiserver-vnet-integration \
        --generate-ssh-keys
    

bring-your-own VNet を使用する API サーバー VNet 統合を備えたプライベート AKS クラスターを作成する

bring-your-own VNet を使用する場合は、API サーバー サブネットを作成して Microsoft.ContainerService/managedClusters に委任する必要があります。これにより、AKS サービスに API サーバー ポッドと内部ロード バランサーをそのサブネットに挿入するアクセス許可が付与されます。 このサブネットは他のワークロードには使用できませんが、同じ仮想ネットワーク内にある複数の AKS クラスターに対して使用できます。 サポートされる API サーバーのサブネットの最小サイズは /28 です。

クラスター ID には、API サーバー サブネットとノード サブネットの両方に対するアクセス許可が必要です。 API サーバー サブネットへのアクセス許可がない場合、プロビジョニング エラーが発生します。

警告

AKS クラスターによって、サブネットのアドレス空間に少なくとも 9 つの IP が予約されます。 IP アドレスが不足すると、API サーバーのスケーリングが妨げられ、API サーバーが停止する可能性があります。

リソース グループを作成する

  • az group create コマンドを使用して、リソース グループを作成します。
az group create --___location <___location> --name <resource-group>

仮想ネットワークの作成

  1. az network vnet create コマンドを使用して、仮想ネットワークを作成します。

    az network vnet create --name <vnet-name> \
    --resource-group <resource-group> \
    --___location <___location> \
    --address-prefixes 172.19.0.0/16
    
  2. az network vnet subnet create コマンドを使用して API サーバー サブネットを作成します。

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <apiserver-subnet-name> \
    --delegations Microsoft.ContainerService/managedClusters \
    --address-prefixes 172.19.0.0/28
    
  3. az network vnet subnet create コマンドを使用してクラスター サブネットを作成します。

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <cluster-subnet-name> \
    --address-prefixes 172.19.1.0/24
    

マネージド ID を作成し、仮想ネットワークに対するアクセス許可を付与する

  1. az identity create コマンドを使用して、マネージド ID を作成します。

    az identity create --resource-group <resource-group> --name <managed-identity-name> --___location <___location>
    
  2. az role assignment create コマンドを使用して、API サーバー サブネットにネットワーク共同作成者ロールを割り当てます。

    az role assignment create --scope <apiserver-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    
  3. az role assignment create コマンドを使用して、クラスター サブネットにネットワーク共同作成者ロールを割り当てます。

    az role assignment create --scope <cluster-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    

パブリック クラスターをデプロイする

  • az aks create フラグを指定した --enable-api-server-vnet-integration コマンドを使用して、API サーバー VNet 統合を備えたパブリック AKS クラスターをデプロイします。

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --___location <___location> \
        --network-plugin azure \
        --enable-apiserver-vnet-integration \
        --vnet-subnet-id <cluster-subnet-resource-id> \
        --apiserver-subnet-id <apiserver-subnet-resource-id> \
        --assign-identity <managed-identity-resource-id> \
        --generate-ssh-keys
    

プライベート クラスターをデプロイする

  • az aks create--enable-api-server-vnet-integration フラグを指定した --enable-private-cluster コマンドを使用して、API サーバー VNet 統合を備えたプライベート AKS クラスターをデプロイします。

    az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --___location <___location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys
    

既存の AKS クラスターを API サーバー VNet 統合に変換する

警告

API Server VNet 統合は、容量に依存する一方向の機能です。

  • 手動で再起動する必要があります。
    az aks update --enable-apiserver-vnet-integrationを使用して API Server VNet 統合を有効にした後、変更を有効にするには、すぐにクラスターを再起動する必要があります。 この再起動は自動化されません。 再起動を遅らせると、容量が使用できなくなるリスクが高まり、API サーバーが起動できなくなる可能性があります。

  • 容量は検証されますが、予約されていません。
    既存のクラスターで機能を有効にすると、AKS によってリージョンの容量が検証されますが、この検証では容量は予約されません。 再起動が遅れ、その間に容量が使用できなくなった場合、停止または再起動後にクラスターの起動に失敗する可能性があります。 一般提供 (GA) の前にこの機能を有効にしたクラスター、または有効化後にまだ再起動されていないクラスターでは、容量の検証は行われません。

  • 機能を無効にすることはできません。
    有効にすると、この機能は永続的になります。 API Server VNet 統合を無効にすることはできません。

このアップグレードは、すべてのノード プール上でノードイメージ バージョンのアップグレードを実行し、ローリング イメージ アップグレードが行われている間に、すべてのワークロードを再起動します。

警告

クラスターを API サーバー VNet 統合に変換すると API サーバー IP アドレスが変更されますが、ホスト名は変わりません。 API サーバーの IP アドレスがファイアウォールまたはネットワーク セキュリティ グループ規則で構成されている場合は、それらの規則の更新が必要になる可能性があります。

  • az aks update フラグを指定した --enable-apiserver-vnet-integration コマンドを使用して、クラスターを API サーバー VNet 統合に更新します。

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-apiserver-vnet-integration \
    --apiserver-subnet-id <apiserver-subnet-resource-id>
    

API サーバー VNet 統合を使用して既存のクラスターでプライベート クラスター モードを有効または無効にする

API サーバー VNet 統合を使用して構成された AKS クラスターでは、クラスターを再デプロイせずにパブリック ネットワーク アクセス/プライベート クラスター モードを有効または無効にすることができます。 API サーバーのホスト名は変更されませんが、パブリック DNS エントリは必要に応じて変更または削除されます。

--disable-private-cluster は現在プレビューの段階です。 詳細については、「リファレンス レベルとサポート レベル」を参照してください。

プライベート クラスター モードを有効にする

  • az aks update フラグを指定した --enable-private-cluster コマンドを使用して、プライベート クラスター モードを有効にします。

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-private-cluster
    

プライベート クラスター モードを無効にする

  • az aks update フラグを指定した --disable-private-cluster コマンドを使用して、プライベート クラスター モードを無効にします。

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --disable-private-cluster
    

kubectl を使用したクラスターへの接続

  • kubectl コマンドを使用して、クラスターに接続するように az aks get-credentials を構成します。

    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    

Azure Private Link を使用して、API Server VNet 統合を使用してプライベート クラスターの API サーバー エンドポイントを公開できます。 次の手順では、クラスター VNet に Private Link サービス (PLS) を作成し、プライベート エンドポイントを使用して別の VNet またはサブスクリプションから接続する方法を示します。

API Server VNet 統合プライベート クラスターを作成する

  • az aks createフラグと--enable-api-server-vnet-integration フラグを指定して --enable-private-cluster コマンドを使用して、API Server VNet 統合を使用してプライベート AKS クラスターを作成します。

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --___location <___location> \
        --enable-private-cluster \
        --enable-apiserver-vnet-integration
    

API Server VNet 統合で Private Link を設定する方法について詳しくは、API Server VNet 統合での Private Link に関する記事をご覧ください。

NSG セキュリティ規則

既定では、VNet 内のすべてのトラフィックが許可されます。 ただし、異なるサブネット間のトラフィックを制限する NSG 規則を追加した場合は、NSG セキュリティ規則で次の種類の通信が許可されていることを確認します。

到着地 source Protocol 港 / ポート 用途
APIServer サブネット CIDR クラスター サブネット TCP 443 と 4443 ノードと API サーバーの間の通信を有効にするために必要です。
APIServer サブネット CIDR Azure Load Balancer TCP 9988 Azure Load Balancer と API サーバーの間の通信を有効にするために必要です。 また、Azure Load Balancer と API Server サブネット CIDR の間のすべての通信を有効にすることもできます。

次のステップ