Estamos planificando nuestra nueva infraestructura de clúster de Kubernetes y tengo algunas preguntas. Actualmente, tenemos un clúster más grande en el que trabajan entornos (desarrollo, preparación, producción) y varios equipos. Al principio era sólo un "POC", una demostración, pero ya saben: nada dura más que las soluciones temporales. En esta configuración, tenemos algunos problemas generales y en nuestra arquitectura de destino, planeamos solucionar algunos de esos temas.
Espero que algunos de ustedes puedan compartir conocimientos/experiencias.
En primer lugar: un clúster por aplicación no es una solución. Las aplicaciones son realmente pequeñas y cada equipo tiene entre 3 y 5 aplicaciones y necesita entre 6 y 20 GB de RAM en todos los nodos por entorno. Por lo tanto, un solo grupo no es realmente una opción.
Planeamos un clúster por entorno: desarrollo, preparación (qa), producción y tal vez para operaciones un clúster de demostración. Todo es y será automatizado e IaC con terraform + ansible (kubespray). Cada equipo/ámbito de aplicación obtendrá un único espacio de nombres, de causa.
Nuestras preguntas/problemas:
Supervisión Normalmente usamos Prometheus y Grafana para monitorear el uso de recursos de pod/clúster. Lo nuevo también debería contener registro central (estamos probando soluciones en este momento). Esto está bien para el equipo infra, pero infra no quiere monitorear a nivel de aplicación.
¿Existe alguna forma funcional de proporcionar un seguimiento a los equipos de la aplicación? Por ejemplo: usted (el equipo de la aplicación) puede configurar alertas sobre registros, CPU, uso de RAM, lo que necesite. "Sólo necesitas desplegar este gráfico de timón". En un gran mundo, le proporcionaría a cada equipo (es decir, a cada espacio de nombres) su propia pila de monitoreo para que también podamos limitar el almacenamiento y el uso de RAM+CPU y cada equipo pueda usar los recursos "ordenados" (de modo que si el equipo tiene muchos registros/necesidades de monitoreo, necesita "ordenar" más recursos"). También basándose en ese enfoque, pueden elegir el software que mejor se adapte.
Otra solución podría ser que el equipo de infraestructura configure una solución central de monitoreo/registro y limite el acceso. App-Team A no debería poder acceder a los registros/uso de CPU/uso de RAM/uso de disco desde App-Team B. Pero no veo ninguna manera de hacerlo realmente bien.
Puede ser una opción que el equipo de infraestructura instale esa pila, pero todo lo que vi fue: cuando instalo una pila de monitoreo en un espacio de nombres específico, la pila necesita acceso de administrador al clúster. En mi opinión, esto no es agradable.
¿Me equivoco?
Almacenamiento Tenemos un almacén de gluster y queremos conservarlo. Si un equipo necesita un disco, agregamos un "volumen persistente glusterfs" con un tamaño específico y un nombre de clase de almacenamiento como "team1-disk5". En base a eso, el equipo puede crear un PVC y utilizar el almacenamiento. Funciona bien en el pasado.
¿Es esta una buena solución? ¿Alguna otra idea?
Creo que eso es todo por el momento. Sólo esas dos preguntas. ¿Alguna idea para llevarme en la dirección correcta?
¡Gracias!