Краткое руководство. Подключение существующего кластера Kubernetes к Azure Arc

Начните работу с Kubernetes с поддержкой Azure Arc с помощью Azure CLI или Azure PowerShell для подключения существующего кластера Kubernetes к Azure Arc.

Общие сведения о подключении кластеров к Azure Arc см. в обзоре агента Kubernetes с поддержкой Azure Arc.

Предварительные требования

  • Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно.

  • Базовое понимание основных понятий Kubernetes.

  • Удостоверение (пользователь или субъект-служба), которое можно использовать для входа в Azure CLI и подключения кластера к Azure Arc.

    Важно!

    • Удостоверение должно иметь разрешения на чтение и запись для типа ресурса Kubernetes с поддержкой Azure Arc (Microsoft.Kubernetes/connectedClusters).
    • Для этого удостоверения можно использовать встроенную роль кластера Kubernetes — подключение Azure Arc . Эта роль полезна для подключения в большом масштабе, так как она имеет только детализированные разрешения, необходимые для подключения кластеров к Azure Arc, и не имеет разрешения на обновление, удаление или изменение любых других кластеров или других ресурсов Azure.
  • Установка или обновление Azure CLI до версии >= 2.16.0

  • Установите расширение Azure CLI connectedk8s версии >= 1.2.0:

    az extension add --name connectedk8s
    
  • Работающий кластер Kubernetes. Если у вас нет кластера, его можно создать с помощью одного из следующих параметров:

    • Kubernetes в Docker (KIND)

    • Создание кластера Kubernetes с помощью Docker для Mac или Windows

    • Самостоятельно управляемый кластер Kubernetes с помощью API кластера

      Примечание

      Кластер должен иметь по крайней мере один узел операционной системы и тип архитектуры linux/amd64. Кластеры, имеющие только узлы linux/arm64, пока не поддерживаются.

  • Файл kubeconfig и контекст, указывающие на кластер.

Регистрация поставщиков для Kubernetes с поддержкой Azure Arc

  1. Введите следующие команды:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    
  2. Отслеживайте ход процесса регистрации. Она может занять до 10 минут.

    az provider show -n Microsoft.Kubernetes -o table
    az provider show -n Microsoft.KubernetesConfiguration -o table
    az provider show -n Microsoft.ExtendedLocation -o table
    

    После регистрации вы увидите, что состояние RegistrationState для этих пространств имен изменится на Registered.

Выполнение требований к сети

Важно!

