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

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

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

Необходимые компоненты

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

  • Последние версии расширений connectedk8s k8s-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 Container Insights в кластере 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 Container Insights — это одноэлементное расширение (только один обязательный для каждого кластера). Перед установкой этих расширений необходимо очистить все предыдущие установки диаграмм Helm в Azure Monitor Container Insights (без расширений). Следуйте инструкциям по удалению диаграммы Helm перед выполнением az k8s-extension create.

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

При создании экземпляра расширения требуются az k8s-extension create следующие параметры.

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

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

Используйте один или несколько из этих необязательных параметров при необходимости для сценариев вместе с необходимыми параметрами.

Примечание.

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

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

Наименование параметра Description
--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 не может использоваться в той же команде.
--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/0e849346-4343-582b-95a3-e40e6a648ae1/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-protected-settings которые могут быть обновлены--configuration-settings. Для --configuration-protected-settingsэтого должны быть предоставлены все параметры, даже если обновляется только один параметр. Если какие-либо из этих параметров опущены, эти параметры будут считаться устаревшими и удаленными.

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

В этом примере параметр для экземпляра расширения Машинное обучение Azure обновляется auto-upgrade-minor-version trueследующим образом:

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

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

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

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

Наименование параметра Description
--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-version значение false, необходимо вручную обновить расширение, если требуется более новая версия.

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

Чтобы вручную обновить экземпляр расширения, используйте 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 для получения требуемого состояния.

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