I’m currently in the middle of a project where I’m transitioning a microservices-based application to run in a Kubernetes cluster with Istio as a service mesh and custom authentication logic. I’ve got this first part almost done. The next part is upgrading the individual microservices one at a time. I suspect I’m going to end up going through repeat cycles of building, containerization, and redeployment just to test small changes, and I’d much rather get more immediate feedback as to whether a change I’m making actually does what I expect within the Kubernetes cluster.
What are y’all using to get (almost) live code changes reflected in a container in Kubernetes?
My primary development environment for this project is Windows, and the Kubernetes cluster is just Docker Desktop Kubernetes.
(I’ve already tried Telepresence, and I have to say I’m not that impressed. Kept trying to start their interceptor using their web interface and command line interfaces only to get no explanation why it failed. Then I looked at all the icons tucked into the spillover pane of the Windows tray only to find a dozen instances of Telepresence accumulated.)
What feedback are you trying to aquire? I don not believe it to be super necessary to run everything in kubernetes for developement.
.Net Aspire is supposed to be very good. Especially for .Net devs but not limited to that usecase. I have not done much with microservices even though Ive used docker a bunch. So I have not tried it myself.
This I find often very illusive and unrelieable. Especially for compiled languages and especially in the backend. Without adding kube to the mix. What languages are you working with?
Java, C#, and TypeScript for the programming plus a lot of Bash scripting and Kubernetes resources in YAML
The upgrade work is centered around making it work within a Kubernetes cluster with the Istio service mesh and authentication set-up. As such, not much is accomplished getting the services to work directly on the desktop environment or in a lone Docker container. Docker Kubernetes is about as close to the production set-up as it can be and eliminates a lot of variables.
Can’t count on my fingers how many times I switched between projects on the workstation only to get npm start errors because the projects were on different versions of node.js and I had to shut down one and swap the version out with nvm use. As work on the frontend is pretty much wrapped up, I’d rather dump it in the Kubernetes cluster and not have to worry about trying to start it with the wrong environment.
Yup. Security 101. The solution I’m working on uses off-the-shelf stuff like Spring Security though. The custom magic is making another moat within the service mesh to add additional security guarantees.
Ditched Keycloak about two years ago and I’m not sure why. But I might take a look for personal projects since I’m not going to be paying monthly bills for an enterprise identity provider.
Might have tried that two years ago and couldn’t get it working. Will probably try again after they issue some new hardware so that I don’t have to uninstall an entire dev stack to make space for work files.
How long does a build and deployment take. Our Java micro services take maybe 15-20 seconds without tests and then 5-10 seconds for a docker build and I’d guess at 10 seconds to push to Kubernetes from local machine.
We tend to have multiple levels of testing - unit, integration, BDD (all with jvm) followed by a docker build and an acceptance test against the image (mainly to check it will actually start up)