¿Qué están el patrón de operador Kubernetes?

¿Qué están el patrón de operador Kubernetes?

  • ITOps y DevOps
6 min de lectura Actualizado Jan 13, 2020

Puntos clave: El Patrón de Operadores Kubernetes automatiza la gestión de aplicaciones con estado mediante controladores personalizados, mejorando la eficiencia en entornos Kubernetes. Los operadores encapsulan el conocimiento del dominio, permitiendo tareas automatizadas como copias de seguridad y actualizaciones.

  • Los operadores automatizan la gestión de aplicaciones con estado en Kubernetes.
  • Las herramientas clave para crear operadores incluyen ClientGo, Kubebuilder y Operator SDK.

Una extensión de software de Kubernetes, los operadores funcionan capturando el conocimiento de un operador humano. Los ingenieros que utilizan Kubernetes tienen una perspectiva única sobre cómo deben comportarse las aplicaciones y servicios, y cómo reaccionar cuando surgen problemas. Esos mismos ingenieros prefieren automatizar tareas repetibles, y el patrón de operador es esencial para esta automatización. En este artículo, arrojaré luz sobre el patrón de operador, incluyendo cómo se aplica a Kubernetes, cuándo utilizar y algunas herramientas para ayudar a Obtén a crear uno.

Comprensión del operador K8S

Usar un operador Kubernetes significa te puedes operar una aplicación con estado escribiendo un controlador personalizado con conocimientos específicos de dominio incorporados. Si te son nuevo en Kubernetes, la idea de un operador puede resultar confusa, así que veamos un ejemplo sencillo. Supongamos te tienes una app Java que se conecta a una base de datos. te quieres desplegarla en tu clúster k8s. Idealmente, te querrías ejecutar algo así como un "despliegue" para la app Java expuesta con un servicio, y para el backend, ejecutar un "statefulset" para la aplicación de base de datos. Esta configuración son dos partes:

  • La parte sin estado , la aplicación Java
  • La parte con estado es la base de datos

Para entender a un operador, piensa en la parte con estado de la configuración: la base de datos o cualquier aplicación que almacene datos, como etcd. Así que, en nuestro ejemplo, podemos aplicar lo que sabemos sobre cómo la aplicación se relaciona con la base de datos y Crea un controlador que hará ciertas cosas cuando la aplicación se comporte de cierta manera. Los ingenieros de fiabilidad del sitio y los ingenieros operativos suelen son encargados o interesados en automatizar cosas como copias de seguridad, actualizaciones, restauración de datos, etc. La forma en que son realizan estas tareas varía según la propia aplicación y el caso utiliza negocio (conocimiento del dominio). Esto es exactamente lo que hacen los operadores de k8s: actuar en nombre del usuario cuando te necesitas realizar ciertas tareas que normalmente tiene que realizar un ingeniero SRE/Ops.

Los operadores siguen patrones K8S

Operator se está basado en dos principios clave de Kubernetes: un recurso personalizado y un controlador personalizado.

Recurso personalizado

En Kubernetes, un recurso están un punto final en la API de k8s que almacena un conjunto de objetos API de un tipo específico. Nos permite extiende k8s añadiendo más objetos de un mismo tipo al clúster. Después de eso, podemos utilizar kubectl para acceder a nuestro objeto igual que cualquier otro objeto incorporado. Tomemos, por ejemplo, un pod o un despliegue. Cuando te escribes un manifiesto, tienes que especificar un tipo (pod o despliegue) en el archivo yaml. Un recurso personalizado están simplemente un recurso que no viene incluido con k8s de fábrica.

Controlador personalizado

Un controlador están un bucle de control que vigila el clúster en busca de cambios en un recurso específico (recurso personalizado) y se asegura de que el estado actual coincida con el deseado. De hecho, ya son usando algún tipo de controlador ya integrado en k8s. Un buen ejemplo están un despliegue en el que te destruye un pod y otro se activa. El controlador ve que el número de pods te deseo no coincide con el estado actual, así que activa otro para que coincida con el estado deseado. Entonces, ¿por qué esos controladores integrados no se llaman operadores? Porque son controladores específicos de una aplicación concreta; son controladores aguas arriba usados con recursos integrados, como despliegue, trabajos, etc.

Cuándo utilizar un operador

Es importante saber que todos los operadores son controladores, pero no todos son operadores. Para que un controlador sea considerado operador, debe tener conocimiento del dominio de aplicación para realizar tareas automatizadas en nombre del usuario (ingeniero SRE/Ops).

  • utiliza operador siempre te necesites encapsular la lógica de negocio de tu aplicación con estado controlando todo con la API de Kubernetes. Esto permite automatizar tu aplicación integrada en el ecosistema k8s.
  • utiliza operador siempre te necesites construir una herramienta que vigile tus aplicaciones en busca de cambios y realice ciertas tareas de SRE/Operaciones cuando ocurren ciertas cosas.

