Moving Application to AWS EKS

I have an application which runs on a single node K8s cluster available with Docker Desktop. Now I want to move that application to an EKS cluster of 4 members to be used for Business purpose further.

The application has Deployments, Statefulsets, Service, ConfigMaps

Can you guide me steps on how should we do this, detailed steps will be beneficial.

1 Like

@Sagar_Talreja

If your application already runs on a single-node Kubernetes cluster (Docker Desktop) and you want to move it to an Amazon EKS cluster with multiple nodes, the migration is mostly about making the manifests production-ready and cloud-compatible.

High-level steps:

  1. Audit existing resources
    Export your Deployments, StatefulSets, Services, and ConfigMaps.
    Check for local-only assumptions like hostPath volumes or hard-coded IPs.

  2. Prepare container images
    Make sure all images are accessible from EKS (public registry or Amazon ECR).
    Update image references in your manifests.

  3. Fix storage for StatefulSets
    Docker Desktop often uses hostPath, which won’t work on EKS.
    Replace it with PersistentVolumeClaims backed by EBS using the AWS EBS CSI driver.

  4. Add resource requests and limits
    This is critical in a multi-node, production cluster for proper scheduling and stability.

  5. Create the EKS cluster
    Use eksctl to create a cluster with 4 worker nodes and configure kubectl access.

  6. Install required add-ons: AWS EBS CSI driver (for persistent storage) and AWS Load Balancer Controller (if exposing services externally)

  7. Deploy in the right order
    Namespace → ConfigMaps → Services → Deployments → StatefulSets.

  8. Validate and test
    Check pod scheduling across nodes, verify PVC binding, test service access, and simulate pod failures to ensure resilience.

  9. Production hardening
    Move sensitive configs to Secrets, enable monitoring/logging, and apply proper IAM permissions.

Hi Siddartha,

The cluster and namespace is already created for the migration. The images are placed on the harbor repository instead of ECR.

1 Like

Okay, excuse me for the delay.

The Approach I follow:

  1. Create a docker-registry secret in the target namespace for Harbor and attach it to a ServiceAccount.

  2. Update Deployments/StatefulSets to use the Harbor image paths and the ServiceAccount.

  3. Clean up manifests exported from local K8s (remove status, nodeName, hostPath, etc.).

  4. Replace local storage with PVCs backed by EBS/EFS for StatefulSets.

  5. Update ConfigMaps to remove localhost/local IP assumptions and use service names.

  6. Change Services from NodePort to LoadBalancer (or Ingress).

  7. Apply resources in order: ConfigMaps/Secrets — SA — storage — StatefulSets —Deployments — Services.

  8. Validate pod distribution, image pulls, data persistence, and external access.

EKS cluster is ready, just deploy the app there, then shut down the old Docker desktop cluster.

Would be happy to hear if anyone sees gaps from similar Docker Desktop — EKS migrations.

@Sagar_Talreja Have you completed this Migration from Docker Desktop — EKS migration? If yes, I’d love to know how you approached it.

Let’s connect to discuss more in detail, how you approached.