From Apache and Docker to Kubernetes with GitOps
An environment of 60 applications that had grown organically: half on Apache2, half in Docker, manual deploys, and rollbacks done over SSH with backups.
Before
- ~50% of apps on Docker, ~50% on Apache2
- Manual and semi-automated deploys
- Rollback via SSH + backup restore
- Configuration scattered across servers
- No DEV/RC/PROD environment separation
After
- RKE2: dedicated cluster per environment
- GitOps with ArgoCD — cluster state always in sync with the repo
- Rollback with a single Git commit revert
- Universal Helm Chart for all applications
- Full DEV/RC/PROD reproducibility
Project walkthrough
We started with an inventory: which applications share an identical deployment shape, which need individual attention, and where configuration actually lives. From that analysis we produced a single universal Helm Chart, parameterised per application — instead of 60 separate configurations.
We rebuilt base images using multi-stage builds, which reduced their size by 87% on average and cut build time from ~6 minutes to ~30 seconds. DEV, RC, and PROD each got their own RKE2 cluster, with deployment handled through ArgoCD — merging to an environment branch triggers a deploy; reverting the commit triggers a rollback.
The migration proceeded in waves, application by application, with traffic switched over only after verification — meaning zero minutes of downtime.
Technical deep-dive on the blog →
Planning a similar migration?
Talk to the engineer who ran it. No charge for the first call.
Free consultation →