Istio оголошує про визнання застарілим In-Cluster Operator
Що потрібно знати, якщо ви використовуєте контролер оператора у вашому кластері.
In-Cluster Operator Istio було визнано застарілим в Istio 1.23. Користувачам, які використовують оператор, кількість яких ми оцінюємо менше ніж 10% від нашої бази користувачів, потрібно буде мігрувати до інших механізмів інсталяції та оновлення, щоб оновитися до Istio 1.24 або вище. Читайте далі, щоб дізнатися, чому ми прийняли це рішення та що потрібно зробити користувачам оператора.
Чи це вплине на вас?
Це застарівання стосується лише користувачів In-Cluster Operator. Користувачі, які встановлюють Istio за допомогою команди istioctl install
і YAML файлу IstioOperator
, не постраждають.
Щоб визначити, чи це вплине на вас, виконайте команди kubectl get deployment -n istio-system istio-operator
і kubectl get IstioOperator
. Якщо обидві команди повертають непорожні значення, ваш кластер знаходиться під впливом цього застарівання. Згідно з останніми опитуваннями, ми очікуємо, що це вплине на менше ніж 10% користувачів Istio.
Інсталяції Istio на основі оператора продовжать працювати безстроково, але не зможуть бути оновлені вище 1.23.x.
Коли потрібно мігрувати?
Відповідно до політики визнання функцій застарілими в Istio для бета-функцій, In-Cluster Operator Istio буде видалено з релізом Istio 1.24, приблизно через три місяці після цього оголошення. Istio 1.23 буде підтримуватись до березня 2025 року, після чого користувачам оператора потрібно буде мігрувати до іншого механізму інсталяції для збереження підтримки.
Як мігрувати?
Проєкт Istio продовжить підтримувати інсталяцію та оновлення через команду istioctl
, а також з допомогою Helm. Через популярність Helm в екосистемі розробки платформ, ми рекомендуємо більшості користувачів мігрувати на Helm. istioctl install
базується на шаблонах Helm, і в майбутніх версіях можливе глибше інтегрування з Helm.
Інсталяції Helm також можуть бути керовані з допомогою GitOps інструментів, таких як Flux або Argo CD.
Користувачі, які віддають перевагу шаблону оператора для запуску Istio, можуть мігрувати до одного з двох нових проєктів екосистеми Istio: Classic Operator Controller або Sail Operator.
Міграція на Helm
Міграція на Helm вимагає переведення вашого YAML файлу IstioOperator
у Helm values.yaml
. Інструменти для підтримки цієї міграції будуть надані разом з релізом Istio 1.24.
Міграція на istioctl
Визначте ваш ресурс IstioOperator
: має бути лише один результат.
$ kubectl get IstioOperator
Використовуючи імʼя вашого ресурсу, завантажте конфігурацію вашого оператора у форматі YAML:
$ kubectl get IstioOperator <name> > istio.yaml
Вимкніть In-Cluster Operator. Це не вимкне вашу панель управління або порушить ваш поточний трафік мережі.
$ kubectl scale deployment -n istio-system istio-operator –replicas 0
Коли ви будете готові оновити Istio до версії 1.24 або пізнішої, дотримуйтесь інструкцій з оновлення, використовуючи файл istio.yaml
, який ви завантажили вище.
Після завершення та перевірки вашої міграції виконайте наступні команди для очищення ресурсів оператора:
$ kubectl delete deployment -n istio-system istio-operator
$ kubectl delete customresourcedefinition istiooperator
Міграція на Classic Operator Controller
Новий проєкт екосистеми, Classic Operator Controller, є форком оригінального контролера, вбудованого в Istio. Цей проєкт підтримує той самий API та кодову базу, що й оригінальний оператор, але підтримується поза основним проєктом Istio.
Оскільки API є таким самим, міграція є прямолінійною: потрібно лише інсталювати новий оператор.
Classic Operator Controller не підтримується проєктом Istio.
Міграція на Sail Operator
Новий проєкт екосистеми, Sail Operator, може інсталювати та керувати життєвим циклом панелі управління Istio у Kubernetes або OpenShift кластері.
API Sail Operator побудовані навколо API Helm charts Istio. Усі параметри інсталяції та конфігурації, які надаються через Helm charts Istio, доступні через поля values:
CRD Sail Operator.
Sail Operator не підтримується проєктом Istio.
Що таке оператор і чому Istio його мав?
Шаблон оператора був популяризований CoreOS у 2016 році метод кодифікації людського інтелекту в код. Найбільш поширене використання — це оператор бази даних, де користувач може мати кілька екземплярів бази даних в одному кластері з кількома поточними операційними завданнями (резервні копії, вакуумування, розподіл).
Istio вперше представив istioctl і In-Cluster Operator у версії 1.4, у відповідь на проблеми з Helm v2. Того ж часу було представлено Helm v3, який вирішив проблеми спільноти і є переважним методом інсталяції програмного забезпечення в Kubernetes сьогодні. Підтримка Helm v3 була додана в Istio 1.8.
In-Cluster Operator Istio обробляв інсталяцію компонентів сервісної мережі — операцію, яку зазвичай виконуєте один раз і для одного екземпляра на кластер. Можна вважати це способом запуску istioctl всередині вашого кластера. Однак це означало, що у вас є контролер з високими привілеями всередині вашого кластера, що послаблює вашу безпеку. Він не обробляє жодних поточних адміністративних завдань (резервні копії, знімки тощо, не є вимогами для запуску Istio).
Istio оператор є чимось, що потрібно встановити в кластер, що означає, що ви вже повинні управляти інсталяцією чогось. Використання його для оновлення кластера також спочатку вимагало завантаження та запуску нової версії istioctl.
Використання оператора означає, що ви створили рівень абстракції, де вам потрібно мати параметри у вашому власному ресурсі для налаштування всього, що ви можете бажати змінити в інсталяції. Istio обійшов це, пропонуючи API IstioOperator
, яке дозволяє конфігурувати параметри інсталяції. Цей ресурс використовується як In-Cluster Operator, так і istioctl install, тому є тривіальний шлях міграції для користувачів оператора.
Три роки тому, приблизно в часі Istio 1.12, ми оновили нашу документацію, щоб сказати, що використання оператора для нових інсталяцій Istio не рекомендується, і що користувачі повинні використовувати istioctl або Helm для інсталяції Istio.
Наявність трьох різних методів інсталяції викликало плутанину, і для того, щоб забезпечити найкращий досвід для людей, які використовують Helm або istioctl, понад 90% нашої бази установок, ми вирішили офіційно визнати застарілим In-Cluster Operator в Istio 1.23.