all systems operational +48 697 610 212
Product company · Poland · 60 applications

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
60applications migrated
−87%reduction in Docker image size
~30sbuild time (down from ~6 minutes)
0downtime during migration
How we did it

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 →

RKE2KubernetesArgoCDHelmGitLab CIDockerGitOps

Planning a similar migration?

Talk to the engineer who ran it. No charge for the first call.

Free consultation