Для работы агентов Azure Arc требуются следующие исходящие URL-адреса (https://:443). Для *.servicebus.windows.net в брандмауэре и прокси-сервере необходимо включить WebSocket для исходящего доступа.

Конечная точка (DNS) Описание
https://management.azure.com (для облачной среды Azure) https://management.usgovcloudapi.net (для Azure для государственных организаций США) Требуется для подключения агента к Azure и регистрации кластера.
https://<region>.dp.kubernetesconfiguration.azure.com (для облачной среды Azure) https://<region>.dp.kubernetesconfiguration.azure.us (для Azure для государственных организаций США) Конечная точка плоскости данных, через которую агент будет отправлять сведения о состоянии и извлекать сведения о конфигурации.
https://login.microsoftonline.com, https://<region>.login.microsoft.comlogin.windows.net (для облака Azure), https://login.microsoftonline.us<region>.login.microsoftonline.us (для Azure для государственных организаций США) Требуется для извлечения и обновления маркеров Azure Resource Manager.
https://mcr.microsoft.com, https://*.data.mcr.microsoft.com Требуется агентам Azure Arc для извлечения образов контейнеров.
https://gbl.his.arc.azure.com (для облачной среды Azure) https://gbl.his.arc.azure.us (для Azure для государственных организаций США) Требуется для получения региональной конечной точки, позволяющей запрашивать назначенные системой сертификаты управляемых удостоверений.
https://*.his.arc.azure.com (для облачной среды Azure) https://usgv.his.arc.azure.us (для Azure для государственных организаций США) Требуется для получения сертификатов управляемого удостоверения, назначаемого системой.
*.servicebus.windows.net, guestnotificationservice.azure.com, *.guestnotificationservice.azure.com, sts.windows.net, https://k8sconnectcsp.azureedge.net Для подключения кластера и сценариев на основе пользовательского расположения.
https://k8connecthelm.azureedge.net az connectedk8s connect использует Helm 3 для развертывания агентов Arc Azure в кластере Kubernetes. Эта конечная точка необходима для загрузки клиента Helm, чтобы упростить развертывание чарта агента Helm.

Создание группы ресурсов

Выполните следующую команду:

az group create --name AzureArcTest --location EastUS --output table

Выходные данные:

Location    Name
----------  ------------
eastus      AzureArcTest

Подключение существующего кластера Kubernetes

Выполните следующую команду:

az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest

Примечание

Если вы вошли в Azure CLI с помощью субъекта-службы, необходимо задать дополнительный параметр , чтобы включить функцию пользовательского расположения в кластере.

Выходные данные:

Helm release deployment succeeded

    {
      "aadProfile": {
        "clientAppId": "",
        "serverAppId": "",
        "tenantId": ""
      },
      "agentPublicKeyCertificate": "xxxxxxxxxxxxxxxxxxx",
      "agentVersion": null,
      "connectivityStatus": "Connecting",
      "distribution": "gke",
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1",
      "identity": {
        "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "SystemAssigned"
      },
      "infrastructure": "gcp",
      "kubernetesVersion": null,
      "lastConnectivityTime": null,
      "location": "eastus",
      "managedIdentityCertificateExpirationTime": null,
      "name": "AzureArcTest1",
      "offering": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "AzureArcTest",
      "tags": {},
      "totalCoreCount": null,
      "totalNodeCount": null,
      "type": "Microsoft.Kubernetes/connectedClusters"
    }

Совет

Команда, указанная выше без параметра location, создает ресурс Kubernetes с поддержкой Azure Arc в том же расположении, что и группа ресурсов. Чтобы создать ресурс Kubernetes с поддержкой Azure Arc в другом расположении, укажите --location <region> или -l <region> при выполнении команды az connectedk8s connect.

Подключение с использованием исходящего прокси-сервера

Если кластер находится за исходящим прокси-сервером, запросы должны направляться через исходящий прокси-сервер.

  1. Задайте переменные среды, которые нужны Azure CLI для использования исходящего прокси-сервера:

    export HTTP_PROXY=<proxy-server-ip-address>:<port>
    export HTTPS_PROXY=<proxy-server-ip-address>:<port>
    export NO_PROXY=<cluster-apiserver-ip-address>:<port>
    
  2. Выполните команду connect с указанными параметрами прокси-сервера:

    az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --proxy-cert <path-to-cert-file>
    

Примечание

  • Некоторые сетевые запросы, например запросы, предполагающие обмен данными между службами кластера, должны быть отделены от трафика, который маршрутизируется через прокси-сервер для исходящего обмена данными. Параметр --proxy-skip-range можно использовать для указания диапазона CIDR и конечных точек, разделенных запятыми, таким образом, чтобы любое взаимодействие между агентами и этими конечными точками не проходило через исходящий прокси-сервер. По крайней мере, диапазон CIDR служб в кластере должен быть указан в качестве значения этого параметра. Например, предположим, что kubectl get svc -A возвращает список служб, в котором все службы имеют значения кластера в диапазоне 10.0.0.0/16. Затем укажите значение для --proxy-skip-range, равное 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc.
  • Для большинства сред с исходящим прокси-сервером ожидаются параметры --proxy-http, --proxy-https и --proxy-skip-range. Параметр --proxy-cert обязателен только в том случае, если вам нужно внедрять доверенные сертификаты, ожидаемые прокси-сервером, в хранилище доверенных сертификатов для модулей pod агентов.
  • Настройки исходящего прокси-сервера должны разрешать подключения WebSocket.

Для исходящих прокси-серверов, где необходимо предоставить только доверенный сертификат без входных данных конечной точки прокси-сервера, az connectedk8s connect можно запустить только --proxy-cert с указанными входными данными. Если ожидается несколько доверенных сертификатов, объединенная цепочка сертификатов может быть предоставлена в одном файле с помощью --proxy-cert параметра.

Выполните команду connect с указанным параметром --proxy-cert :

az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>

Проверка подключения к кластеру

Выполните следующую команду:

az connectedk8s list --resource-group AzureArcTest --output table

Выходные данные:

Name           Location    ResourceGroup
-------------  ----------  ---------------
AzureArcTest1  eastus      AzureArcTest

Примечание

После подключения кластера потребуется от 5 до 10 минут, чтобы метаданные этого кластера (версия кластера, версия агента, число узлов и т. д.) появились на странице обзорных сведений для ресурса Kubernetes с поддержкой Azure Arc на портале Azure.

Просмотр агентов Azure Arc для Kubernetes

Kubernetes с поддержкой Azure Arc развертывает несколько агентов в azure-arc пространстве имен.

  1. Эти развертывания и модули pod можно просмотреть следующим образом:

    kubectl get deployments,pods -n azure-arc
    
  2. Убедитесь, что все модули pod находятся в состоянии Running.

    Выходные данные:

     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
     deployment.apps/cluster-metadata-operator   1/1     1            1           13d
     deployment.apps/clusterconnect-agent        1/1     1            1           13d
     deployment.apps/clusteridentityoperator     1/1     1            1           13d
     deployment.apps/config-agent                1/1     1            1           13d
     deployment.apps/controller-manager          1/1     1            1           13d
     deployment.apps/extension-manager           1/1     1            1           13d
     deployment.apps/flux-logs-agent             1/1     1            1           13d
     deployment.apps/kube-aad-proxy              1/1     1            1           13d
     deployment.apps/metrics-agent               1/1     1            1           13d
     deployment.apps/resource-sync-agent         1/1     1            1           13d
    
     NAME                                            READY   STATUS    RESTARTS   AGE
     pod/cluster-metadata-operator-9568b899c-2stjn   2/2     Running   0          13d
     pod/clusterconnect-agent-576758886d-vggmv       3/3     Running   0          13d
     pod/clusteridentityoperator-6f59466c87-mm96j    2/2     Running   0          13d
     pod/config-agent-7cbd6cb89f-9fdnt               2/2     Running   0          13d
     pod/controller-manager-df6d56db5-kxmfj          2/2     Running   0          13d
     pod/extension-manager-58c94c5b89-c6q72          2/2     Running   0          13d
     pod/flux-logs-agent-6db9687fcb-rmxww            1/1     Running   0          13d
     pod/kube-aad-proxy-67b87b9f55-bthqv             2/2     Running   0          13d
     pod/metrics-agent-575c565fd9-k5j2t              2/2     Running   0          13d
     pod/resource-sync-agent-6bbd8bcd86-x5bk5        2/2     Running   0          13d
    

Дополнительные сведения об этих агентах см. в обзоре агента Kubernetes с поддержкой Azure Arc.

Очистка ресурсов

Вы можете удалить ресурс Kubernetes с поддержкой Azure Arc, все связанные с ним ресурсы конфигурации и все агенты, работающие в кластере, с помощью следующей команды Azure CLI:

az connectedk8s delete --name AzureArcTest1 --resource-group AzureArcTest

Примечание

Удаление ресурса Kubernetes с поддержкой Azure Arc с помощью портал Azure удаляет все связанные ресурсы конфигурации, но не удаляет агенты, работающие в кластере. Рекомендуется удалить ресурс Kubernetes с поддержкой Azure Arc, az connectedk8s delete а не удалить ресурс в портал Azure.

Дальнейшие действия

Перейдите к следующей статье, чтобы узнать, как развернуть конфигурации в подключенном кластере Kubernetes с помощью GitOps.