El papel de los Operadores k8's en el mundo DevOps/SRE’s

Abr 20 2021
El papel de los Operadores en el mundo DevOps/SRE’s

En el mundo kubernetes, existen varias alternativas a la hora de gestionar el ciclo de vida de las aplicaciones.

Una de las alternativas son los Operadores, que se posicionan como una solución para empaquetar, distribuir y mantener las aplicaciones.

Desde la perspectiva del Desarrollador, los Operadores proporcionan un medio consistente para distribuir el software a desplegar sobre el cluster.

Desde la perspectiva de los Ingenieros de Operación / SRE’s, los Operadores facilitan el despliegue de la aplicación y todas sus dependencias.

Desde el punto de vista kubernetes, cualquier aplicación desplegada sobre un clúster, así como todas sus dependencias, pueden ser tratados como Custom Resources (que se empezaron a utilizar en la versión 1.2 de kubernetes), y como tales, extienden la API del clúster una vez desplegados, proporcionando un endpoint desde el que poder interactuar con la aplicación original (como cualquier otro recurso accesible desde la API).

Los Operadores básicamente son la combinación de estos Custom Resources (nuestra app) y Custom Controllers (ReplicaSet), siendo estos últimos los que gestionan los pods que albergan los contendores respecto su arranque, escalado y recuperación (más adelante explico otros elementos en esta combinación).

Alrededor del mundo de los Operadores existe una importante comunidad que comparte sus trabajos haciendo uso del repositorio OperatorHub.io (https://operatorhub.io). Dispone de un índice de búsqueda que facilita la localización de lo que busquemos además de una estructura basada en Categorías que los agrupa.

Desde OperatorHub.io se quiere asegurar que los Operadores compartidos no solo sirvan como medio para publicitar el trabajo de los contribuidores, si no que los usuarios que los descarguen puedan empezar fácilmente a hacer uso de los Operadores y disponer de procedimientos que simplifiquen su mantenimiento, tanto a nivel evolutivo como correctivo.

Uno de los principales contribuidores es Red Hat, que ha desarrollado el Red Hat Operator Framework (https://github.com/operator-framework) y que contiene el Operator Lifecycle Manager que se encarga de la instalación, gestión y actualización de los Operadores. Cuenta además con un sistema (Operator Metering) que permite medir el uso de los recursos utilizados en el clúster (como por ejemplo CPU, memoria, y resto de recursos, permitiendo calcular los costes de los servicios de infraestructura en uso).

Considerando todas las tareas a realizar para escribir un Operador (crear Custom Resources Definitions, Custom Controllers, Roles, Cuentas de Servicio, Imágenes de base para contenerización, propiedades de la app en ConfigMaps, etc) sería óptimo el disponer de una herramienta que, una vez tenemos la aplicación kubernetes construida y corriendo en el clúster, lea la implementación realizada y construya el Operador. Aquí es donde el Operator Lifecycle Manager de Red Hat nos proporciona (desde línea de comandos) una solución para crear el Operador haciendo uso de código en HELM, Ansible o Go. De este modo podremos transformar en Operadores las aplicaciones kubernetes y disponer de las ventajas hasta ahora descritas.

Vistas las opciones que nos aporta el Framework de Red Hat, podemos pensar en hasta 5 niveles de madurez operativa: instalación y actualización de versiones, capacidad de gestión a la operación, observabilidad y auto-gestión:

operadores kubernetes

Este Framework de Red Hat resuelve varias de las preocupaciones principales de cualquier DevOps / SRE:

  • Asegurar el funcionamiento de los sistemas (aunque estén envueltos en cambios continuos en aplicaciones y usuarios)

  • Establecer los mecanismos que eviten la degradación y/o interrupción de los servicios

  • Reducción del “toil” (tareas manuales, o tareas que, aunque se tienen repetir frecuentemente no están automatizadas aún y son carentes de valor, además de aumentar cuantitativamente según se escala el servicio).

  • Permiten evolucionar el modelo de Automatización

  • Permiten avanzar hacia modelos de Arquitectura Inmutable (tengamos en cuenta que una de las características de los Operadores es la Idempotencia, que nos asegura su funcionamiento con independencia del número de veces que lo ejecutemos).

Otros proyectos Opensource de Red Hat que te podrían interesar: https://redhatofficial.github.io

¿Quiéres profundizar más?

¡Vente al DevOps Spain III el 11, 12 y 13 de mayo de 16:00 a 19:00!

¡Inscríbete aquí!

Inscripción DevOps

Iñigo Chaso Rico


Comparte este artículo

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, dentro de nuestra Web de acuerdo a tus hábitos de navegación. Si continúas navegando, consideramos que aceptas expresamente su utilización. Puedes obtener más información de cómo gestionar y configurar las cookies en nuestra Política de Cookies.