Доступ к частному кластеру Службы Azure Kubernetes (AKS)

При доступе к частному кластеру AKS необходимо подключиться к кластеру из виртуальной сети кластера, одноранговой сети или настроенной частной конечной точки. Для этих подходов нужно настроить VPN или Express Route, развернуть Jumpbox в виртуальной сети кластера или создать частную конечную точку в другой виртуальной сети.

С помощью Azure CLI можно использовать command invoke для доступа к частным кластерам без необходимости настройки VPN или Express Route. command invoke позволяет удаленно вызывать команды, такие как kubectl и helm, в частном кластере с помощью API Azure без прямого подключения к кластеру. Действия Microsoft.ContainerService/managedClusters/runcommand/action и Microsoft.ContainerService/managedclusters/commandResults/read управляют разрешениями для использования command invoke.

С помощью портал Azure можно использовать функцию Run command для выполнения команд в частном кластере. Эта Run command функция использует те же command invoke функции для выполнения команд в кластере.

Подготовка к работе

Прежде чем начать, убедитесь, что у вас есть следующие ресурсы и разрешения:

  • Существующий частный кластер. Если у вас его нет, см. статью Создание частного кластера AKS.
  • Azure CLI версии 2.24.0 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
  • Доступ к ролям Microsoft.ContainerService/managedClusters/runcommand/action и Microsoft.ContainerService/managedclusters/commandResults/read в кластере.

Ограничения

Модуль pod, созданный командой , run предоставляет helm и последнюю совместимую версию kubectl для кластера с kustomize.

command invoke выполняет команды из кластера, поэтому все команды, выполняемые таким образом, распространяются на настроенные ограничения сети и другие настроенные ограничения. Убедитесь, что в кластере достаточно узлов и ресурсов для планирования этого модуля командной строки.

Примечание

Размер выходных данных для command invoke ограничен 512 КБ.

Выполнение команд в кластере AKS

Использование command invoke для выполнения одной команды

  • Выполните команду в кластере az aks command invoke --command с помощью команды . В следующем примере команда выполняет команду kubectl get pods -n kube-system в кластере myPrivateCluster в myResourceGroup.

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

Использование command invoke для выполнения нескольких команд

  • Выполните несколько команд в кластере az aks command invoke --command с помощью команды . Следующий пример команды выполняет три helm команды в кластере myPrivateCluster в myResourceGroup.

    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 для выполнения команд с вложенным файлом или каталогом

  • Выполните команды с присоединенным файлом или каталогом, az aks command invoke --command используя команду с параметром --file . Следующий пример команды выполняется kubectl apply -f deployment.yaml -n default в кластере myPrivateCluster в myResourceGroup. Файл 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 для выполнения команд со всеми файлами в текущем подключенном каталоге.

  • Выполните команды со всеми файлами в текущем каталоге, присоединенным с помощью az aks command invoke --command команды с параметром --file . Следующий пример команды выполняется kubectl apply -f deployment.yaml configmap.yaml -n default в кластере myPrivateCluster в myResourceGroup. Файлы 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 .