Создавайте и управляйте пользовательскими местами на Kubernetes с поддержкой Azure Arc

Функция пользовательских расположений обеспечивает возможность настройки кластеров Kubernetes с поддержкой Azure Arc в качестве целевых мест для развертывания экземпляров служб Azure. Примеры предложений Azure, которые можно развернуть поверх пользовательских расположений, включают базы данных, такие как управляемый экземпляр SQL, поддерживаемый Azure Arc, или экземпляры приложений, такие как контейнерные приложения, Logic Apps, Сетка событий и управление API.

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

В этой статье вы узнаете, как включить нестандартные местоположения в кластер Kubernetes с поддержкой Arc, а также как создать собственное местоположение.

Prerequisites

  • Установите или обновите Azure CLI до последней версии.

  • Установите последние версии следующих расширений Azure CLI:

    • connectedk8s

    • k8s-extension

    • customlocation

      az extension add --name connectedk8s
      az extension add --name k8s-extension
      az extension add --name customlocation
      

      Если вы уже установили расширения connectedk8s, k8s-extension и customlocation, обновите их до последней версии с помощью следующей команды:

      az extension update --name connectedk8s
      az extension update --name k8s-extension
      az extension update --name customlocation
      
  • Проверьте завершенную регистрацию поставщика для Microsoft.ExtendedLocation.

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

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

      az provider show -n Microsoft.ExtendedLocation -o table
      

      После регистрации RegistrationState состояние имеет значение Registered.

  • Убедитесь, что у вас есть существующий кластер Azure Arc-enabled Kubernetes, и обновите свои агенты до последней версии. Убедитесь, что компьютер, на котором будут выполняться команды, описанные в этой статье, содержит файл, указывающий kubeconfig на этот кластер.

Включите пользовательские местоположения на вашем кластере

Важно

Функция настраиваемых расположений зависит от функции подключения кластера. Для функционирования пользовательских местоположений обе функции должны быть активированы в кластере.

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

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

Включить пользовательские местоположения в качестве пользователя Microsoft Entra

Войдите в Azure CLI в качестве пользователя Microsoft Entra и выполните следующую команду:

az connectedk8s enable-features -n <clusterName> -g <resourceGroupName> --features cluster-connect custom-locations

Включение настраиваемых расположений с помощью сервисного принципала

Вручную получите OID пользовательского расположения, выполнив следующие действия.

Важно

Скопируйте и выполните команду на шаге 2, как показано ниже. Не замените значение, --id переданное параметру, другим значением.

  1. Войдите в Azure CLI как пользователь Microsoft Entra.

  2. Выполните следующую команду, чтобы получить пользовательское расположение oid (идентификатор объекта), где --id относится к самому приложению службы "Пользовательское расположение" и предварительно задано значение bc313c14-388c-4e7d-a58e-70017303ee3b.

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv
    
  3. Войдите в Azure CLI, используя служебный принципал. Запустите следующую команду, чтобы включить функцию пользовательских местоположений на кластере, используя значение oid (ID объекта) из предыдущего шага для параметра --custom-locations-oid.

    az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <cl-oid> --features cluster-connect custom-locations
    

Создать пользовательское местоположение

  1. Установите расширение службы кластера Azure для экземпляра службы Azure, который вы хотите установить в кластере.

  2. Получите идентификатор диспетчера ресурсов Azure для кластера Kubernetes с Azure Arc, который будет использоваться в следующих шагах как connectedClusterId:

    az connectedk8s show -n <clusterName> -g <resourceGroupName>  --query id -o tsv
    
  3. Получите идентификатор диспетчера ресурсов Azure для расширения кластера, которое вы развернули на кластере Kubernetes с поддержкой Azure Arc, упоминаемого на более поздних этапах как extensionId.

    az k8s-extension show --name <extensionInstanceName> --cluster-type connectedClusters -c <clusterName> -g <resourceGroupName>  --query id -o tsv
    
  4. Создайте пользовательскую локацию, ссылаясь на кластер Kubernetes с поддержкой Azure Arc и расширение:

    az customlocation create -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionId> 
    
    • Требуемые параметры:

      Имя параметра Описание
      --name, --n Имя настраиваемого расположения.
      --resource-group, --g Группа ресурсов настраиваемого расположения.
      --namespace Пространство имен в кластере, привязанное к созданному пользовательскому расположению.
      --host-resource-id Идентификатор Azure Resource Manager для кластера Kubernetes с поддержкой Azure Arc (подключенный кластер).
      --cluster-extension-ids Идентификатор Azure Resource Manager экземпляра расширения кластера, установленного на подключенном кластере. Для нескольких расширений укажите список идентификаторов расширений кластера, разделенных пробелами.
    • Необязательные параметры

      Имя параметра Описание
      --location, --l Местоположение кастомного ресурса Azure Resource Manager в Azure. Если не указано, используется расположение подключённого кластера.
      --tags Список тегов, разделенных пробелами, в формате key[=value]. Используйте '' для удаления существующих тегов.
      --kubeconfig Администратор kubeconfig кластера.
  5. Подтвердите, что собственное расположение успешно включено, выполнив следующую команду и проверив, что ProvisioningState равно Succeeded.

