Как настроить и применить изменения конфигурации к ресурсам Istio?
Содержание
Overview
Background information
Платформа предоставляет возможности Istio через инкапсуляцию CRD или работу с ресурсами Istio (DestinationRule, VirtualService и др.). Способы работы (добавление, удаление, изменение) с ресурсами Istio на платформе включают:
-
Пользователи выполняют действия через UI платформы.
-
Выполнение операций на конкретных функциональных страницах. Например, на вкладке Routes страницы деталей сервиса создание ресурса virtual service через Create Route.
-
Прямое редактирование YAML-файла ресурсов Istio на странице Resources кластеров. Администраторы могут создавать, изменять или удалять YAML-операции над ресурсами Kubernetes, включая ресурсы Istio.
-
-
Компонент сервисной сетки Controller (global-asm-controller/asm-controller) автоматически настраивается согласно CRD или API, и в процессе настройки Controller автоматически обновляет ресурсы Istio.
Например, после создания политики балансировки нагрузки для сервиса на платформе через UI, Controller автоматически создаёт соответствующий ресурс DestinationRule; наоборот, после удаления политики балансировки нагрузки Controller автоматически удаляет соответствующий ресурс DestinationRule.
Solution overview
Если функциональность UI продукта не удовлетворяет вашим требованиям и нативная поддержка Istio необходима, вы можете использовать данную документацию для настройки и применения изменений в YAML-файлах ресурсов Istio на странице Platform Management > Clusters > Resources, временно используя возможности, предоставляемые нативным Istio.
Метод настройки и применения изменений конфигурации ресурсов Istio следующий:
-
Добавьте аннотацию
asm.cpaas.io/user-managed: "true"к ресурсам Istio, чтобы отсоединить их от контроля Controller и избежать восстановления или изменения пользовательских изменений компонентом Controller. -
Настройте YAML-конфигурацию на основе справочной документации, предоставленной Istio.
Constraints and limitations
-
Ресурсы Istio, настроенные таким способом, больше не контролируются компонентом Controller и требуют ручного управления пользователями.
-
Если изменённая YAML-конфигурация не соответствует дизайну Istio, могут возникнуть неизвестные проблемы, влияющие на функциональность.
-
При обновлении на новую версию Istio в будущем платформа не будет выполнять обновления совместимости для неконтролируемых ресурсов. Вам потребуется самостоятельно оценивать совместимость и выполнять соответствующую обработку.
Configuration example
Ниже приведён пример на основе сценария изменения ресурса DestinationRule для настройки различных политик балансировки нагрузки для нескольких портов сервиса.
Scenario
Сервис s1 имеет 2 порта: 80 (протокол HTTP) и 81 (протокол TCP). При создании политики балансировки нагрузки для сервиса через UI поддерживается только настройка одинаковой политики для всех портов (например, балансировка нагрузки по наименьшему количеству запросов). Вы можете изменить ресурс DestinationRule для s1, чтобы настроить разные политики балансировки нагрузки для портов 80 и 81 соответственно.
Procedure
-
После входа в Service Mesh платформу нажмите Services в левой навигационной панели.
-
Кликните на название сервиса, который нужно настроить.
-
На вкладке Policies нажмите Create Policy > Load Balancer.
-
После выбора политики Minimum Request Load нажмите Create.
Подсказка: После успешного создания политики балансировки нагрузки компонент Controller автоматически создаст ресурс DestinationRule с именем
asm-<service name>. Вы можете просмотреть YAML этого ресурса на странице Resources. -
Нажмите на переключатель вида продукта в верхней навигационной панели, чтобы перейти в Platform Management.
-
В левой навигационной панели выберите Clusters > Resources.
Подсказка: Вы можете переключать кластеры через верхнюю навигацию.
-
В пространстве имён, где расположен сервис, найдите ресурс DestinationRule с именем
asm-<service name>. -
Нажмите
> Update справа от DestinationRule.
В примере ниже добавьте аннотацию
asm.cpaas.io/user-managed: "true"и настройте политики балансировки нагрузки для портов сервиса отдельно.