Amazon EKS Migration Assessment¶
Amazon EKS Cluster Analysis Summary¶
| Workload Name | Namespace | Type (Stateless/Stateful) | External Dependencies (DB/Cache) | Complexity | Migration Action |
|---|---|---|---|---|---|
| balancereader | default | Stateless | PostgreSQL (Assumed Amazon RDS) | 🟡 Moderate | Lift & Shift, Reconfigure DB |
| contacts | default | Stateless | Not specified | 🟢 Simple | Lift & Shift |
| frontend | default | Stateless | Not specified | 🟡 Moderate | Lift & Shift, Reconfigure Ingress |
| ledgerwriter | default | Stateless | PostgreSQL (Assumed Amazon RDS) | 🟡 Moderate | Lift & Shift, Reconfigure DB |
| loadgenerator | default | Stateless | Not specified | 🟢 Simple | Lift & Shift |
| transactionhistory | default | Stateless | PostgreSQL (Assumed Amazon RDS) | 🟡 Moderate | Lift & Shift, Reconfigure DB |
| userservice | default | Stateless | Not specified | 🟢 Simple | Lift & Shift |
Recommendations for GKE Migration¶
Infrastructure Provisioning:
- Recommended GKE Cluster Mode: GKE Autopilot is highly recommended. The current Amazon EKS cluster has a single worker node, which indicates that the workloads are not resource-intensive. GKE Autopilot will provide a hands-off operational experience by managing the underlying nodes automatically.
- Recommended Cloud SQL sizing: Based on the presence of PostgreSQL
connection strings in the ConfigMaps, it is recommended to provision a Cloud
SQL for PostgreSQL instance. The size should be determined after a performance
baseline analysis of the source Amazon RDS instance. A good starting point
would be a
db-n1-standard-2instance.
Workload Strategy:
- Stateless Workloads (Lift & Shift): All identified workloads are stateless
and can be redeployed to GKE without modification to the container images. The
following workloads are ready for immediate redeployment:
contactsloadgeneratoruserservice
- Data Migration (External Dependencies): The
balancereader,ledgerwriter, andtransactionhistoryworkloads are dependent on an external PostgreSQL database, which is assumed to be an AWS RDS instance.- Strategy: Utilize Google Cloud's Database Migration Service (DMS) to migrate the RDS instance to Cloud SQL for PostgreSQL. A continuous replication job should be set up to minimize downtime during the cutover.
- Configuration Changes: The
accounts-db-configandledger-db-configConfigMaps will need to be updated with the new Cloud SQL connection details.
- Stateful Workloads (Refactoring Required): No stateful workloads requiring storage migration were identified.
- Networking Changes: The
frontendworkload uses an AWS ALB Ingress.- Strategy: The AWS-specific annotations (
alb.ingress.kubernetes.io/*) must be removed from the Ingress manifest and replaced with a GKE-native Ingress configuration. For simple HTTP routing, a standard GKE Ingress object pointing to thefrontendservice will suffice.
- Strategy: The AWS-specific annotations (
Missing Data / Assumptions:
- It is assumed that the database connection details in the
accounts-db-configandledger-db-configConfigMaps point to an AWS RDS instance. The actual database endpoints were not available in the provided data. - Secrets are not readable, so any credentials stored in Kubernetes Secrets will need to be manually recreated in the GKE cluster.
- The actual size and performance metrics of the source database are unknown. The recommendation for Cloud SQL sizing is an educated guess and should be verified.