Hey everyone, I've been struggling to achieve zero downtime deployments for my web stack (which includes Laravel, Nuxt, and a few microservices) and I'm seriously considering learning Kubernetes. Currently, I'm using Docker Compose with five containers and GitHub Actions for CI/CD, but the downtime during deployments has been frustrating. I'm running these on a dedicated server with Proxmox and I need a solution that allows for continuous deployment, easy rollbacks, deployment notifications, and overall simplicity. I've tried using Docker Swarm, blue/green deployments, and a few other tools, but nothing seems to fit perfectly. Any advice from pros out there?
4 Answers
You might want to consider AWS ECS if that's a viable option for you. With the right configuration, it can manage deployments seamlessly without much downtime. The learning curve wasn't too bad for me, and I migrated several environments without too much hassle.
You might want to carefully consider whether you really need zero downtime or if you just want to minimize it. With your traffic, even a small amount of downtime can add up. Kubernetes could be a better fit for you because it allows tools like ArgoCD or Flux to facilitate seamless deployments without issues like those you faced with Watchtower. Plus, using k3s with Traefik offers a simpler setup close to Docker Compose without much extra work. It might help tick off all those points you need!
That’s interesting! I haven’t really dived into Kubernetes yet, but I really want to give it a shot.
I can totally relate! I also struggled with Docker Swarm and ended up learning Kubernetes. It felt complex initially, but once you get past the learning curve, it actually makes sense. The ability to set up proper CI/CD with tools like fluxcd and Helm really makes deploying easier. It's also promising for zero downtime! Just make sure to spend some time learning it because it can seriously change how you manage your deployments.
Thanks for that insight! Since this is a side project, I’m concerned about the time investment. How long did it take you to get comfortable with K8s?
If you're looking for a straightforward way to handle this, you could run two Docker Compose files and load balance between them using Nginx or HAProxy. Then, update one at a time, allowing for brief downtime without impacting services. This can simplify your setup while still giving you better control over deployments without needing to jump into Kubernetes right away.
That sounds way simpler! I'll try that out tomorrow since I'm a bit worn out from all this trial and error.
I'd love to use ECS, but my budget's tight right now since I've moved from AWS to Proxmox for cost-efficiency. Maybe in the future!