Aspectos destacados
- Los operadores de Kubernetes consisten en un método para empaquetar, implementar y gestionar las aplicaciones propias de esa plataforma.
- Una aplicación de Kubernetes se implementa en Kubernetes y se gestiona con la API de Kubernetes y las herramientas de kubectl.
- Los operadores de Kubernetes gestionan las aplicaciones mediante un ciclo de conciliación permanente que automatiza las tareas operativas.
- Operator Framework es un proyecto open source que ofrece herramientas de Kubernetes para los desarrolladores y los tiempos de ejecución.
- El patrón de operador de Kubernetes se originó por la falta de lógica interna necesaria para gestionar de forma segura los sistemas complejos con estado, como las bases de datos y las colas de mensajes.
- Los operadores de Red Hat OpenShift pueden automatizar un flujo de trabajo personalizado relacionado con los recursos propios de OpenShift definiendo e implementando los recursos arbitrarios y la lógica personalizada en torno a ellos.
¿Qué es un operador de Kubernetes?
Los
Un operador de Kubernetes es un controlador específico de cada aplicación que amplía las funciones de la API de Kubernetes para crear, configurar y gestionar instancias de aplicaciones complejas en nombre de un usuario de Kubernetes.
Se basa en los conceptos básicos de los recursos y los controladores de Kubernetes, pero incluye el conocimiento específico sobre el dominio o la aplicación para automatizar todo el ciclo de vida del software que gestiona.
En Kubernetes, los controladores del plano de control implementan ciclos de control que comparan varias veces el estado deseado del clúster con su estado real. Si el estado real del clúster no coincide con el estado deseado, el controlador toma medidas para solucionar el problema.
Un operador es un controlador de Kubernetes personalizado que utiliza recursos personalizados para gestionar las aplicaciones y sus elementos. El usuario proporciona la configuración general en un recurso personalizado. Luego, el operador de Kubernetes traduce las directivas generales en acciones más específicas, en función de las prácticas recomendadas integradas en la lógica del operador.
Un recurso personalizado es el mecanismo de extensión de la API en Kubernetes. Una definición de recursos personalizados (CRD) define un recurso personalizado e indica toda la configuración disponible para los usuarios del operador.
El operador de Kubernetes observa un tipo de recurso personalizado y toma medidas específicas de la aplicación para que el estado actual coincida con el estado deseado en ese recurso.
Los operadores de Kubernetes incorporan nuevos tipos de objetos a través de definiciones de recursos personalizados. La API de Kubernetes puede gestionar las definiciones de los recursos personalizados como si fueran objetos integrados, incluida la interacción a través de kubectl y la inclusión en las políticas de control de acceso basado en funciones (RBAC).
Un operador de Kubernetes sigue supervisando la aplicación mientras se ejecuta, y puede realizar backups de los datos, recuperarse de las fallas y actualizar la aplicación con el tiempo, todo de forma automática.
Un operador de Kubernetes puede llevar a cabo casi cualquier tipo de acción: ajustar una aplicación compleja, actualizar la versión de la aplicación o incluso gestionar los módulos del kernel para los nodos en un clúster informático con hardware especializado.
¿Cómo gestionan las aplicaciones los operadores de Kubernetes?
Los operadores de Kubernetes gestionan las aplicaciones mediante un ciclo de conciliación permanente que automatiza las tareas operativas que normalmente realizaría un ingeniero. Funcionan como un nexo entre los recursos estándares de Kubernetes y los requisitos operativos internos complejos del software.
Kubernetes puede gestionar y ajustar las aplicaciones sin estado, como las aplicaciones web, los backends móviles y los servicios de API (interfaz de programación de aplicaciones), sin necesidad de tener conocimientos adicionales sobre su funcionamiento. Las funciones integradas de Kubernetes están diseñadas para gestionar estas tareas con facilidad.
Sin embargo, las aplicaciones con estado, como las bases de datos y los sistemas de supervisión, requieren conocimientos adicionales específicos del dominio que Kubernetes no posee. Por lo tanto, necesita incorporar este conocimiento para ajustar, actualizar y volver a configurar tales aplicaciones.
Los operadores de Kubernetes codifican este conocimiento específico del dominio en extensiones de Kubernetes para que la plataforma pueda gestionar y automatizar el ciclo de vida de una aplicación.
Al eliminar las tareas manuales complejas de gestión de las aplicaciones, los operadores de Kubernetes permiten que estos procesos sean adaptables, repetibles y estandarizados.
En el caso de los desarrolladores de aplicaciones, los operadores facilitan la implementación y la ejecución de los servicios base de los que dependen sus aplicaciones.
En cuanto a los ingenieros y los proveedores de infraestructura, los operadores ofrecen un modo uniforme de distribuir el software en los clústeres de Kubernetes y reducir las cargas de soporte al identificar problemas en las aplicaciones y corregirlos.
Los operadores te permiten escribir código para automatizar una tarea y ofrecen las mismas funciones de automatización básicas que Kubernetes. Para los equipos que siguen un enfoque de DevOps o de ingeniería de confiabilidad del sitio (SRE), se desarrollaron operadores que incorporan las prácticas de SRE en Kubernetes.
La función del patrón de operador es registrar las intenciones de cómo un operador humano gestionaría un servicio. Un operador humano debe tener un conocimiento completo de cómo debería funcionar una aplicación o un servicio, cómo implementarlo y cómo solucionar cualquier problema que pueda surgir.
Por lo general, los ingenieros de confiabilidad del sitio o los equipos de operaciones escriben el software para gestionar una aplicación, pero un operador toma el conocimiento operativo humano y lo codifica en un software para gestionar e implementar las cargas de trabajo de Kubernetes y eliminar las tareas manuales.
Los operadores mejor diseñados son los creados por especialistas en la lógica empresarial de instalar, ejecutar y actualizar una aplicación específica.
Este proceso suele comenzar con la automatización de la instalación de las aplicaciones y el aprovisionamiento de autoservicio, y continúa con funciones de automatización más complejas.
Hay un kit de desarrollo de software (SDK) de operadores de Kubernetes que puede ayudarte a desarrollar tu propio operador. El SDK proporciona las herramientas para diseñar, probar y empaquetar operadores con la opción de crearlos utilizando charts de Helm, playbooks de Ansible o Golang.
Operator Framework
Operator Framework es un proyecto open source que ofrece herramientas de Kubernetes para los desarrolladores y los tiempos de ejecución, lo que te permite agilizar el desarrollo de los operadores.
Operator Framework incluye:
- Operator SDK: Permite que los desarrolladores diseñen operadores en función de su experiencia sin necesidad de conocer las complejidades de las API de Kubernetes.
- Operator Lifecycle Manager: Supervisa la instalación, las actualizaciones y la gestión del ciclo de vida de todos los operadores que se ejecutan en un clúster de Kubernetes.
- Operator Metering: Permite generar informes de uso para los operadores que prestan servicios especializados.
¿Cuáles son las razones y las motivaciones detrás del uso del patrón de operador?
El patrón de operador de Kubernetes se originó por una limitación importante de la plataforma estándar, que carece de la lógica interna necesaria para gestionar de forma segura los sistemas complejos con estado, como las bases de datos y las colas de mensajes. La gestión de estos sistemas siempre ha requerido que los ingenieros de confiabilidad del sitio (SRE) ejecutaran de modo manual los playbooks para realizar backups, las actualizaciones de versiones y las conmutaciones por error de varios nodos.
Los operadores resuelven este desafío codificando el conocimiento operativo humano directamente en el software. Al combinar los recursos personalizados con los ciclos de conciliación automatizados, los operadores transforman las listas de verificación operativas manuales en una automatización permanente con capacidad de autorregeneración. De esta manera, los equipos de ingeniería aprovechan grandes ventajas: se eliminan los desajustes en la configuración manual, se habilitan las actualizaciones continuas sin riesgos y se permite que las empresas implementen sistemas de software complejos y de alta disponibilidad en cualquier plataforma de nube utilizando los mismos manifiestos YAML declarativos y estandarizados.
Uso de operadores en Red Hat OpenShift
Los operadores de Red Hat® OpenShift® consisten en un mecanismo de extensión de Red Hat OpenShift. Pueden automatizar un flujo de trabajo personalizado relacionado con los recursos propios de OpenShift definiendo e implementando los recursos arbitrarios y la lógica personalizada en torno a ellos. Red Hat los explica en detalle en esta publicación del blog.
Red Hat OpenShift® es una plataforma empresarial de contenedores de Kubernetes con operaciones automatizadas integrales para gestionar las implementaciones de nube híbrida y multicloud.
Red Hat OpenShift utiliza operadores de Kubernetes para ejecutar toda la plataforma de forma autónoma y expone la configuración directamente a través de los objetos de Kubernetes, lo cual posibilita una instalación rápida y actualizaciones eficaces y frecuentes.
Red Hat OpenShift incluye la función OperatorHub integrada, que consiste en un registro de operadores certificados de proveedores de software y proyectos open source. En OperatorHub, puedes buscar e instalar una biblioteca de operadores cuya compatibilidad con Red Hat OpenShift se ha verificado y que se han empaquetado para facilitar la gestión del ciclo de vida.
Agiliza el desarrollo de aplicaciones con Red Hat OpenShift
Red Hat OpenShift ayuda a tu empresa a diseñar, agilizar y ampliar las cargas de trabajo tradicionales y basadas en inteligencia artificial con seguridad y cumplimiento normativo. Obtén más información al respecto.