次の方法で共有


コマンド呼び出し機能またはコマンド実行機能を使用してプライベート 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 機能が使用されます。

Run command によって作成されたポッドは、クラスターを操作するための kubectlhelm を提供します。 jqxargsgrepawk は、Bash サポートで使用できます。

開始する前に

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

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

制限事項

この機能は、クラスター アクセスを簡略化するために設計されており、プログラムによるアクセス用には設計されていません Run command を使用して Kubernetes を呼び出すプログラムがある場合は、次の短所の影響を受けます。

  • "exitCode" と "テキスト出力" のみが取得され、API レベルの詳細が失われます。
  • 1 つの追加ホップでは、追加の障害ポイントが発生します。

Run command によって作成されたポッドは、200m CPU500Mi memory 要求、および 500m CPU1Gi memory の制限を持ってハード コーディングされます。 まれに、すべてのノードがパックされている場合、ARM API 制限の 60 秒以内にポッドのスケジュールを設定することはできません。 つまり、自動スケーリングするように構成されている場合でも、Run command は失敗します。

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 .
    

トラブルシューティング

az aks command invoke に関する最も一般的な問題とその解決方法については、az aks command invoke のエラーを解決する方法に関するページを参照してください。

次のステップ

この記事では、プライベート クラスターにアクセスし、そのクラスターでコマンドを実行する方法について説明しました。 AKS クラスターについて詳しくは、次の記事をご覧ください。