az customlocation show -n <customLocationName> -g <resourceGroupName>

Проверьте использование пользовательского местоположения

Чтобы определить, активно ли пользовательское расположение используется другими ресурсами Azure, можно перечислить типы ресурсов, которые включены для него с помощью Azure CLI.

az customlocation list-enabled-resource-types -n <customLocationName> -g <resourceGroupName>                                              

Эта команда возвращает список типов ресурсов Azure, настроенных для использования в конкретном пользовательском расположении. Если список не пуст, это указывает, что пользовательская локация в настоящее время используется этими типами ресурсов.

Пример результата:

[
  {
    "resourceType": "Microsoft.App/containerApps"
  },
  {
    "resourceType": "Microsoft.Data/sqlManagedInstances"
  }
]

Показать сведения о пользовательском местоположении

Чтобы показать детали пользовательского местоположения, используйте следующую команду:

az customlocation show -n <customLocationName> -g <resourceGroupName> 

Перечислить настроенные расположения

Чтобы перечислить все пользовательские местоположения в группе ресурсов, используйте следующую команду:

az customlocation list -g <resourceGroupName> 

Обновить пользовательское местоположение

Используйте команду update, чтобы добавить новые значения для --tags или связать новые --cluster-extension-ids с пользовательским местоположением, сохраняя существующие значения для тегов и связанных расширений кластеров.

az customlocation update -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionIds> 

Исправление настраиваемого расположения

Используйте команду patch, чтобы заменить существующие значения для --cluster-extension-ids или --tags. Предыдущие значения не сохраняются.

az customlocation patch -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionIds> 

Удаление настраиваемого расположения

Чтобы удалить пользовательское местоположение, используйте следующую команду:

az customlocation delete -n <customLocationName> -g <resourceGroupName> 

Устранение неполадок

Ошибка при получении учетных данных в Azure CLI версии 2.70.0

Вы можете столкнуться с ошибкой, содержащей: TypeError: get_login_credentials() got an unexpected keyword argument 'resource'. Azure CLI версии 2.70.0 выпустила критическое изменение, которое активирует эту ошибку. Исправление доступно в az customlocation версии 0.1.4 для совместимости с Azure CLI версии 2.70.0 и выше.

Чтобы использовать более раннюю версию az customlocation, необходимо также использовать Azure CLI версии 2.69.0 или более ранней. Если вы использовали установщик Azure CLI, вы можете удалить текущую версию и установить Azure CLI версии 2.69.0.Azure CLI installation page Если вы использовали установщик pip, можно выполнить следующую команду, чтобы перейти на более раннюю версию: pip install azure-cli==2.69.0 Однако обычно рекомендуется использовать последнюю версию az customlocation и Azure CLI.

Неизвестная ошибка прокси

Если создание произвольного расположения завершается ошибкой Unknown proxy error occurred, измените политику сети, чтобы разрешить внутреннее взаимодействие между контейнерами в пространстве имен azure-arc. Убедитесь, что также добавили пространство имен azure-arc как часть списка исключений no-proxy для вашей настроенной политики.

Предупреждение служебного принципала

Если вы попытаетесь включить настраиваемое местоположение, входя в Azure CLI с помощью учетной записи службы, вы можете наблюдать следующее предупреждение:

Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.

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

У поставщика ресурсов нет необходимых разрешений

Если вы попытаетесь создать настраиваемое местоположение до включения функции настраиваемого местоположения в кластере Kubernetes, может появиться следующее сообщение об ошибке:

Deployment failed. Correlation ID: ... "Microsoft.ExtendedLocation" resource provider does not have the required permissions to create a namespace on the cluster. Refer to https://aka.ms/ArcK8sCustomLocationsDocsEnableFeature to provide the required permissions to the resource provider.

Сначала включите функцию настройки расположения в кластере. После включения функции можно выполнить действия по созданию настраиваемого расположения.

Следующие шаги