Cómo construir un operador

Son varias formas de construir un operador:

  • ClientGo se conecta a la API de Kubernetes.
    • La ventaja: utiliza los mismos recursos que tus recursos integrados, así que te puedes estar tranquilo sabiendo que el código están probado y versionado según los estándares de k8s.
    • La desventaja: tiene una curva de aprendizaje pronunciada si no entiendes te lenguaje de programación Go.
  • Kubebuilder, parte de la organización sigs k8s, está escrito en go y utiliza el runtime del controlador.
  • El Operator SDK, originalmente escrito por el sistema operativo principal y ahora gestionado por RedHat, es un framework que incluye funciones auxiliares para Crea operadores en Go, HEML o Ansible.

Cómo desplegar un operador

te puede desplegar un operador de dos maneras:

  • Usando yaml igual que cualquier otro manifiesto de Kubernetes.
  • Usando la tabla de Helm para desplegar tanto CRD como controlador como un paquete.

Mejores prácticas para crear un operador

Los controladores K8S son para el propio clúster, y los operadores son controladores para tus aplicaciones con estado desplegadas. Al crear un operador, sigue estas mejores prácticas de patrones:

  • Aprovecha los tipos integrados para Crea tus tipos personalizados. De ese modo, te son aprovechando tipos ya probados y probados.
  • Asegúrate de que no están necesario otro código externo para que tu controlador funcione. Así que, ejecutar kubectl instala debería ser todo lo te necesario para desplegar el controlador.
  • Si el operador está detenido, Haz que tu aplicación siga funcionando como se espera.
  • Emplea pruebas suficientes para el código de tu controlador.

Cuando te estés listo para Crea tus propios recursos personalizados específicos de aplicación que puedan conciliarse con tu controlador personalizado, lo que te permite extiende el comportamiento normal de Kubernetes—te son listo para utiliza operadores.

Recursos adicionales

Para más información sobre Kubernetes, explora estos recursos:

Guía de DevOps

  1. ¿Qué es DevOps? Una introducción completa
  2. Una breve historia de DevOps
  3. Introducción a la arquitectura DevOps
  4. Automatización en DevOps: Por qué y cómo automatizar las prácticas de DevOps
  5. ¿Qué es CI/CD? Explicación sobre la integración continua y la entrega continua
  6. Cómo construir una tubería CI/CD usando Jenkins
  7. Métricas de DevOps para optimizar Pipelines CI/CD
  8. Métricas de entrega continua
  9. ¿Es la integración continua hacia el despliegue continuo una progresión, o no?
  10. Diferencias entre integración continua (CI), entrega (CD) y despliegue
  11. Control de código fuente y versiones en DevOps
  12. ¿Qué es las pruebas continuas?
  13. Marcos de automatización de pruebas: La guía definitiva
  14. Gestión de versiones en DevOps
  15. Explicación: Monitorización & Telemetría en DevOps
  16. Gestión del rendimiento de aplicaciones en DevOps
  17. Orquestación DevOps en el SDLC
  18. Introducción al DevOps de bases de datos
  19. El papel de los microservicios en DevOps
  20. El papel de la virtualización en DevOps
  21. Contenedores y DevOps: Cómo encajan los contenedores en los Pipelines de entrega de DevOps
  22. ¿Qué es una tubería de contenedores?
  23. ¿Qué es una cadena de herramientas DevOps?
  24. Gestión de contenedores y código para DevOps
  25. El papel de Agile en DevOps
  26. El papel de la nube en DevOps
  27. ¿Qué están FinDevOps?
  28. Principales tendencias DevOps en 2022
  29. Valores y principios de DevOps
  30. Métricas y KPIs de DevOps
  31. Consejos sobre DevOps para organizaciones pequeñas, medianas y grandes
  32. Estructura del equipo DevOps
  33. Los mejores libros de DevOps para leer hoy
  34. Reseña del libro The Phoenix Project: DevOps para todos
  35. Influencers de DevOps: 11 expertos en DevOps para seguir en Twitter
  36. GitHub, GitLab, Bitbucket y Azure DevOps: ¿Cuál es la diferencia?
  37. Mejores Prácticas: Cómo Diseñar Aplicaciones para Kubernetes
  38. Gestión de configuración en DevOps
  39. Estrategias de ramificación DevOps explicadas
  40. Títulos de trabajo, roles y responsabilidades en DevOps
  41. Pruebas en DevOps: Conceptos, Mejores Prácticas y Más
  42. La guía completa de certificaciones DevOps para 2022
  43. ¿Qué están el patrón de operador Kubernetes?

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.