We are currently revamping our website to improve user experience. During this time, some pages or links may not function as expected. We regret any inconvenience and appreciate your patience and continued support.

How to Migrate an Application to Kubernetes

How to migrate an application to Kubernetes in 12 steps, for the IT head, CTO or platform lead in India or the GCC who has chosen to run an existing application on Kubernetes. Each step has a suggested owner and a done-when test, and the guide starts with the choice between rehosting and reworking the application. It ends with five move mistakes to catch early and a cutover that keeps a rollback path.

How to migrate an application to Kubernetes comes down to 12 steps in a fixed order, from the first application to the runbooks after cutover. Each step ends in a test, so you finish when the tests pass and a rollback path exists, not when a date arrives.


Last reviewed 2026-11-14 by Manish Sharma.

Kubernetes is an open-source system that runs containers across a group of machines and restarts them when they fail. A container image is the packaged application with everything it needs to start, while a manifest is the file that tells Kubernetes what to run and how. The steps are provider-neutral and carry no prices and no tool vendors, and clusters may run on AWS, Azure or your own servers.

How to Migrate an Application to Kubernetes: 12 Steps at a Glance

The table lists each step with a suggested owner and the test that marks it finished. The owners are our recommendation, but your team may split them differently. Work through the 12 steps in order for one application before starting a second.

Step Suggested owner Done when
1. Pick the first application IT head The owner agrees in writing and a cutover window is named
2. Map dependencies, configuration and state Application lead Nothing the application touches is missing from the map
3. Build a small, patched image Application team The image builds from the repository on a clean machine
4. Move configuration and secrets out Application team No password sits in the image or the repository
5. Add health checks and run locally Application team The application starts, answers and stops cleanly in a container
6. Push to a private registry Platform lead Kubernetes pulls a tagged image with no manual step
7. Write manifests or packaging Platform lead A fresh test cluster runs the application from the repository alone
8. Set requests and limits Platform lead Settings match measured use, with a review date
9. Deploy to a test cluster Platform lead The exit test written beforehand passes
10. Move data and storage Data owner A trial copy matches and the final copy fits the window
11. Cut over with a rollback path Business owner Traffic runs on Kubernetes and the rollback steps are written
12. Hand over with runbooks Application lead Each runbook has an owner and a review date
Four phases of the move to Kubernetes: choose and map, build and configure, run and size, then test and cut over
Twelve steps in four phases, one application at a time.

Before You Migrate an Application to Kubernetes: Rehost or Rework First

The first decision is how much of the application changes before the move. Rehosting packages the application as it is and changes only what Kubernetes needs: configuration from outside, health checks and logs sent to standard output. Reworking splits or changes parts first, as the application keeps state on local disk, needs a fixed machine name or keeps sessions in memory.

Four questions decide it. Does the application restart cleanly? Where does it write files? How is it scaled today? Who still knows the code? If the application restarts cleanly and keeps no local state, rehost it, but a no to either points to reworking that part. To move an application to Kubernetes with the least change, rehost the parts that pass and rework only the parts that fail.

Three cards on rehost or rework before you migrate an application to Kubernetes: rehost changes only what Kubernetes needs, rework changes the failing parts first, and each part gets its own answer
Rehost the parts that pass and rework only the parts that fail.

For whether an old application should change at all, read deciding whether an old application should change first. For the work clusters bring after go-live, see the upkeep clusters need once the application is live. The choice of platform model is a separate topic.

The application team does the work, while the business owner signs off the cutover.

Every step ends in a test

A step ends when its done-when test passes, not when a date arrives.

Migrate an Application to Kubernetes, Steps 1 to 4: Choose, Map, Build and Configure

The first four steps decide what moves and package it. They need no cluster yet, because nothing here touches production.

1
Pick the first application

Choose one that matters but is not business-critical.

2
Map dependencies and state

List everything the application touches in one table.

3
Build a small image

Keep the build file in the repository.

4
Move secrets out

Keep passwords out of the image and the repository.

Before the build starts, confirm that you can migrate an application to Kubernetes without waiting on a rewrite, as the rehost or rework answer sets the scope.

Step 1: Pick the First Application

Pick one application that matters but is not business-critical. It should have few dependencies, a clear owner and room to stop briefly during the switch. A first move on the payroll system or the main order system, however, teaches a team under the wrong pressure.

Done when the owner agrees in writing and a cutover window is named. Record why you picked this application, because that reasoning guides the second.

Step 2: Map Dependencies, Configuration and State

List every database, queue, file share, outside service and scheduled job the application uses. List every setting and where it lives, and every place the application writes data. Then fill one table.

Item Where it lives today Where it lives after the move
Orders database Database server in the data center Stays put, reached from Kubernetes
Uploaded files Local disk on the server A shared storage volume
Nightly report job Scheduler on the server A scheduled Kubernetes job

Done when nothing the application touches is missing from the table. A missing row here is the usual cause of a failed first test, because the test finds the dependency nobody listed.

Step 3: Build a Small, Patched Image

To containerize an application, write an image build file in the repository. Start from a small base image, run one process per container and rebuild each time the base image gets a patch. Package the result in the OCI image format, which runtimes such as containerd read.

Keep the build file next to the code, so reviewers see a change to either together. Scored image checks are a separate topic. Done when the image builds from the repository on a clean machine.

Step 4: Move Configuration and Secrets Out of the Image

Use the same image for test and production, and pass settings in from outside, so a change of environment never means a rebuild. Settings go in ConfigMaps or environment values. Passwords and keys, however, go in Kubernetes Secrets or a cloud secret store on AWS or Azure, and the team decides who can read them. Kubernetes stores a Secret unencrypted by default, so turn on encryption at rest and limit who can read it. The Kubernetes Secrets documentation explains the risks; it and the two other Kubernetes pages linked below were checked on 14 November 2026.

