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


Установка расширения Сетки событий в кластере Kubernetes с поддержкой Azure Arc

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

Для краткости в этой статье расширение Сетки событий в Kubernetes называется "Сеткой событий в Kubernetes" или просто "Сеткой событий".

Важно!

Служба "Сетка событий" в Kubernetes с поддержкой Azure Arc сейчас находится в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания и не рекомендована для использования рабочей среде. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования предварительных выпусков Microsoft Azure.

Поддерживаемые дистрибутивы Kubernetes

Ниже приведены поддерживаемые дистрибутивы Kubernetes, в которых можно развернуть и запустить Сетку событий.

  1. Дистрибутивы Kubernetes, поддерживаемые Azure AKS.
  2. Платформа контейнеров OpenShift в RedHat.

Расширение Сетки событий

Для установки экземпляра службы "Сетка событий" в кластере Kubernetes необходимо создать расширение кластера Azure Arc, которое развертывает брокер и оператор Сетки событий. Дополнительные сведения о работе брокера и оператора см. в статье Компоненты Сетки событий в Kubernetes. Функция расширения кластера Azure Arc обеспечивает управление жизненным циклом с помощью операций уровня управления Azure Resource Manager (ARM) в Сетке событий, развернутой в кластерах Kubernetes с поддержкой Azure Arc.

Примечание

Предварительная версия службы поддерживает только один экземпляр расширения Сетки событий в кластере Kubernetes, так как это расширение в настоящее время определено на уровне кластера. Развертывание Сетки событий в области пространства имен, которое позволило бы развертывать несколько экземпляров в кластере, пока не поддерживается. Дополнительные сведения см. в разделе Область расширения.

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

Прежде чем приступать к установке Сетки событий, выполните приведенные ниже предварительные условия.

  1. Кластер, работающий в одном из поддерживаемых дистрибутивов Kubernetes.
  2. Подписка Azure.
  3. Сертификаты PKI для установления соединения по протоколу HTTPS с брокером Сетки событий.
  4. Подключите кластер к Azure Arc.

Получение поддержки

Если возникла проблема, см. раздел Устранение неполадок, в котором приводятся сведения о распространенных ошибках. Если у вас по-прежнему возникают проблемы, создайте запрос в службу поддержки Azure.

Требования к сертификатам PKI

Брокер (сервер) Сетки событий обслуживает два типа клиентов. Проверка подлинности сервера производится с помощью сертификатов. Проверка подлинности клиента в зависимости от его типа выполняется с помощью сертификатов или ключей SAS.

  • Операторы Сетки событий, выполняющие запросы уровня управления к брокеру Сетки событий, проходят проверку подлинности с помощью сертификатов.
  • Издатели Сетки событий, которые публикуют события в разделе Сетки событий, проходят проверку подлинности с помощью ключей SAS раздела.

Чтобы установить защищенное HTTPS-соединение с брокером и оператором Сетки событий, мы используем сертификаты PKI во время установки расширения Сетки событий. К ним предъявляются приведенные ниже общие требования.

  1. Сертификаты и ключи должны представлять собой сертификаты X.509 и кодироваться по стандарту PEM (почта с повышенной секретностью).

  2. Чтобы настроить сертификат брокера (сервера) Сетки событий во время установки, необходимо предоставить следующие элементы:

    1. сертификат ЦС;
    2. общедоступный сертификат;
    3. закрытого ключа.
  3. Чтобы настроить сертификат оператора (клиента) Сетки событий, необходимо предоставить следующие элементы:

    1. сертификат ЦС;
    2. общедоступный сертификат;
    3. закрытого ключа.

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

    Важно!

    Хотя у домена, связанного с клиентом, может быть несколько общедоступных сертификатов, выданных разными центрами сертификации, Сетка событий в Kubernetes позволяет отправлять во время установки только один сертификат ЦС для клиентов. По этой причине сертификаты для оператора Сетки событий должны быть выданы (подписаны) одним и тем же ЦС для успешной проверки цепочки сертификатов и установления сеанса TLS.

  4. При настройке общего имени (CN) для сертификатов сервера и клиента они должны отличаться от общего имени, указанного для сертификата центра сертификации.

    Важно!

    На ранних стадиях эксперимента можно использовать самозаверяющие сертификаты, но в общем случае необходимо получить и использовать соответствующие сертификаты PKI, подписанные центром сертификации (ЦС).

