Tutorial de inicio rápido del operador de Kubernetes (Operador 101)
En las soluciones de monitoreo de Kubernetes, a menudo usamos el proyecto Prometheus Operador, que nos permite usar Prometheus más fácilmente sin usar objetos de recursos originales como Pods e implementaciones. Con el éxito del proyecto Prometheus Operador, CoreOS. Una herramienta poderosa de código abierto: Operador Framework. Tras el éxito del proyecto Prometheus Operador, CoreOS ha abierto una poderosa herramienta: el Operador Framework, que facilita a los desarrolladores el desarrollo de aplicaciones Operador.
En esta publicación de blog, le presentaremos a través de un ejemplo simple cómo usar Operador Framework para desarrollar aplicaciones de Operador.
Operadores de Kubernetes
Los operadores son controladores específicos de aplicaciones desarrollados por CoreOS que extienden la API de Kubernetes para crear, configurar y administrar aplicaciones complejas con estado, como bases de datos, almacenamiento en caché y sistemas de monitoreo. Los operadores se basan en los conceptos de controladores y recursos de Kubernetes, pero incorporan conocimientos de dominio específicos de la aplicación. La clave para crear un operador es el diseño CRD (recurso personalizado).
El concepto de controladores personalizados se introdujo a partir de la versión 1.7 de Kubernetes, que permite a los desarrolladores ampliarlo para agregar nuevas funciones, actualizar las existentes y automatizar una amplia gama de tareas de administración. Estos controladores personalizados son como componentes nativos de Kubernetes, y los operadores se desarrollan directamente utilizando Kubernetes. Los operadores se desarrollan directamente utilizando la API de Kubernetes, lo que significa que pueden monitorear el clúster, cambiar Pods/servicios y realizar operaciones basadas en lo que está escrito dentro de estos controladores. Las reglas personalizadas agregan o eliminan aplicaciones en ejecución.
Operador Framework
Operador Framework también es un conjunto de herramientas de código abierto de CoreOS para el desarrollo rápido de operadores. Consta de dos componentes principales:
Flujo de trabajo
<. p> Operador SDK proporciona el siguiente flujo de trabajo para desarrollar nuevos operadores:Demostración
Cuando implementamos un servidor web simple en un clúster de Kubernetes, necesitamos escribir un depósito. Cuando implementamos un servidor web simple en un clúster de Kubernetes, necesitamos escribir un controlador de implementación, crear un objeto de servicio, asociarlo con la etiqueta del Pod y finalmente exponer el servicio a través de Ingress o type=NodePort. Podemos crear un objeto de recurso personalizado y usar nuestro CRD para describir la información de la aplicación que queremos implementar, como imágenes, puertos de servicio, variables de entorno, etc., y luego crear nuestro tipo personalizado de objeto de recurso a través del controlador y crear el correspondiente. Implementación y servicio, ¿no es mucho más conveniente? Es equivalente a describir las dos cosas realizadas por Implementación y Servicio en la lista de recursos.
Aquí crearemos un objeto de recurso CRD llamado AppService y luego definiremos la siguiente lista de recursos para la implementación de la aplicación:
Cree un objeto de recurso CRD con el AppService personalizado aquí Pod con 2 réplicas y luego exponer el servicio a través del puerto nodePort=30002. Aquí implementaremos una aplicación de operador simple paso a paso.
Entorno de desarrollo
Requisitos del entorno
Para desarrollar Operador, necesita un clúster de Kubernetes natural y necesita un entorno Golang (no ampliaré este tema). ), también necesita un kit de herramientas de gestión de dependencias para Go: dep. Luego, también necesita un kit de herramientas de gestión de dependencias de idiomas de Go: Dep. Dado que el SDK del operador usa dep, debe instalarlo con anticipación.