プライベート Azure Kubernetes Service (AKS) クラスターにアクセスする

プライベート AKS クラスターにアクセスするには、クラスター仮想ネットワーク、ピアリングされたネットワーク、構成済みのプライベート エンドポイントのいずれかで接続する必要があります。 これらのアプローチでは、VPN や ExpressRoute を構成する、クラスターの仮想ネットワーク内にジャンプボックスをデプロイする、または別の仮想ネットワーク内にプライベート エンドポイントを作成する、のいずれかを行う必要があります。

Azure CLI では、command invoke を使用して、VPN または Express Route を構成せずにプライベート クラスターにアクセスすることもできます。 command invoke を使用すると、クラスターに直接接続することなく、Azure API を使用して、プライベート クラスター上で kubectlhelm のようなコマンドをリモートで呼び出すことができます。 Microsoft.ContainerService/managedClusters/runcommand/action アクションと Microsoft.ContainerService/managedclusters/commandResults/read アクションは、command invoke を使用するためのアクセス許可を制御します。

Azure portal では、Run command 機能を使用して、プライベート クラスターでコマンドを実行できます。 Run command 機能では、クラスターでコマンドを実行するために同じ command invoke 機能が使用されます。

準備

作業を開始する前に、以下のリソースとアクセス許可があることを確認してください。

  • 既存のプライベート クラスター。 まだお持ちでない場合は、プライベート AKS クラスターの作成に関する記事を参照してください。
  • Azure CLI バージョン 2.24.0 以降。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
  • クラスター上の Microsoft.ContainerService/managedClusters/runcommand/action および Microsoft.ContainerService/managedclusters/commandResults/read ロールへのアクセス。

制限事項

run コマンドによって作成されたポッドは、helm と、kustomize によるクラスター用の最新互換バージョンの kubectl を提供します。

command invoke はクラスターからコマンドを実行するため、この方法で実行されるコマンドはすべて、構成したネットワーク制限や構成したその他の制限の対象になります。 このコマンド ポッドのスケジュールを設定するのに十分なノードとリソースがクラスターにあることを確認してください。

Note

command invoke の出力はサイズが 512kB に制限されています。

AKS クラスターでコマンドを実行する

command invoke を使用して 1 つのコマンドを実行する

  • クラスターでコマンドを実行するには、az aks command invoke --command コマンドを使用します。 次のコマンドの例では、myResourceGroupmyPrivateCluster クラスターで kubectl get pods -n kube-system コマンドを実行します。

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl get pods -n kube-system"
    

command invoke を使用して複数のコマンドを実行する

  • クラスターで複数のコマンドを実行するには、az aks command invoke --command コマンドを使用します。 次のコマンド例では、myResourceGroupmyPrivateCluster クラスターで 3 つの helm コマンドを実行します。

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update && helm install my-release bitnami/nginx"
    

添付されたファイルまたはディレクトリを使用してコマンドを実行するには、command invoke を使用します

  • ファイルまたはディレクトリが添付されたコマンドを実行するには、--file パラメーターを指定した az aks command invoke --command コマンドを使用します。 次のコマンド例では、myResourceGroupmyPrivateCluster クラスターで kubectl apply -f deployment.yaml -n default を実行します。 deployment.yaml ファイルは、az aks command invoke が実行された開発用コンピューター上の現在のディレクトリから添付されます。

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml -n default" \
      --file deployment.yaml
    

command invoke を使用して現在のディレクトリ内のすべてのファイルが添付されたコマンドを実行する

  • 現在のディレクトリにあるすべてのファイルが添付されたコマンドを実行するには、--file パラメーターを指定した az aks command invoke --command コマンドを使用します。 次のコマンド例では、myResourceGroupmyPrivateCluster クラスターで kubectl apply -f deployment.yaml configmap.yaml -n default を実行します。 deployment.yaml および configmap.yaml ファイルは、az aks command invoke が実行された開発用コンピューター上の現在のディレクトリの一部です。

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml configmap.yaml -n default" \
      --file .