¿Qué se considera una buena práctica con K8S para administrar múltiples entornos (QA, Staging, Production, Dev, etc.)?
Como ejemplo, digamos que un equipo está trabajando en un producto que requiere implementar algunas API, junto con una aplicación de front-end. Por lo general, esto requerirá al menos 2 entornos:
- Puesta en escena: para iteraciones / pruebas y validación antes de entregar al cliente
- Producción: Este es el entorno al que tiene acceso el cliente. Debe contener características estables y bien probadas.
Entonces, asumiendo que el equipo está usando Kubernetes, ¿cuál sería una buena práctica para alojar estos entornos? Hasta ahora hemos considerado dos opciones:
- Utilice un clúster de K8 para cada entorno
- Use solo un clúster de K8 y manténgalos en diferentes espacios de nombres.
(1) Parece la opción más segura ya que minimiza los riesgos de posibles errores humanos y fallas de la máquina, que podrían poner en peligro el entorno de producción. Sin embargo, esto conlleva el costo de más máquinas maestras y también el costo de una mayor gestión de la infraestructura.
(2) Parece que simplifica la gestión de la infraestructura y la implementación porque hay un solo clúster, pero plantea algunas preguntas como:
- ¿Cómo se puede asegurar que un error humano pueda afectar el entorno de producción?
- ¿Cómo se puede asegurar que una carga alta en el entorno de ensayo no cause una pérdida de rendimiento en el entorno de producción?
Puede haber otras preocupaciones, por lo que me estoy comunicando con la comunidad de K8 en StackOverflow para comprender mejor cómo las personas enfrentan este tipo de desafíos.