Випущено Sail Operator 1.0.0: керуйте Istio за допомогою оператора
Зануртеся в основи Sail Operator і перегляньте приклад, щоб побачити, як легко використовувати його для управління Istio.
Sail Operator — це проєкт спільноти, започаткований Red Hat для створення сучасного оператора для Istio. Вперше анонсований у серпні 2024 року, ми раді повідомити, що Sail Operator тепер є GA з чіткою місією: спростити та впорядкувати управління Istio у вашому кластері.
Спрощене розгортання та керування
Sail Operator розроблений, щоб зменшити складність встановлення та запуску Istio. Він автоматизує ручні завдання, забезпечуючи послідовну, надійну і нескладну роботу від початкового встановлення до постійного обслуговування та оновлення версій Istio у вашому кластері. API-інтерфейси Sail Operator побудовані на основі API-інтерфейсів Helm chart Istio, що означає, що всі конфігурації Istio доступні через значення CRD Sail Operator.
Ми рекомендуємо користувачам ознайомитися з нашою документацією, щоб дізнатися більше про цей новий спосіб керування середовищем Istio.
Основними ресурсами, що входять до складу Sail Operator, є
Istio
: керує панеллю управлінняIstio.IstioRevision
: представляє ревізію панелі управління.IstioRevisionTag
: представляє стабільний теґ ревізії, який функціонує як псевдонім для ревізії панелі управління Istio.IstioCNI
: керує агентом вузла CNI Istio.ZTunnel
: керує режимом оточення ztunnel DaemonSet (функція Alpha).
Основні функції та підтримка
- Кожним компонентом панелі управління Istio керує Sail Operator незалежно за допомогою спеціальних власних ресурсів Kubernetes (CR). Sail Operator надає окремі CRD для таких компонентів, як
Istio
,IstioCNI
таZTunnel
, що дозволяє вам налаштовувати, керувати та оновлювати їх окремо. Крім того, існують CRD дляIstioRevision
таIstioRevisionTag
для керування ревізіями панелі управління Istio. - Підтримка декількох версій Istio. Наразі підтримується версія 1.0.0: 1.24.3, 1.24.2, 1.24.1, 1.23.5, 1.23.4, 1.23.3, 1.23.0.
- Підтримуються дві стратегії оновлення:
InPlace
іRevisionBased
. Для отримання додаткової інформації про підтримувані типи оновлень зверніться до нашої документації. - Підтримка багатокластерної моделі розгортання Istio: multi-primary, primary-remote, зовнішня панель управління. Більше інформації та прикладів у нашій документації.
- Підтримка режиму Ambient у версії Alpha: зверніться до нашої спеціальної документації.
- Надбудови управляються окремо від Sail Operator. Вони можуть бути легко інтегровані з Sail Operator, зверніться до цього розділу документації за прикладами та додатковою інформацією.
Чому зараз?
Оскільки хмарні архітектури продовжують розвиватися, ми вважаємо, що надійний і зручний оператор для Istio є більш важливим, ніж будь-коли. Sail Operator пропонує розробникам та операційним командам послідовне, безпечне та ефективне рішення, яке є звичним для тих, хто звик працювати з операторами. Його випуск GA сигналізує про зрілість рішення, готового підтримувати навіть найвимогливіші виробничі середовища.
Спробуйте
Хочете спробувати Sail Operator? Цей приклад покаже вам, як безпечно оновити панель управління Istio, використовуючи стратегію оновлення на основі ревізій. Це означає, що у вас будуть одночасно працювати дві панелі управління Istio, що дозволить вам легко мігрувати робочі навантаження, мінімізуючи ризик перебоїв у роботі.
Необхідні умови:
- Працюючий кластер
- Helm
- Kubectl
- Istioctl
Встановіть Sail Operator за допомогою Helm
$ helm repo add sail-operator https://istio-ecosystem.github.io/sail-operator
$ helm repo update
$ kubectl create namespace sail-operator
$ helm install sail-operator sail-operator/sail-operator --version 1.0.0 -n sail-operator
Тепер оператор встановлений у вашому кластері:
NAME: sail-operator
LAST DEPLOYED: Tue Mar 18 12:00:46 2025
NAMESPACE: sail-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
Перевірте, чи працює pod оператора:
$ kubectl get pods -n sail-operator
NAME READY STATUS RESTARTS AGE
sail-operator-56bf994f49-j67ft 1/1 Running 0 87s
Створіть ресурси Istio
та IstioRevisionTag
Створіть ресурси Istio
з версією v1.24.2
та IstioRevisionTag
:
$ kubectl create ns istio-system
$ cat <<EOF | kubectl apply -f-
apiVersion: sailoperator.io/v1
kind: Istio
metadata:
name: default
spec:
namespace: istio-system
updateStrategy:
type: RevisionBased
inactiveRevisionDeletionGracePeriodSeconds: 30
version: v1.24.2
---
apiVersion: sailoperator.io/v1
kind: IstioRevisionTag
metadata:
name: default
spec:
targetRef:
kind: Istio
name: default
EOF
Зверніть увагу, що теґ IstioRevisionTag
має цільове посилання на ресурс Istio
з іменем default
.
Перевірте стан створених ресурсів:
podʼи
istiod
запущено$ kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istiod-default-v1-24-2-bd8458c4-jl8zm 1/1 Running 0 3m45s
ресурс
Istio
створено$ kubectl get istio NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE default 1 1 1 default-v1-24-2 Healthy v1.24.2 4m27s
ресурс
IstioRevisionTag
створено$ kubectl get istiorevisiontag NAME STATUS IN USE REVISION AGE default NotReferencedByAnything False default-v1-24-2 4m43s
Зверніть увагу, що статус IstioRevisionTag
має значення NotReferencedByAnything
. Це повʼязано з тим, що наразі немає ресурсів, які використовують ревізію default-v1-24-2
.
Розгорніть демонстраційний застосунок
Створіть простір імен та позначте його, щоб увімкнути інʼєкцію Istio:
$ kubectl create namespace sample
$ kubectl label namespace sample istio-injection=enabled
Після позначення міткою простору імен ви побачите, що статус ресурсу IstioRevisionTag
зміниться на ‘In Use: True’, оскільки тепер існує ресурс, який використовує ревізію default-v1-24-2
:
$ kubectl get istiorevisiontag
NAME STATUS IN USE REVISION AGE
default Healthy True default-v1-24-2 6m24s
Розгорніть демонстраційний застосунок:
$ kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/sleep/sleep.yaml -n sample
Переконайтеся, що проксі-версія демонстраційного застосунку збігається з версією панелі управління:
$ istioctl proxy-status
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION
sleep-5fcd8fd6c8-q4c9x.sample Kubernetes SYNCED (78s) SYNCED (78s) SYNCED (78s) SYNCED (78s) IGNORED istiod-default-v1-24-2-bd8458c4-jl8zm 1.24.2
Оновлення панелі управління Istio до версії 1.24.3
Оновіть ресурс Istio
до нової версії:
$ kubectl patch istio default -n istio-system --type='merge' -p '{"spec":{"version":"v1.24.3"}}'
Перевірте ресурс Istio
. Ви побачите, що там є дві версії і обидві ‘ready’:
$ kubectl get istio
NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE
default 2 2 2 default-v1-24-3 Healthy v1.24.3 10m
Тег IstioRevisiontag
тепер посилається на нову ревізію:
$ kubectl get istiorevisiontag
NAME STATUS IN USE REVISION AGE
default Healthy True default-v1-24-3 11m
Існує дві IstioRevisions
, по одній для кожної версії Istio:
$ kubectl get istiorevision
NAME TYPE READY STATUS IN USE VERSION AGE
default-v1-24-2 True Healthy True v1.24.2 11m
default-v1-24-3 True Healthy True v1.24.3 92s
Sail Operator автоматично визначає, чи використовується дана панель управління Istio, і записує цю інформацію в стан «In Use», який ви бачите вище. Наразі всі IstioRevisions
та наш IstioRevisionTag
вважаються «In Use»:
- Стара ревізія
default-v1-24-2
вважається такою, що використовується, оскільки на неї є посилання у sidecar демонстраційного застосунку. - Нова ревізія
default-v1-24-3
вважається такою, що використовується, оскільки на неї посилається теґ. - Теґ вважається таким, що використовується, оскільки на нього посилається простір імен демонстраційного застосунку.
Переконайтеся, що запущено два pod’и панелі управління, по одному для кожної ревізії:
$ kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
istiod-default-v1-24-2-bd8458c4-jl8zm 1/1 Running 0 16m
istiod-default-v1-24-3-68df97dfbb-v7ndm 1/1 Running 0 6m32s
Переконайтеся, що версія проксі-sidecar не змінилася:
$ istioctl proxy-status
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION
sleep-5fcd8fd6c8-q4c9x.sample Kubernetes SYNCED (6m40s) SYNCED (6m40s) SYNCED (6m40s) SYNCED (6m40s) IGNORED istiod-default-v1-24-2-bd8458c4-jl8zm 1.24.2
Перезапустіть pod sample:
$ kubectl rollout restart deployment -n sample
Переконайтеся, що версія проксі-sidecar оновлена:
$ istioctl proxy-status
NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION
sleep-6f87fcf556-k9nh9.sample Kubernetes SYNCED (29s) SYNCED (29s) SYNCED (29s) SYNCED (29s) IGNORED istiod-default-v1-24-3-68df97dfbb-v7ndm 1.24.3
Коли IstioRevision
більше не використовується і не є активною ревізією ресурсу Istio
(наприклад, коли це не та версія, що вказана у полі spec.version
), Sail Operator видалить її після пільгового періоду, який стандартно становить 30 секунд. Підтвердьте видалення старої панелі управління та IstioRevision
:
Pod старої панелі управління видалено
$ kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE istiod-default-v1-24-3-68df97dfbb-v7ndm 1/1 Running 0 10m
Старий ресурс
IstioRevision
видалено$ kubectl get istiorevision NAME TYPE READY STATUS IN USE VERSION AGE default-v1-24-3 True Healthy True v1.24.3 13m
Ресурс
Istio
тепер має тільки одну ревізію$ kubectl get istio NAME REVISIONS READY IN USE ACTIVE REVISION STATUS VERSION AGE default 1 1 1 default-v1-24-3 Healthy v1.24.3 24m
Вітаємо! Ви успішно оновили панель управління Istio за допомогою стратегії оновлення на основі ревізій.
Висновок
Sail Operator автоматизує ручні завдання, забезпечуючи послідовну, надійну і нескладну роботу від початкового встановлення до поточного обслуговування та оновлення Istio у вашому кластері. Sail Operator є проєктом istio-екосистеми, і ми заохочуємо вас випробувати його і надати відгуки, щоб допомогти нам поліпшити його, ви можете ознайомитися з нашим посібником з участі для отримання додаткової інформації про те, як зробити свій внесок у проєкт.