Flujo de trabajo de desarrollo en Minikube y Docker

Estoy tratando de entender cómo el desarrollo se realiza de manera eficiente con aplicaciones dockerized, específicamente en Kubernetes. Estoy luchando por encontrar la forma correcta de trabajar en contenedores de edición en vivo.

En el pasado, con Docker, solo usaba algo como Nodemon para ver si los files cambiaban localmente y luego, cuando terminaba la aplicación, la hacía y la implementaba. Con Kubernetes (minikube) mi primera printing es que se supone que debo rebuild 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 implementar dockerize-> k8s? Eso no parece correcto.

Estoy buscando una manera de sincronizar todos mis cambios locales en un contenedor acoplable que luego reinicia el pod kubernetes con los nuevos cambios, para que pueda leer los loggings durante el desarrollo. Si esto es extraño, recomiéndeme una forma superior.

Gracias

Kubernetes es una herramienta de orquestación de contenedores. No es una plataforma de desarrollo. Está diseñado para facilitar el deployment de cientos de contenedores y para tratar problemas de ciclo de vida / networkinges / almacenamiento.

Si está desarrollando su aplicación, realmente no necesita kubernetes / minikube en este momento. Mi flujo de trabajo sugerido sería:

  • Desarrolla tu aplicación en un contenedor local de docker. Iterate sobre la marcha hasta que seas feliz.
  • Cree una versión de instantánea, etiquete la image del acoplador e introdúzcala en un repository
  • Luego impleméntalo.
  • Cuando necesite actualizar, aplique una nueva label.

La ventaja de utilizar Docker es que implementará exactamente lo mismo en su computadora portátil local, así como en un clúster de producción k8s, por lo que una vez que haya llegado a la etapa en la que esté listo para labelr / insert imágenes, puede estar aseguró que el process de implementación será exactamente el mismo.

Minikube no es para desarrollo local, es para que las personas prueben kubernetes localmente y posiblemente desarrollen kubernetes, no está diseñado como una alternativa vagabunda.

Kubernetes es un sistema de time de ejecución para contenedores diseñados para soportar patrones de deployment inmutables . Los contenedores no se reparan en su lugar, sino que se reconstruyen y se vuelven a implementar. Para respaldar esto, necesita características que implementen un flujo de trabajo ALM (Application Lifecycle Management) con Kubenetes como su objective.

Eche un vistazo a los siguientes productos que agregan flujos de trabajo de construcción de contenedores sobre Kubernetes:

  • Deis
  • Openshift

Si eres un desarrollador de Java, el siguiente proyecto puede implementar un canal de CD / CD basado en Jenkins para tu código:

  • Tela8

El proyecto de Netflix Spinnaker ahora es compatible con Kubernetes como un objective de implementación para aplicaciones administradas.

  • Espinaquer

Con la exception de Openshift (ver minishift ), los proyectos anteriores se pueden implementar como aplicaciones encima de minikube. ¡Que te diviertas!