Как настроить и применить изменения конфигурации к ресурсам Istio?
Содержание
OverviewBackground informationSolution overviewConstraints and limitationsConfiguration exampleScenarioProcedureOverview
Background information
Платформа предоставляет возможности Istio через инкапсуляцию CRD или работу с ресурсами Istio (DestinationRule, VirtualService и др.). Способы управления (добавления, удаления, изменения) ресурсами Istio на платформе включают:
-
Пользователи выполняют действия через UI платформы.
-
Выполнение операций на конкретных функциональных страницах. Например, на вкладке Routes страницы с деталями сервиса создание ресурса virtual service через Create Route.
-
Прямое редактирование YAML-файла ресурсов Istio на странице Resources кластеров. Администраторы могут создавать, изменять или удалять YAML-операции с ресурсами Kubernetes, включая ресурсы Istio.
-
-
Компонент service mesh 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"и настройте политики балансировки нагрузки для портов сервиса отдельно.