Los operadores de Kubernetes
Objetivos del capítulo y requisitos previos
Este capítulo es una introducción al mecanismo de los operadores. En primer lugar, se volverá sobre el operador Prometheus y, seguidamente, desplegará un nuevo operador para administrar las bases de datos MySQL.
Para entender por completo el interés de este capítulo, debería haber abordado, aunque sea superficialmente, los capítulos Alojar una aplicación en clúster e Implementar la replicación entre pods (dedicados a configurar una base de datos MariaDB), así como el capítulo Supervisión con Prometheus, parte dedicada a la implementación de Prometheus.
Utilizar los operadores
1. Presentación del principio
Un operador es un método de despliegue y gestión de recursos de aplicaciones en Kubernetes. El interés de un operador es hacerse cargo de los aspectos de bajo nivel relacionados con el uso de un producto, tales como:
-
la asignación de espacio en disco,
-
la implementación de la sincronización entre pods,
-
la configuración de un clúster.
Posteriormente, se desplegará una base de datos MySQL utilizando un operador específico para ilustrar la simplicidad de la implementación en comparación con lo que se vio en los capítulos Alojar una aplicación en clúster e Implementar la replicación entre pods (dedicado a la implementación de una base de datos MariaDB).
La elección de MySQL respecto a MariaDB proviene del hecho de que actualmente, no existe un operador open source que soporte este último.
2. El operador de Prometheus
a. Resultado del chart prometheus-operator
Como se abordó en el capítulo Supervisión con Prometheus, el chart Helm prometheus-community/kube-prometheus-stack define nuevos tipos de recursos:
-
El tipo Prometheus (prometheuses.monitoring.coreos.com).
-
El tipo PrometheusRule (prometheusrules.monitoring.coreos.com).
-
El tipo ServiceMonitor (servicemonitors.monitoring.coreos.com).
-
El tipo PodMonitor (podmonitors.monitoring.coreos.com).
-
El tipo AlertManager (alertmanagers.monitoring.coreos.com).
-
El tipo AlertManagerConfig (alertmanagersconfigs.monitoring.coreos.com).
-
El tipo Probe (probes.monitoring.coreos.com).
-
El tipo ThanosRuler (thanosrules.monitoring.coreos.com).
La ventaja de este tipo de operador es que es posible crear recursos a nivel de clúster de Kubernetes sin tener que preocuparse por los detalles de implementación y, al mismo tiempo, reducir la cantidad de elementos que hay que declarar.
b. Estructura de un objeto Prometheus
Para entender mejor las implicaciones de este mecanismo, recupere la lista de instancias Prometheus en el espacio de nombres monitoring:
$ kubectl -n monitoring get prometheus
A continuación, se muestra el resultado devuelto por el motor de Kubernetes:
NAME VERSION REPLICAS AGE ...