DANIEL KIRCHNER
All articles
April 5, 20267 min read

Cloud Migration to Kubernetes: Lessons Learned from Government

KubernetesCloud MigrationTerraformDevOpsQuarkus

Starting point: legacy J2EE on Oracle WebLogic

The situation is familiar in government and large shops: a business-critical application has run for years on an application server (here: Oracle WebLogic). Deployments take hours, releases are rare and risky, and the infrastructure is hard to scale.

The goal: move onto a container platform with Kubernetes without putting the running service at risk.

The migration strategy

Instead of a risky big-bang cutover we took it in phases:

Phase 1: Containerise

The first step was to containerise the existing application, still without Kubernetes. Same application in a Docker container, same behaviour as the WebLogic deploy.

Phase 2: Framework migration (J2EE → Quarkus)

In parallel we replaced J2EE-specific APIs with Quarkus equivalents. Quarkus starts faster and is built for containers.

Phase 3: Kubernetes deployment

Once containerised, the application went onto the Kubernetes platform (Rancher):

  • Terraform for cluster provisioning
  • Helm charts for application deploys
  • Istio as the service mesh for traffic and mTLS
  • GitLab CI/CD for automated build and deploy pipelines
  • Phase 4: Monitoring and hardening

  • Prometheus + Grafana for metrics and dashboards
  • SonarQube for ongoing code quality
  • NexusIQ for dependency security scans
  • Outcome

  • Deploy time: from hours to minutes (in the later cutover: one day to 20 minutes)
  • Release frequency: from quarterly to weekly
  • Availability: 99.9% with health checks and rolling updates
  • Security: automated scans in the pipeline
  • Five lessons

    1. Strangler fig works

    Phased migration delivered value at each step and could be accepted separately.

    2. Infrastructure as code from day one

    Terraform was not negotiable. Every change went through review and was versioned. That stopped configuration drift more than once.

    3. A service mesh is not a luxury

    Istio gave mTLS, canary traffic splits and observability without touching application code.

    4. Government compliance takes time

    Security clearances, privacy reviews and acceptances take longer than in a startup. Plan for it. It can easily be 30% of the calendar.

    5. Do not underestimate developer onboarding

    WebLogic to Kubernetes is a paradigm shift. We booked internal workshops and pairing.

    Close

    Migrations in regulated environments work if you go in phases, pick the right tools and plan the organisational overhead. Kubernetes, Terraform, Helm and a mesh are the technical base. Success still hangs on handover and stakeholder communication.

    If you are planning a cutover: the Kubernetes migration assessment is the written brief before you commit.

    A call

    30 minutes. If the use case does not belong in production, I'll say so.