Випущено Sail Operator 1.0.0: керуйте Istio за допомогою оператора

Зануртеся в основи Sail Operator і перегляньте приклад, щоб побачити, як легко використовувати його для управління Istio.

Apr 3, 2025 | Від Francisco Herrera - Red Hat

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 є більш важливим, ніж будь-коли. Sail Operator пропонує розробникам та операційним командам послідовне, безпечне та ефективне рішення, яке є звичним для тих, хто звик працювати з операторами. Його випуск GA сигналізує про зрілість рішення, готового підтримувати навіть найвимогливіші виробничі середовища.

Спробуйте

Хочете спробувати Sail Operator? Цей приклад покаже вам, як безпечно оновити панель управління Istio, використовуючи стратегію оновлення на основі ревізій. Це означає, що у вас будуть одночасно працювати дві панелі управління Istio, що дозволить вам легко мігрувати робочі навантаження, мінімізуючи ризик перебоїв у роботі.

Необхідні умови:

Встановіть 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.

Перевірте стан створених ресурсів:

Зверніть увагу, що статус 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»:

Переконайтеся, що запущено два 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:

Вітаємо! Ви успішно оновили панель управління Istio за допомогою стратегії оновлення на основі ревізій.

Висновок

Sail Operator автоматизує ручні завдання, забезпечуючи послідовну, надійну і нескладну роботу від початкового встановлення до поточного обслуговування та оновлення Istio у вашому кластері. Sail Operator є проєктом istio-екосистеми, і ми заохочуємо вас випробувати його і надати відгуки, щоб допомогти нам поліпшити його, ви можете ознайомитися з нашим посібником з участі для отримання додаткової інформації про те, як зробити свій внесок у проєкт.

Share this post