Migrating a Munich B2B SaaS from Azure App Services to Kubernetes

Client Profile

A Munich-based company providing a B2B procurement platform used by mid-market manufacturers across Germany and Austria. The engineering team of 35 manages a microservices architecture serving enterprise clients with strict uptime and compliance requirements.

Industry B2B SaaS
Location Munich, Germany
Company Size ~110 employees
Duration 5 months

Technologies Used

Kubernetes Helm Terraform Docker AWS Google Cloud

Business Challenge

The client’s application ran entirely on Azure App Services. While initially convenient, the platform’s limitations became apparent as the product grew — restricted networking configurations, limited autoscaling control, and vendor-specific deployment patterns that made it impossible to run workloads on other providers. Several enterprise clients required multi-cloud capability as a contractual condition, and the team had no path to deliver it.

Solution

We containerised all services with Docker, defined deployment configurations with Helm charts, and provisioned Kubernetes clusters on both AWS (EKS) and GCP (GKE) using Terraform. The migration was executed service-by-service over five months, with each service validated in the new environment before cutting over. CI/CD pipelines were updated to build once and deploy to any cluster, achieving true provider independence.

Outcome

The client can now deploy their platform on any Kubernetes-compatible provider. Enterprise client requirements for multi-cloud capability were met, unblocking several six-figure contracts. Deployment times improved by 65% due to standardised Helm-based workflows, and the engineering team no longer depends on Azure-specific APIs or limitations.

Process

1

Vendor Lock-in Assessment

Catalogued all Azure-specific dependencies — App Service configurations, managed identity, networking rules, and storage bindings — to scope the migration effort.

2

Containerisation

Packaged each microservice into Docker containers, replacing Azure-specific runtime configurations with portable environment variable patterns.

3

Helm Chart Development

Created Helm charts for every service, parameterised for deployment to any Kubernetes cluster regardless of the underlying cloud provider.

4

Multi-Cloud Cluster Provisioning

Provisioned EKS and GKE clusters with Terraform, configured with identical networking policies, RBAC rules, and monitoring stacks.

5

Service-by-Service Migration

Migrated services one at a time with traffic splitting, validating performance and correctness in the Kubernetes environment before decommissioning the App Service instance.

6

CI/CD Pipeline Update

Reconfigured GitHub Actions to build container images once and deploy to any target cluster, enabling the team to serve multi-cloud client requirements from a single pipeline.

Conclusion

Kubernetes provided the portability and consistency the client needed to satisfy enterprise requirements and eliminate vendor lock-in. The standardised deployment model also simplified operations and accelerated delivery.

Ready to Transform Your Infrastructure?

Book a free consultation with our team to discuss your DevOps and cloud engineering needs.