Установка расширения Сетки событий в кластере Kubernetes с поддержкой Azure Arc
В этой статье описывается, как установить Сетку событий в кластере Kubernetes с включенной службой Azure Arc.
Для краткости в этой статье расширение Сетки событий в Kubernetes называется "Сеткой событий в Kubernetes" или просто "Сеткой событий".
Внимание
Служба "Сетка событий" в Kubernetes с поддержкой Azure Arc сейчас находится в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания и не рекомендована для использования рабочей среде. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Поддерживаемые дистрибутивы Kubernetes
Ниже приведены поддерживаемые дистрибутивы Kubernetes, в которых можно развернуть и запустить Сетку событий.
- Дистрибутивы Kubernetes, поддерживаемые Azure AKS.
- Платформа контейнеров OpenShift в RedHat.
Расширение Сетки событий
Для установки экземпляра службы "Сетка событий" в кластере Kubernetes необходимо создать расширение кластера Azure Arc, которое развертывает брокер и оператор Сетки событий. Дополнительные сведения о работе брокера и оператора см. в статье Компоненты Сетки событий в Kubernetes. Функция расширения кластера Azure Arc обеспечивает управление жизненным циклом с помощью операций плоскости управления Azure Resource Manager (ARM) в сетке событий, развернутой в кластерах Kubernetes с поддержкой Azure Arc.
Примечание.
Предварительная версия службы поддерживает только один экземпляр расширения Сетки событий в кластере Kubernetes, так как это расширение в настоящее время определено на уровне кластера. Развертывание Сетки событий в области пространства имен, которое позволило бы развертывать несколько экземпляров в кластере, пока не поддерживается. Дополнительные сведения см. в разделе "Область расширения".
Необходимые компоненты
Прежде чем приступать к установке Сетки событий, выполните приведенные ниже предварительные условия.
- Кластер, работающий в одном из поддерживаемых дистрибутивов Kubernetes.
- Подписка Azure.
- Сертификаты PKI для установления соединения по протоколу HTTPS с брокером Сетки событий.
- Подключите кластер к Azure Arc.
Получение поддержки
Если возникла проблема, см. раздел Устранение неполадок, в котором приводятся сведения о распространенных ошибках. Если у вас по-прежнему возникают проблемы, создайте запрос в службу поддержки Azure.
Требования к сертификатам PKI
Брокер (сервер) Сетки событий обслуживает два типа клиентов. Проверка подлинности сервера производится с помощью сертификатов. Проверка подлинности клиента в зависимости от его типа выполняется с помощью сертификатов или ключей SAS.
- Операторы сетки событий, выполняющие запросы уровня управления брокеру сетки событий, проходят проверку подлинности с помощью сертификатов.
- Издатели Сетки событий, которые публикуют события в разделе Сетки событий, проходят проверку подлинности с помощью ключей SAS раздела.
Чтобы установить защищенное HTTPS-соединение с брокером и оператором Сетки событий, мы используем сертификаты PKI во время установки расширения Сетки событий. К ним предъявляются приведенные ниже общие требования.
Сертификаты и ключи должны представлять собой сертификаты X.509 и кодироваться по стандарту PEM (почта с повышенной секретностью).
Чтобы настроить сертификат брокера (сервера) Сетки событий во время установки, необходимо предоставить следующие элементы:
- сертификат ЦС;
- общедоступный сертификат;
- закрытого ключа.
Чтобы настроить сертификат оператора (клиента) Сетки событий, необходимо предоставить следующие элементы:
- сертификат ЦС;
- общедоступный сертификат;
- закрытого ключа.
Публикующие клиенты могут использовать сертификат ЦС брокера Сетки событий для проверки сервера при публикации событий в разделе.
Внимание
Хотя у домена, связанного с клиентом, может быть несколько общедоступных сертификатов, выданных разными центрами сертификации, Сетка событий в Kubernetes позволяет отправлять во время установки только один сертификат ЦС для клиентов. По этой причине сертификаты для оператора Сетки событий должны быть выданы (подписаны) одним и тем же ЦС для успешной проверки цепочки сертификатов и установления сеанса TLS.
При настройке общего имени (CN) для сертификатов сервера и клиента они должны отличаться от общего имени, указанного для сертификата центра сертификации.
Внимание
На ранних стадиях эксперимента можно использовать самозаверяющие сертификаты, но в общем случае необходимо получить и использовать соответствующие сертификаты PKI, подписанные центром сертификации (ЦС).
Установка с помощью портала Azure
На портале Azure выполните поиск (в поле в верхней части страницы) по запросу Azure Arc.
В меню слева в разделе Инфраструктура выберите пункт Кластер Kubernetes.
В списке кластеров найдите и выберите тот из них, в котором нужно установить Сетку событий. Появится страница Обзор для кластера.
В меню слева в группе Параметры выберите пункт Расширения.
Выберите Добавить. Откроется страница, на которой показаны доступные расширения Kubernetes для Azure Arc.
На странице Новый ресурс выберите Event Grid on Kubernetes Extension (Расширение Сетки событий для Kubernetes).
На странице Event Grid on Kubernetes Extension (Расширение Сетки событий для Kubernetes) нажмите Создать.
На вкладке Основные сведения на странице Install Event Grid (Установка Сетки событий) выполните следующие действия.
В разделе Сведения о проекте значения подписки и группы ресурсов доступны только для чтения, так как расширения Azure Arc развертываются в той же подписке и группе ресурсов Azure подключенного кластера, где они установлены.
Укажите имя в поле Имя расширения Сетки событий. Это имя должно быть уникальным среди других расширений Azure Arc, развернутых в том же подключенном кластере Azure Arc.
В поле Пространство имен выпуска может потребоваться указать имя пространства имен Kubernetes, в котором будут развернуты компоненты Сетки событий. Например, может потребоваться одно пространство имен для всех служб с поддержкой Azure Arc, развернутых в кластере. Имя по умолчанию — eventgrid-system. Если указанного пространства имен нет, оно создается автоматически.
В разделе сведений о брокере Сетки событий отображается тип службы. Брокер Сетки событий, предоставляющий конечные точки разделов, в которые отправляются события, имеет тип службы Kubernetes ClusterIP. Таким образом, всем разделам назначаются IP-адреса из частного диапазона, настроенного для кластера.
Укажите имя класса хранения, которое необходимо использовать для брокера и которое поддерживается дистрибутивом Kubernetes. Например, если используется AKS, можно указать
azurefile
. При этом будет использоваться служба хранения Azure уровня "Стандартный". Дополнительные сведения о предопределенных классах хранения, поддерживаемых AKS, см. в статье Классы хранения в AKS. Если вы используете другой дистрибутив Kubernetes, список поддерживаемых предопределенных классов хранения или способ предоставления собственного класса см. в документации к своему дистрибутиву.Размер хранилища. Значение по умолчанию — 1 ГиБ. При определении размера хранилища учитывайте скорость приема. Скорость приема в МиБ/с, рассчитываемая как размер события, умноженный на частоту публикации (событий в секунду) во всех разделах брокера Сетки событий, является ключевым фактором при выделении хранилища. События являются по своей сути временными. После их доставки они больше не занимают место в хранилище. Хотя скорость приема является основным фактором, влияющим на использование хранилища, есть и другие. Метаданные, содержащие сведения о конфигурации разделов и подписок на события, также занимают место в хранилище, но обычно требуют его меньше, чем события, принимаемые и доставляемые Сеткой событий.
Предельный объем памяти. Значение по умолчанию — 1 ГиБ.
Запрос памяти. Значение по умолчанию — 200 МиБ. Это поле не может редактироваться.
В нижней части страницы выберите Далее: настройка.
На вкладке Конфигурация страницы Install Event Grid (Установка Сетки событий) выполните следующие действия.
Включить связь по протоколу HTTP (небезопасно). Установите этот флажок, если хотите использовать незащищенный канал для обмена данными между клиентами и брокером Сетки событий.
Внимание
Включение этого параметра делает обмен данными с брокером сетки событий для использования HTTP в качестве транспорта. Таким образом, все взаимодействие между публикующими клиентами и оператором Сетки событий с брокером Сетки событий будет незащищенным. Этот параметр следует использовать только на ранних стадиях разработки.
Если вы не включили обмен данными по протоколу HTTP, выберите все полученные файлы сертификатов PKI, которые отвечают требованиям к сертификатам PKI.
В нижней части страницы нажмите кнопку Далее: мониторинг.
На вкладке Мониторинг страницы Install Event Grid (Установка Сетки событий) выполните следующие действия.
Выберите Включить метрики (необязательно). Если выбрать этот параметр, сетка событий в Kubernetes предоставит ряд метрик для разделов и подписок на события в формате демонстрации Prometheus.
Нажмите кнопку Далее: теги, чтобы перейти на страницу Теги.
На странице Теги выполните следующие действия.
При необходимости определите теги.
В нижней части страницы выберите Review + create (Проверить и создать).
На вкладке Проверить и создать выберите Создать.
Внимание
Установка Сетки событий является асинхронной операцией, и вы можете получить на портале Azure уведомление о завершении развертывания еще до того, как она закончит выполняться в кластере Kubernetes. Подождите по крайней мере 5 минут после появления уведомления о завершении развертывания, прежде чем пытаться создать пользовательское расположение (следующий шаг). Если у вас есть доступ к кластеру Kubernetes, то в сеансе bash можно выполнить следующую команду, чтобы проверить, находятся ли брокер Сетки событий и модули pod оператора Сетки событий в состоянии выполнения, что означает завершение установки:
kubectl get pods -n \<release-namespace-name\>
Пример выходных данных:
NAME READY STATUS RESTARTS AGE eventgrid-broker-568f75976-wxkd2 1/1 Running 0 2m28s eventgrid-operator-6c4c6c675d-ttjv5 1/1 Running 0 2m28s
Внимание
Прежде чем пытаться развернуть разделы Сетки событий, необходимо создать пользовательское расположение. Чтобы создать пользовательское расположение, можно выбрать страницу Контекст в нижней части экрана через 5 минут после появления уведомления о завершении развертывания. Кроме того, можно создать пользовательское расположение с помощью портала Azure. Дополнительные сведения см. в документации пользовательского расположения.
После завершения развертывания вы увидите на странице Расширения запись с именем, указанным для расширения Сетки событий. Если состояние установки отображается в ожидании, подождите несколько минут и нажмите кнопку "Обновить" на панели инструментов.
Установка с помощью Azure CLI
Запустите сеанс оболочки. Вы можете запустить сеанс на компьютере или открыть в браузере станицу https://shell.azure.com.
Создайте файл конфигурации
protected-settings-extension.json
. Этот файл передается в качестве параметра при создании расширения Сетки событий.В следующей команде и в каждой строке конфигурации замените
filename
именем, которое содержит общедоступный сертификат, сертификат центра сертификации или ключ для оператора (на клиенте) или брокера (на сервере), соответственно. Все указанные сертификаты должны иметь кодировку Base64 без переноса строк. Поэтому используйте командуbase64 --wrap=0
.echo "{ \"eventgridoperator.identityCert.base64EncodedIdentityCert\":\"$(base64 <filename> --wrap=0)\", \"eventgridoperator.identityCert.base64EncodedIdentityKey\":\"$(base64 <filename> --wrap=0)\", \"eventgridoperator.identityCert.base64EncodedIdentityCaCert\":\"$(base64 <filename> --wrap=0)\", \"eventgridbroker.service.tls.base64EncodedServerCert\": \"$(base64 <filename> --wrap=0)\" , \"eventgridbroker.service.tls.base64EncodedServerKey\": \"$(base64 <filename> --wrap=0)\" , \"eventgridbroker.service.tls.base64EncodedServerCaCert\": \"$(base64 <filename> --wrap=0)\" }" > protected-settings-extension.json
Например, если общедоступный сертификат брокера (первый элемент конфигурации выше) называется
client.cer
, первая строка конфигурации должна выглядеть следующим образом:\"eventgridoperator.identityCert.base64EncodedIdentityCert\":\"$(base64 client.cer --wrap=0)\",
Создайте файл конфигурации
settings-extension.json
. Этот файл передается в качестве параметра при создании расширения Сетки событий.Внимание
Вы не можете изменить значения для
ServiceAccount
иserviceType
. В предварительной версии для службы Kubernetes поддерживается только типClusterIP
.Для
storageClassName
укажите класс хранения, который необходимо использовать для брокера и которое поддерживается дистрибутивом Kubernetes. Например, если используется AKS, можно указатьazurefile
. При этом будет использоваться служба хранения Azure уровня "Стандартный". Дополнительные сведения о предопределенных классах хранения, поддерживаемых AKS, см. в статье Классы хранения в AKS. Если вы используете другой дистрибутив Kubernetes, список поддерживаемых предопределенных классов хранения или способ предоставления собственного класса см. в документации к своему дистрибутиву.Задайте для
reporterType
значениеprometheus
, чтобы включить метрики для разделов и подписок на события, используя формат демонстрации Prometheus.Внимание
В предварительной версии использование клиента Prometheus — единственный поддерживаемый механизм для получения метрик.
echo "{ \"Microsoft.CustomLocation.ServiceAccount\":\"eventgrid-operator\", \"eventgridbroker.service.serviceType\": \"ClusterIP\", \"eventgridbroker.dataStorage.storageClassName\": \"<storage_class_name>\", \"eventgridbroker.diagnostics.metrics.reporterType\":\"prometheus\" }" > settings-extension.json
Создайте расширение Kubernetes, которое устанавливает компоненты Сетки событий в кластере.
Для параметров
cluster-name
иresource-group
необходимо использовать те же имена, которые были указаны при подключении кластера к Azure Arc.release-namespace
— это пространство имен, в котором будут развернуты компоненты Сетки событий. Имя по умолчанию — eventgrid-system. Возможно, потребуется указать значение для переопределения значения по умолчанию. Например, может потребоваться одно пространство имен для всех служб с поддержкой Azure Arc, развернутых в кластере. Если указанного пространства имен нет, оно создается автоматически.Внимание
Во время действия предварительной версии
cluster
— единственная область, поддерживаемая при создании или обновлении расширения Сетки событий. Это означает, что служба поддерживает только один экземпляр расширения Сетки событий в кластере Kubernetes. Развертывания с заданной областью пространства имен пока не поддерживаются. Дополнительные сведения см. в разделе "Область расширения".az k8s-extension create \ --cluster-type connectedClusters \ --cluster-name <connected_cluster_name> \ --resource-group <resource_group_of_connected_cluster> \ --name <event_grid_extension_name> \ --extension-type Microsoft.EventGrid \ --scope cluster \ --auto-upgrade-minor-version true \ --release-train Stable \ --release-namespace <namespace_name> \ --configuration-protected-settings-file protected-settings-extension.json \ --configuration-settings-file settings-extension.json
Дополнительные сведения о команде CLI см. в разделе az k8s-extension create. Обратите внимание, что параметр
--config-file
можно использовать для передачи имени JSON-файла, содержащего сведения о конфигурации, связанные с Сеткой событий. Чтобы обеспечить поддержку HTTP, добавьте следующий параметр."eventgridbroker.service.supportedProtocols[0]": "http"
Ниже приведен пример файла settings-extension.json с указанным выше параметром.
{ "Microsoft.CustomLocation.ServiceAccount": "eventgrid-operator", "eventgridbroker.service.serviceType": "ClusterIP", "eventgridbroker.service.supportedProtocols[0]": "http", "eventgridbroker.dataStorage.storageClassName": "default", "eventgridbroker.diagnostics.metrics.reporterType": "prometheus" }
Убедитесь, что расширение Сетки событий успешно установлено.
az k8s-extension show --cluster-type connectedClusters --cluster-name <connected_cluster_name> --resource-group <resource_group_of_connected_cluster> --name <event_grid_extension_name>
Если компоненты расширения Сетки событий успешно развернуты, свойство
installedState
должно иметь значениеInstalled
.
Пользовательское расположение
Внимание
Прежде чем пытаться развернуть разделы Сетки событий, необходимо создать пользовательское расположение. Пользовательское расположение можно создать с помощью портала Azure.
Устранение неполадок
Проблемы с подключением кластера к Azure Arc
Проблема. При переходе к Azure Arc и выборе кластера Kubernetes в меню слева на странице не отображается кластер Kubernetes, в котором я намерен установить сетку событий.
Решение. Кластер Kubernetes не зарегистрирован в Azure. Выполните действия, описанные в статье "Подключение существующего кластера Kubernetes к Azure Arc". Если на этом шаге возникла проблема, отправьте запрос в службу поддержки с поддержкой Kubernetes с поддержкой Azure Arc.
Проблемы с расширением Сетки событий
Проблема. При попытке установить расширение Сетки событий появляется следующее сообщение: "Недопустимая операция. В этом подключенном кластере Kubernetes уже установлен экземпляр Сетки событий. Расширение Сетки событий имеет область действия на уровне кластера, поэтому в кластере может быть установлен только один экземпляр".
Объяснение. Сетка событий уже установлена. Предварительная версия Сетки событий поддерживает развертывание только одного экземпляра расширения Сетки событий в кластере.
Следующие шаги
Создайте пользовательское расположение, а затем следуйте инструкциям в кратком руководстве по маршрутизации событий облака в веб-перехватчики с помощью службы "Сетка событий Azure" в Kubernetes.