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

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

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

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

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

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

    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архитектуры .

Примечание

Установка расширений Azure Arc в гибридных кластерах AKS, подготовленных из Azure, в настоящее время находится на этапе предварительной версии с поддержкой Open Service Mesh с поддержкой Azure Arc, поставщика секретов Azure Key Vault, Flux (GitOps) и Microsoft Defender для облачных расширений.

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

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

Необходимые параметры

При использовании для 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.

Примечание

При работе с [гибридными кластерами AKS, подготовленными из Azure](#aks-hybrid-clusters-provisioned-from-azure-preview, необходимо задать для --cluster-type использования provisionedClusters и добавить --cluster-resource-provider microsoft.hybridcontainerservice в команду . Установка расширений Azure Arc в гибридных кластерах AKS, подготовленных из Azure, в настоящее время находится на этапе предварительной версии.

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

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

Имя параметра Описание
--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 вызовов API или az k8s-extension show команд. Обычно используется для передачи конфиденциальных параметров. Они передаются в виде пар, 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 используется по умолчанию. Этот параметр нельзя использовать, если --auto-upgrade-minor-version для задано значение false.
--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"
  }
]

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

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

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

Примечание

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

Важно!

При работе с гибридными кластерами AKS, подготовленными из Azure, необходимо добавить --yes в команду delete. Установка расширений Azure Arc в гибридных кластерах AKS, подготовленных из Azure, в настоящее время находится на этапе предварительной версии.

Гибридные кластеры AKS, подготовленные из Azure (предварительная версия)

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

  • Значение параметра --cluster-type должно быть provisionedClustersравно .

  • Необходимо добавить --cluster-resource-provider microsoft.hybridcontainerservice в команды.

  • При удалении экземпляра расширения необходимо добавить --yes в команду :

    az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type provisionedClusters --cluster-resource-provider microsoft.hybridcontainerservice --yes
    

Кроме того, необходимо использовать последнюю версию модуля Azure CLI k8s-extension (версия >= 1.3.3). Чтобы добавить последнюю версию или обновить ее до последней версии, используйте следующие команды:

# add if you do not have this installed
az extension add --name k8s-extension

# update if you do have the module installed
az extension update --name k8s-extension

Важно!

Установка расширений Azure Arc в гибридных кластерах AKS, подготовленных из Azure, в настоящее время находится на этапе предварительной версии.

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