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


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

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

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

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

  • Последняя версия Azure CLI.

  • Последние версии расширений connectedk8sk8s-extension Azure CLI. Чтобы установить эти расширения, выполните следующие команды:

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

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

    az extension update --name connectedk8s
    az extension update --name k8s-extension
    
  • Существующий подключенный кластер Kubernetes с поддержкой Azure Arc, с как минимум одним узлом типа операционной системы и архитектуры linux/amd64. При развертывании Flux (GitOps) можно использовать кластер на основе ARM64 без использования linux/amd64 узла.

Создание экземпляра расширения

Чтобы создать экземпляр расширения, используйте k8s-extension create команду. Используйте значения из сценария для обязательных заполнителей параметров.

В этом примере создается экземпляр расширения Обзор контейнеров в Azure Monitor на кластере Kubernetes с поддержкой Azure Arc:

az k8s-extension create --name azuremonitor-containers  --extension-type Microsoft.AzureMonitor.Containers --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

Проверьте выходные данные, которые выглядят следующим образом:

{
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": null,
  "configurationSettings": {
    "logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
  },
  "creationTime": "2021-04-02T12:13:06.7534628+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.azuremonitor.containers",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
  "identity": null,
  "installState": "Pending",
  "lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
  "lastStatusTime": null,
  "name": "azuremonitor-containers",
  "releaseTrain": "Stable",
  "resourceGroup": "demo",
  "scope": {
    "cluster": {
      "releaseNamespace": "azuremonitor-containers"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": null,
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "2.8.2"
}

Примечание.

Служба не сохраняет конфиденциальную информацию за 48 часов. Если агенты Kubernetes с поддержкой Azure Arc не имеют сетевого подключения в течение более 48 часов и не могут определить, следует ли создавать расширение в кластере, расширение переходит в Failed состояние. В этом сценарии необходимо повторно выполнить k8s-extension create, чтобы создать новый ресурс Azure для расширения.

Для каждого кластера требуется только одна аналитика контейнеров в расширении Azure Monitor. Перед установкой аналитики контейнеров с помощью расширения необходимо удалить все предыдущие установки диаграмм Helm аналитики контейнеров, которые не используют расширения. Перед запуском az k8s-extension create, выполните действия по удалению Helm chart.

Обязательные параметры

В следующей таблице описаны параметры, которые требуются при использовании az k8s-extension create для создания экземпляра расширения:

Наименование параметра Описание
--name Имя экземпляра расширения.
--extension-type Тип расширения , которое требуется установить в кластере. Например, Microsoft.AzureMonitor.Containers или microsoft.azuredefender.kubernetes.
--scope Область установки расширения. Используйте cluster или namespace.
--cluster-name Имя ресурса Kubernetes с поддержкой Azure Arc, на котором создается экземпляр расширения.
--resource-group Группа ресурсов, содержащая ресурс Kubernetes с поддержкой Azure Arc.
--cluster-type Тип кластера, на котором создается экземпляр расширения. Для большинства сценариев используйте connectedClustersтип кластера для кластера Kubernetes с поддержкой Azure Arc.

Необязательные параметры

Вы можете использовать один или несколько из этих необязательных параметров с необходимыми параметрами для вашего сценария.

Примечание.

Вы можете автоматически обновить экземпляр расширения до последних минорных и патчевых версий, установив auto-upgrade-minor-version в true. Вы также можете задать версию экземпляра расширения вручную с помощью --version параметра. Мы рекомендуем включить автоматическое обновление для минорных и патч-версий, чтобы вы всегда имели самые последние обновления безопасности и новые функции.

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

Наименование параметра Описание
--auto-upgrade-minor-version Логическое свойство, определяющее, производится ли автоматическое обновление минорных версий расширения. Значение по умолчанию равно true. Если для этого параметра задано trueзначение, параметр нельзя задать version , так как версия динамически обновляется. Если для этого параметра задано falseзначение, расширение не обновляется автоматически, даже для версий исправлений.
--version Версия расширения, которую предстоит установить (конкретная версия, чтобы закрепить экземпляр расширения). Параметр нельзя задать version , если auto-upgrade-minor-version задано значение true.
--configuration-settings Параметры, которые можно передать в расширение для управления его функциями. Эти параметры передаются в виде пар, разделенных key=value пробелами, после имени параметра. Если этот параметр используется в команде, вы не можете передать --configuration-settings-file в той же команде.
--configuration-settings-file Путь к JSON-файлу с key=value парами, используемым для передачи параметров конфигурации в расширение. Если этот параметр используется в команде, нельзя использовать --configuration-settings в той же команде.
--configuration-protected-settings Параметры, которые не могут быть извлечены с помощью GET вызовов ИЛИ az k8s-extension show команд API. Обычно используется для передачи конфиденциальных параметров. Эти параметры передаются в виде пар, разделенных key=value пробелами, после имени параметра. Если этот параметр используется в команде, нельзя использовать --configuration-protected-settings-file в той же команде.
--configuration-protected-settings-file Путь к JSON-файлу с парами key=value, которые используются для передачи конфиденциальных параметров в расширение. Если этот параметр используется в команде, нельзя использовать --configuration-protected-settings в той же команде.
--release-namespace Этот параметр указывает пространство имен, в котором создается выпуск. Этот параметр имеет значение, только если scope задано значение cluster.
--release-train Автор расширения может публиковать версии в различных ветках выпуска, таких как Stable или Preview. Если этот параметр не задан явным образом, Stable используется значение по умолчанию.
--target-namespace Указывает пространство имен, в котором создается выпуск. Разрешения для системной учетной записи, созданной для этого экземпляра расширения, ограничены этим пространством имен. Этот параметр имеет значение только в том случае, если scope задано значение namespace.

Отображение сведений о расширении

Чтобы просмотреть сведения о экземпляре расширения, установленного в данный момент, используйте k8s-extension show команду. В коде используйте значения из сценария для обязательных заполнителей параметров.

az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

Проверьте выходные данные, которые выглядят следующим образом:

{
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": null,
  "configurationSettings": {
    "logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
  },
  "creationTime": "2021-04-02T12:13:06.7534628+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.azuremonitor.containers",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
  "identity": null,
  "installState": "Installed",
  "lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
  "lastStatusTime": "2021-04-02T12:13:49.636+00:00",
  "name": "azuremonitor-containers",
  "releaseTrain": "Stable",
  "resourceGroup": "demo",
  "scope": {
    "cluster": {
      "releaseNamespace": "azuremonitor-containers"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": null,
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "2.8.2"
}

Список всех расширений, установленных в кластере

Чтобы просмотреть список всех расширений, установленных в кластере, используйте k8s-extension list команду. В коде используйте значения из сценария для обязательных заполнителей параметров.

az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

Проверьте выходные данные, которые выглядят следующим образом:

[
  {
    "autoUpgradeMinorVersion": true,
    "creationTime": "2020-09-15T02:26:03.5519523+00:00",
    "errorInfo": {
      "code": null,
      "message": null
    },
    "extensionType": "Microsoft.AzureMonitor.Containers",
    "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/myExtInstanceName",
    "identity": null,
    "installState": "Pending",
    "lastModifiedTime": "2020-09-15T02:48:45.6469664+00:00",
    "lastStatusTime": null,
    "name": "myExtInstanceName",
    "releaseTrain": "Stable",
    "resourceGroup": "myRG",
    "scope": {
      "cluster": {
        "releaseNamespace": "myExtInstanceName1"
      }
    },
    "statuses": [],
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": "0.1.0"
  },
  {
    "autoUpgradeMinorVersion": true,
    "creationTime": "2020-09-02T00:41:16.8005159+00:00",
    "errorInfo": {
      "code": null,
      "message": null
    },
    "extensionType": "microsoft.azuredefender.kubernetes",
    "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/defender",
    "identity": null,
    "installState": "Pending",
    "lastModifiedTime": "2020-09-02T00:41:16.8005162+00:00",
    "lastStatusTime": null,
    "name": "microsoft.azuredefender.kubernetes",
    "releaseTrain": "Stable",
    "resourceGroup": "myRg",
    "scope": {
      "cluster": {
        "releaseNamespace": "myExtInstanceName2"
      }
    },
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": "0.1.0"
  }
]

Обновление экземпляра расширения

Примечание.

Для получения информации о конкретных настройках в --configuration-settings и --configuration-protected-settings, которые можно обновить, см. документацию по конкретному типу расширения. Для --configuration-protected-settings укажите все параметры, даже если обновляется только один параметр. Если какие-либо из этих параметров опущены, опущенные параметры будут считаться устаревшими и удаляются.

Чтобы обновить существующий экземпляр расширения, используйте k8s-extension update. Передайте значения обязательных и необязательных параметров. Обязательные и необязательные параметры немного отличаются от параметров, используемых для создания экземпляра расширения.

В этом примере параметр для экземпляра расширения Машинного обучения Azure обновляется на auto-upgrade-minor-versiontrue.

az k8s-extension update --name azureml --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --auto-upgrade-minor-version true --cluster-type managedClusters

Обязательные параметры для обновления

Наименование параметра Описание
--name Имя экземпляра расширения.
--cluster-name Имя кластера, на котором создается экземпляр расширения.
--resource-group Группа ресурсов, содержащая кластер.
--cluster-type Тип кластера, в котором должен быть создан экземпляр расширения. Для кластеров Kubernetes с поддержкой Azure Arc используйте connectedClusters. Для кластеров AKS используйте managedClusters.

Необязательные параметры для обновления

Наименование параметра Описание
--auto-upgrade-minor-version Логическое свойство, указывающее, обновляется ли минорная версия расширения автоматически. Значение по умолчанию равно true. Если для этого параметра задано trueзначение, параметр нельзя задать version , так как версия динамически обновляется. Если для параметра задано falseзначение, расширение не обновляется автоматически, даже для версий исправлений.
--version Версия расширения для установки (конкретная версия для закрепления экземпляра расширения). Не должен быть указан, если элемент auto-upgrade-minor-version задан как true.
--configuration-settings Параметры, которые можно передать в расширение для управления его функциями. Эти параметры передаются в виде пар, разделенных key=value пробелами, после имени параметра. Если параметр используется в команде, --configuration-settings-file его нельзя использовать в той же команде. Необходимо указать только те параметры, которые нужно обновить. Указанные параметры заменяются указанными значениями.
--configuration-settings-file Путь к JSON-файлу, содержащему key=value пары для передачи параметров конфигурации в расширение. Если этот параметр используется в команде, нельзя использовать --configuration-settings в той же команде.
--configuration-protected-settings Параметры, которые не могут быть извлечены с помощью GET вызовов ИЛИ az k8s-extension show команд API. Обычно используется для передачи конфиденциальных параметров. Эти параметры передаются в виде пар, разделенных key=value пробелами, после имени параметра. Если этот параметр используется в команде, --configuration-protected-settings-file его нельзя использовать в той же команде. При обновлении защищенного параметра настройте все защищенные параметры. Если какие-либо из параметров опущены, эти параметры считаются устаревшими и удаляются.
--configuration-protected-settings-file Путь к JSON-файлу, содержащему key=value пары для передачи конфиденциальных параметров в расширение. Если этот параметр используется в команде, нельзя использовать --configuration-protected-settings в той же команде.
--scope Область установки расширения. Используйте либо cluster, либо namespace.
--release-train Автор расширения может публиковать версии в различных каналах выпуска, таких как Stable или Preview. Если этот параметр не задан явным образом, Stable используется значение по умолчанию.

Модернизация экземпляра расширения

Как отмечалось ранее, если auto-upgrade-minor-version задано значение true, расширение автоматически обновляется при выпуске новой дополнительной версии. Для большинства сценариев рекомендуется включить автоматическое обновление. Если задано значение auto-upgrade-minor-versionfalse, необходимо вручную обновить расширение, если требуется более новая версия.

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

Чтобы вручную обновить экземпляр расширения, используйте k8s-extension update и задайте version параметр.

В этом примере экземпляр расширения машинного обучения Azure обновляется до версии x.y.z:

az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z

Удалите экземпляр расширения

Чтобы удалить экземпляр расширения в кластере, используйте k8s-extension delete команду. Используйте значения из сценария для обязательных заполнителей параметров.

az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

Примечание.

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