Este desarrollo permite, mediante la combinación de una imagen de Kaniko y el uso de un ServiceAccount, la generación de imagenes docker "al vuelo" dentro de Kubernetes y su puesta en producción.
- https://github.com/GoogleContainerTools/kaniko
- https://kubernetes.io/docs/concepts/security/service-accounts/
El ejemplo está desarrollado en Python, siendo posible usar cualquier otro cliente de Kubernetes para obtener el mismo resultado en otras tecnologías:
También es posible generar los .yaml e invocar al CLI desde cualquier lenguaje de programación:
- Mediante un API REST, CLI, etc. podemos atender peticiones de usuarios que solicitan un despliegue, que puede ser parametrizable, por ejemplo mediante la recepción de un JSON.
- El API generará un Job en Kubernetes, que tendrá un ServiceAccount asociado con los permisos necesarios para poder crear recursos dentro del cluster. Este Job hará las tareas necesarias y luego se destruye.
- Obtiene los datos para generar la imagen: Dockerfile, código, datos, etc. El origen de los datos puede ser un repositorio Git, un volumen, una unidad NFS, S3/Minio, etc.
- El Job Realiza el "build" de la imagen a partir del Dockerfile.
- A continuación, subirá la imagen a un container registry, que puede ser externo o estar en el mismo clúster de Kubernetes.
- El job realizará el despliegue de la imagen dentro de su mismo clúster, obteniendo ésta desde el container registry.
- La puesta en producción, al menos en este ejemplo es mediante un deployment. También se hace uso de un ingress para exponer la imagen mediante el protocolo HTTP(s).
