Поделиться через


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

The custom locations feature provides a way to configure your Azure Arc-enabled Kubernetes clusters as target locations for deploying instances of Azure offerings. Examples of Azure offerings that can be deployed on top of custom locations include databases, such as SQL Managed Instance enabled by Azure Arc and Azure Arc-enabled PostgreSQL server, or application instances, such as Container Apps, Logic Apps, Event Grid, Logic Apps, and API Management.

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

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

Prerequisites

  • Install or upgrade Azure CLI to the latest version.

  • Установите последние версии следующих расширений 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, указывающий на этот кластер.

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

Важно

The custom locations feature is dependent on the cluster connect feature. Both features must be enabled in the cluster for custom locations to function.

The Custom Location Object ID (OID) is needed to enable custom location. Если для вашей учетной записи пользователя предоставлены необходимые права, OID будет автоматически получен при включении функции. Если у вас нет действующей учетной записи пользователя, используется переданный вручную OID, но этот OID не может быть проверен. Если OID недействителен, то пользовательское расположение может не быть должным образом активировано.

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

To enable the custom locations feature as a Microsoft Entra user, follow the steps below:

  1. Sign into Azure CLI as a Microsoft Entra user and run the following command:
az connectedk8s enable-features -n <clusterName> -g <resourceGroupName> --features cluster-connect custom-locations

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

Manually retrieve the custom location OID by following these steps:

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

  2. Run the following command to fetch the custom location oid (object ID), where --id refers to the Custom Location service app itself, and is predefined and set to bc313c14-388c-4e7d-a58e-70017303ee3b:

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

    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. Deploy the Azure service cluster extension of the Azure service instance you want to install on your cluster:

  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 Name of the custom location.
      --resource-group, --g Resource group of the custom location.
      --namespace Namespace in the cluster bound to the custom location being created.
      --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 Admin kubeconfig of cluster.
  5. Подтвердите, что собственное расположение успешно включено, выполнив следующую команду и проверив, что ProvisioningState равно Succeeded.

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

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

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

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

List custom locations

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

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 a custom location

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

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

Delete a custom location

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

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 выпустила критическое изменение, которое вызывает эту ошибку. Исправление доступно в расширении customlocation Az CLI версии 0.1.4 для совместимости с Azure CLI версии 2.70.0 и выше. If you are using a customlocation Az CLI extension below v0.1.4, you need to downgrade Azure CLI to version 2.69.0. Если вы использовали установщик Azure CLI, вы можете удалить текущую версию и установить Azure CLI версии 2.69.0.Azure CLI installation page Если вы использовали установщик pip, можно выполнить следующую команду, чтобы перейти на более раннюю версию: pip install azure-cli==2.69.0

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

If custom location creation fails with the error Unknown proxy error occurred, modify your network policy to allow pod-to-pod internal communication within the azure-arc namespace. Убедитесь, что также добавили пространство имен azure-arc как часть списка исключений no-proxy для вашей настроенной политики.

Service principal warning

If you try to enable custom location while logged into Azure CLI using a service principal, you may observe the following warning:

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.

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

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

  • Надежно подключитесь к кластеру, используя Cluster Connect.
  • Продолжите с использованием Azure Container Apps на Azure Arc для получения подробных инструкций по установке расширений, созданию пользовательских местоположений и созданию среды, подключенной к Azure Container Apps.
  • Создайте тему Event Grid и подписку на события для Event Grid на Kubernetes.
  • Узнайте больше о доступных на данный момент расширениях Kubernetes с поддержкой Azure Arc.