Установка с помощью портала Azure

  1. На портале Azure выполните поиск (в поле в верхней части страницы) по запросу Azure Arc.

  2. В меню слева в разделе Инфраструктура выберите пункт Кластер Kubernetes.

  3. В списке кластеров найдите и выберите тот из них, в котором нужно установить Сетку событий. Появится страница Обзор для кластера.

    Выбор кластера Kubernetes

  4. В меню слева в группе Параметры выберите пункт Расширения.

  5. Щелкните + Добавить. Откроется страница, на которой показаны доступные расширения Kubernetes для Azure Arc.

    Расширения кластера — кнопка

  6. На странице Новый ресурс выберите Event Grid on Kubernetes Extension (Расширение Сетки событий для Kubernetes).

    Выбор расширения Сетки событий для Kubernetes

  7. На странице Event Grid on Kubernetes Extension (Расширение Сетки событий для Kubernetes) нажмите Создать.

    Нажатие кнопки

  8. На вкладке Основные сведения на странице Install Event Grid (Установка Сетки событий) выполните следующие действия.

    1. В разделе Сведения о проекте значения подписки и группы ресурсов доступны только для чтения, так как расширения Azure Arc развертываются в той же подписке и группе ресурсов Azure подключенного кластера, где они установлены.

    2. Укажите имя в поле Имя расширения Сетки событий. Это имя должно быть уникальным среди других расширений Azure Arc, развернутых в том же подключенном кластере Azure Arc.

    3. В поле Пространство имен выпуска может потребоваться указать имя пространства имен Kubernetes, в котором будут развернуты компоненты Сетки событий. Например, может потребоваться одно пространство имен для всех служб с поддержкой Azure Arc, развернутых в кластере. Имя по умолчанию — eventgrid-system. Если указанного пространства имен нет, оно создается автоматически.

    4. В разделе сведений о брокере Сетки событий отображается тип службы. Брокер Сетки событий, предоставляющий конечные точки разделов, в которые отправляются события, имеет тип службы Kubernetes ClusterIP. Таким образом, всем разделам назначаются IP-адреса из частного диапазона, настроенного для кластера.

    5. Укажите имя класса хранения, которое необходимо использовать для брокера и которое поддерживается дистрибутивом Kubernetes. Например, если используется AKS, можно указать azurefile. При этом будет использоваться служба хранения Azure уровня "Стандартный". Дополнительные сведения о предопределенных классах хранения, поддерживаемых AKS, см. в статье Классы хранения в AKS. Если вы используете другой дистрибутив Kubernetes, список поддерживаемых предопределенных классов хранения или способ предоставления собственного класса см. в документации к своему дистрибутиву.

    6. Размер хранилища. Значение по умолчанию — 1 ГиБ. При определении размера хранилища учитывайте скорость приема. Скорость приема в МиБ/с, рассчитываемая как размер события, умноженный на частоту публикации (событий в секунду) во всех разделах брокера Сетки событий, является ключевым фактором при выделении хранилища. События являются по своей сути временными. После их доставки они больше не занимают место в хранилище. Хотя скорость приема является основным фактором, влияющим на использование хранилища, есть и другие. Метаданные, содержащие сведения о конфигурации разделов и подписок на события, также занимают место в хранилище, но обычно требуют его меньше, чем события, принимаемые и доставляемые Сеткой событий.

    7. Предельный объем памяти. Значение по умолчанию — 1 ГиБ.

    8. Запрос памяти. Значение по умолчанию — 200 МиБ. Это поле не подлежит изменению.

      Установка расширения Сетки событий — страница

    9. В нижней части страницы выберите Далее: настройка.

  9. На вкладке Конфигурация страницы Install Event Grid (Установка Сетки событий) выполните следующие действия.

    1. Включить связь по протоколу HTTP (небезопасно) . Установите этот флажок, если хотите использовать незащищенный канал для обмена данными между клиентами и брокером Сетки событий.

      Важно!

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

    2. Если вы не включили обмен данными по протоколу HTTP, выберите все полученные файлы сертификатов PKI, которые отвечают требованиям к сертификатам PKI.

      Установка расширения Сетки событий — страница настройки

    3. В нижней части страницы нажмите кнопку Далее: мониторинг.

  10. На вкладке Мониторинг страницы Install Event Grid (Установка Сетки событий) выполните следующие действия.

    1. Выберите Включить метрики (необязательно). Если выбрать этот параметр, сетка событий в Kubernetes предоставит ряд метрик для разделов и подписок на события в формате демонстрации Prometheus.

      Установка расширения Сетки событий — страница

    2. Нажмите кнопку Далее: теги, чтобы перейти на страницу Теги.

  11. На странице Теги выполните следующие действия.

    1. При необходимости определите теги.

      Установка расширения Сетки событий — страница

    2. В нижней части страницы выберите Review + create (Проверить и создать).

  12. На вкладке Проверить и создать выберите Создать.

    Установка расширения Сетки событий — страница

    Важно!

    Установка Сетки событий является асинхронной операцией, и вы можете получить на портале 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. Дополнительные сведения см. в документации пользовательского расположения.

  13. После завершения развертывания вы увидите на странице Расширения запись с именем, указанным для расширения Сетки событий. Если для состояния установкиотображается значение Ожидание, подождите несколько минут, а затем выберите Обновить на панели инструментов.

    Расширения Сетки событий установлено

Установка с помощью Azure CLI

  1. Запустите сеанс оболочки. Вы можете запустить сеанс на компьютере или открыть в браузере станицу https://shell.azure.com.

  2. Создайте файл конфигурации 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)\",    
    
  3. Создайте файл конфигурации 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
    
  4. Создайте расширение 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"
    }    
    
  5. Убедитесь, что расширение "Сетка событий" успешно установлено.

    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.