Estoy tratando de entender cómo se realiza el desarrollo de manera eficiente con aplicaciones dockerizadas, específicamente en Kubernetes. Estoy luchando por encontrar la forma adecuada de editar contenedores en vivo.
En el pasado, con Docker, solo usaba algo como Nodemon para ver si los archivos cambiaban localmente y luego, cuando terminaba la aplicación, la dockerizaba y la implementaba. Con Kubernetes (minikube), mi primera impresión es que se supone que debo reconstruir el contenedor con cada edición. Seguramente esta no puede ser la forma en que la gente se desarrolla aquí. ¿Qué me estoy perdiendo? ¿Se supone que debo editar localmente y luego dockerize->k8s deployment? Eso no parece correcto.
Estoy buscando una manera de sincronizar todos mis cambios locales con un contenedor docker que luego reinicia el pod de kubernetes con los nuevos cambios, para poder leer los registros durante el desarrollo. Si esto es extraño, por favor recomiéndame una forma superior.
Gracias
Kubernetes es una herramienta de orquestación de contenedores. No es una plataforma de desarrollo. Está diseñado para facilitar la implementación de cientos de contenedores y lidiar con problemas de ciclo de vida/redes/almacenamiento.
Si está desarrollando su aplicación, realmente no necesita kubernetes/minikube en este momento. Mi flujo de trabajo sugerido sería:
El beneficio de usar Docker es que se implementará exactamente igual en su computadora portátil local, así como en un clúster k8s de producción, por lo que una vez que haya llegado a la etapa en la que está listo para etiquetar/empujar imágenes, puede ser aseguró que el proceso de implementación será exactamente el mismo.
Minikube no es para el desarrollo local, es para que las personas prueben kubernetes localmente y posiblemente desarrollen kubernetes en sí, no está diseñado como una alternativa errante.
Kubernetes es un sistema de tiempo de ejecución para contenedores diseñado para admitir patrones de implementación inmutables . Los contenedores no se parchean en su lugar, sino que se reconstruyen y se vuelven a implementar. Para respaldar esto, necesita funciones que implementen un flujo de trabajo ALM (Administración del ciclo de vida de la aplicación) con Kubenetes como objetivo.
Eche un vistazo a los siguientes productos que agregan flujos de trabajo de creación de contenedores además de Kubernetes:
Si es un desarrollador de Java, el siguiente proyecto puede implementar una canalización de CD/CD basada en Jenkins para su código:
El proyecto de Netflix Spinnaker ahora es compatible con Kubernetes como destino de implementación para aplicaciones administradas.
Con la excepción de Openshift (consulte minishift ), los proyectos anteriores se pueden implementar como aplicaciones sobre minikube. ¡Que te diviertas!