Done when no password sits in the image or the repository.

Secrets stay unencrypted by default

Turn on encryption at rest and limit who can read each Secret.

Migrate an Application to Kubernetes, Steps 5 to 8: Health Checks, Registry, Manifests and Sizing

Steps 5 to 8 make the image runnable, stored and sized. Run them on a laptop or build server and a test cluster instead of production. Each ends with something a second person can check.

Step 5: Add Health Checks and Run It Locally

Kubernetes asks three questions of a container. Readiness: is it ready for traffic? Liveness: is it stuck and in need of a restart? Startup: is it still starting slowly, so the other two checks should wait? Add an endpoint or command for each, then run the container with the real settings.

The Kubernetes probe guide lists the options. Done when the application starts, answers and stops cleanly in a container.

Step 6: Push to a Private Registry

Use one private registry that Kubernetes pulls from, and control who can push to it. Tag each image with a release, not “latest”, so a deployment points at one known build. To move containers to Kubernetes in a repeatable way, a release pipeline should build and push each image; see a release pipeline that builds and pushes each image.

Done when Kubernetes pulls a tagged image with no manual step.

Step 7: Write Manifests or Packaging

A Deployment runs the container, a Service gives it a stable address, and the settings from Step 4 then attach to both. Keep one set of files per environment, and keep them in the repository, where reviewers read them like code. Helm and Kustomize are open-source ways to keep one set of files across environments.

Done when a fresh test cluster runs the application from the repository alone.

Step 8: Set Requests and Limits From Measured Use

A request tells Kubernetes how much CPU and memory a container needs. A limit caps use: Kubernetes slows a container at its CPU cap and can kill one that passes its memory limit. Set requests from measured use on the current servers or the local run, not from a guess. The Kubernetes resource management page covers both, and see sizing workloads from measured use.

Review the settings after the first week of real load, because real traffic differs from a test. Done when settings match measured use, with a review date.

Migrate an Application to Kubernetes, Steps 9 to 12: Test Cluster, Data, Cutover and Runbooks

The last four steps put the application in a cluster, move its data and hand it over. They carry the risk, so each has a written test before it starts.

Step 9: Deploy to a Test Cluster

Use the same Kubernetes version and settings as production, and real test data. Restart a node and kill a pod on purpose, then watch recovery. Also check logs and alerts. The loop is: deploy, break on purpose, check recovery, fix, run the exit test.

Write the exit test before the run, not after. Done when that test passes.

Write the exit test first

Write the exit test before the first deploy, so the result cannot be bent to fit.

Step 10: Move Data and Storage

Decide per data store, because the options differ. It may stay where it is and the application connects to it, move to a cloud database service, or run inside Kubernetes on persistent volumes. Write a copy and sync plan, and time the final copy so it fits inside the cutover window.

Before you choose the target region, ask your firm’s compliance or legal owner where this data may live. Done when a trial copy matches and the final copy fits the window.

Step 11: Cut Over With a Rollback Path

Move traffic in stages, a small share first and then all of it, or switch once in a quiet window. Keep the old servers running until the owner signs off. Write the rollback trigger and the rollback steps before the day, and let the owner make the go or no-go call.

Done when traffic runs on Kubernetes and the team has written the rollback steps.

Step 12: Hand Over With Runbooks

Write a runbook for a failed deploy, a stuck pod, a full disk and a secret change. Give every runbook an owner, list the alerts that page someone, and book a review one month after go-live. Finally, choose the next application from what this one taught.

Done when each runbook has an owner and a review date.

Key Takeaway The move ends when the tests pass, a rollback path exists and each runbook has an owner.

Five Move Mistakes When You Migrate an Application to Kubernetes

Five mistakes recur in first moves, but each is cheap to catch early.

  • State left on the container’s own disk, so a restart loses it.
  • Secrets built into the image, where anyone with the image can read them.
  • No readiness check, so traffic reaches a pod that is still starting.
  • Requests guessed instead of measured, so containers starve or sit idle.
  • Old servers switched off on cutover day, leaving no way back.

Key Takeaway The five mistakes above trace back to state, secrets, health checks, sizing and a missing way back.

What This Guide to Migrate an Application to Kubernetes Leaves Out

Some work, however, sits outside these steps. Running clusters after go-live, scored security checks and the choice of platform model are each a separate topic. The guide named above covers changing an application in general, and prices are out of scope.

For how Signisys works with client teams on this, see how Signisys plans and runs container platforms for client teams. Help fits when the first application, its dependencies or its data need an outside read.

Signisys provides these services: see our solution for modernizing and observing applications and DevOps support for moving and releasing applications. A working session reads your first application, its dependencies and its data against the 12 steps, with no promised result and no price. No charge, with a fixed scope.

Book a consultation
Plan your application move to Kubernetes with Signisys

Migrate an Application to Kubernetes: FAQ

How long should the old servers keep running after cutover?

Until the owner signs off against the exit test and one full business cycle has run. However, no fixed number of days applies to every application.

Do we need to rewrite the application before we move it?

Not for every application. Rehost it if it restarts cleanly and keeps no state on local disk, and rework the parts that fail those two tests.

Who should own the application once it runs on Kubernetes?

The application team owns the image, manifests and runbooks, while the platform team owns the Kubernetes platform. Both sign the hand-over.

Newsletter

Security Insights, Delivered.

Practical, vendor-neutral analysis of threats, tools, and architecture decisions.

Book a Consultation

A practice principal will contact you within 1 business day.

Thank you! A Signisys principal will be in touch within 1 business day.