After trying out several CI/CD dev tools for Kubernetes (e.g. draft, skaffold), we saw the problem that there is a lot of waiting time because the images always have to be re-build and re-deployed on every code change. Many developers, including the ones on our dev team, are used to hot reloading tools (e.g. nodemon) and to seeing changes taking effect immediately after saving a file.
While there are some tools (e.g. ksync) that allow to sync files to a pod running inside a Kubernetes cluster, we found them hard to configure and time-consuming to use on a daily basis.
Therefore, we developed the DevSpace CLI, a client-only dev tool that lets you create Kubernetes-based workspaces called DevSpaces. With a single command (devspace up), you can start a DevSpace for any existing dev project inside your Kubernetes cluster (even in minikube). The DevSpace CLI will then synchronize your source code directly to your containers and establish a terminal session as well as port forwarding. It is entirely written in Go and ships with in-built kubectl, helm and docker clients.
I would love to hear your feedback on this tool. PS: It is open source, so contributions are also highly welcome.
I am building my Docker images with a local Docker daemon, push them to a private registry and run "kubectl apply" to refresh the deployment afterwards. Where does your tool fit in my workflow? Maybe I am not getting the full idea but I don't see the benefit...
That is a very common flow today but re-building and re-deploying images on every change takes a lot of time and you cannot use modern dev features such as hot reloading (e.g. with nodemon).
With the DevSpace CLI, however, you can simply build and deploy once and every following code change will only lead to a code synchronization. The DevSpace CLI will sync your modified source code files straight to your containers running remotely inside a Kubernetes cluster. You can use hot reloading (e.g. with nodemon) and still build and run everything entirely on a remote Kubernetes cluster. Only when you change your Dockerfile, the DevSpace CLI will rebuild and redeploy your container images. This saves a lot of time during development.
I hope you will find the time to try it out and give us feedback on the project :)
5 comments
[ 3.1 ms ] story [ 23.2 ms ] threadWhile there are some tools (e.g. ksync) that allow to sync files to a pod running inside a Kubernetes cluster, we found them hard to configure and time-consuming to use on a daily basis.
Therefore, we developed the DevSpace CLI, a client-only dev tool that lets you create Kubernetes-based workspaces called DevSpaces. With a single command (devspace up), you can start a DevSpace for any existing dev project inside your Kubernetes cluster (even in minikube). The DevSpace CLI will then synchronize your source code directly to your containers and establish a terminal session as well as port forwarding. It is entirely written in Go and ships with in-built kubectl, helm and docker clients.
I would love to hear your feedback on this tool. PS: It is open source, so contributions are also highly welcome.
With the DevSpace CLI, however, you can simply build and deploy once and every following code change will only lead to a code synchronization. The DevSpace CLI will sync your modified source code files straight to your containers running remotely inside a Kubernetes cluster. You can use hot reloading (e.g. with nodemon) and still build and run everything entirely on a remote Kubernetes cluster. Only when you change your Dockerfile, the DevSpace CLI will rebuild and redeploy your container images. This saves a lot of time during development.
I hope you will find the time to try it out and give us feedback on the project :)
I have tried it with nodeJS, the sync feature is really great. But I can't get the debbuger to work, I am using VS Code. Can I even use the debugger?