Lanzamiento de Sail Operator 1.0.0: gestiona Istio con un operador

Sumérgete en los conceptos básicos del Operador Sail y echa un vistazo a un ejemplo para ver lo fácil que es usarlo para gestionar Istio.

Apr 3, 2025 | Por Francisco Herrera - Red Hat

El Operador Sail es un proyecto comunitario lanzado por Red Hat para construir un operador moderno para Istio. Anunciado por primera vez en agosto de 2024, nos complace anunciar que el Operador Sail ya es GA con una misión clara: simplificar y agilizar la gestión de Istio en tu cluster.

Despliegue y gestión simplificados

El Operador Sail está diseñado para reducir la complejidad de instalar y ejecutar Istio. Automatiza las tareas manuales, garantizando una experiencia consistente, fiable y sin complicaciones desde la instalación inicial hasta el mantenimiento y las actualizaciones continuas de las versiones de Istio en tu cluster. Las API del Operador Sail se basan en las API de los charts de Helm de Istio, lo que significa que todas las configuraciones de Istio están disponibles a través de los valores de las CRD del Operador Sail.

Animamos a los usuarios a que consulten nuestra documentación para obtener más información sobre esta nueva forma de gestionar su entorno de Istio.

Los principales recursos que forman parte del Operador Sail son:

Características principales y soporte

¿Por qué ahora?

A medida que las arquitecturas nativas de la nube continúan evolucionando, creemos que un operador robusto y fácil de usar para Istio es más esencial que nunca. El Operador Sail ofrece a los equipos de desarrollo y operaciones una solución consistente, segura y eficiente que resulta familiar para aquellos acostumbrados a trabajar con operadores. Su lanzamiento GA señala una solución madura, lista para soportar incluso los entornos de producción más exigentes.

Pruébalo

¿Te gustaría probar el Operador Sail? Este ejemplo te mostrará cómo realizar una actualización segura de tu control plane de Istio utilizando la estrategia de actualización basada en revisiones. Esto significa que tendrás dos control planes de Istio ejecutándose al mismo tiempo, lo que te permitirá migrar los workloads fácilmente, minimizando el riesgo de interrupciones del tráfico.

Prerrequisitos:

Instalar el Operador Sail usando 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

El operador ya está instalado en tu cluster:

NAME: sail-operator
LAST DEPLOYED: Tue Mar 18 12:00:46 2025
NAMESPACE: sail-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None

Comprueba que el pod del operador se está ejecutando:

$ kubectl get pods -n sail-operator
NAME                             READY   STATUS    RESTARTS   AGE
sail-operator-56bf994f49-j67ft   1/1     Running   0          87s

Crear recursos Istio e IstioRevisionTag

Crea un recurso Istio con la versión v1.24.2 y un 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

Ten en cuenta que el IstioRevisionTag tiene una referencia de destino al recurso Istio con el nombre default

Comprueba el estado de los recursos creados:

Ten en cuenta que el estado de IstioRevisionTag es NotReferencedByAnything. Esto se debe a que actualmente no hay recursos que utilicen la revisión default-v1-24-2.

Desplegar aplicación de ejemplo

Crea un namespace y etiquétalo para habilitar la inyección de Istio:

$ kubectl create namespace sample
$ kubectl label namespace sample istio-injection=enabled

Después de etiquetar el namespace, verás que el estado del recurso IstioRevisionTag cambiará a ‘In Use: True’, porque ahora hay un recurso que utiliza la revisión default-v1-24-2:

$ kubectl get istiorevisiontag
NAME      STATUS    IN USE   REVISION          AGE
default   Healthy   True     default-v1-24-2   6m24s

Despliega la aplicación de ejemplo:

$ kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.27/samples/sleep/sleep.yaml -n sample

Confirma que la versión del proxy de la aplicación de ejemplo coincide con la versión del control plane:

$ 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

Actualizar el control plane de Istio a la versión 1.24.3

Actualiza el recurso Istio con la nueva versión:

$ kubectl patch istio default -n istio-system --type='merge' -p '{"spec":{"version":"v1.24.3"}}'

Comprueba el recurso Istio. Verás que hay dos revisiones y que ambas están ’listas’:

$ 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

El IstioRevisiontag ahora hace referencia a la nueva revisión:

$ kubectl get istiorevisiontag
NAME      STATUS    IN USE   REVISION          AGE
default   Healthy   True     default-v1-24-3   11m

Hay dos IstioRevisions, una para cada versión de 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

El Operador Sail detecta automáticamente si un determinado control plane de Istio se está utilizando y escribe esta información en la condición de estado “In Use” que ves arriba. En este momento, todas las IstioRevisions y nuestro IstioRevisionTag se consideran “In Use”:

Confirma que hay dos pods del control plane en ejecución, uno para cada revisión:

$ 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

Confirma que la versión del sidecar del proxy sigue siendo la misma:

$ 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

Reinicia el pod de ejemplo:

$ kubectl rollout restart deployment -n sample

Confirma que la versión del sidecar del proxy está actualizada:

$ 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

Cuando una IstioRevision ya no está en uso y no es la revisión activa de un recurso Istio (por ejemplo, cuando no es la versión que se establece en el campo spec.version), el Operador Sail la eliminará después de un período de gracia, que por defecto es de 30 segundos. Confirma la eliminación del antiguo control plane e IstioRevision:

¡Felicidades! Has actualizado correctamente tu control plane de Istio utilizando la estrategia de actualización basada en revisiones.

Conclusión

El Operador Sail automatiza las tareas manuales, garantizando una experiencia consistente, fiable y sin complicaciones desde la instalación inicial hasta el mantenimiento y las actualizaciones continuas de Istio en tu cluster. El Operador Sail es un proyecto de istio-ecosystem, y te animamos a que lo pruebes y nos des tu opinión para ayudarnos a mejorarlo. Puedes consultar nuestra guía de contribución para obtener más información sobre cómo contribuir al proyecto.

Share this post