Last quarter I was knee-deep in a customer migration project — moving production workloads from EKS to VMware vSphere Kubernetes Service (VKS) on VCF 9. The architecture made sense: consolidate onto VCF, get NSX VPC networking, vSAN storage, and ditch the monthly AWS bill. Standard stuff.
The Problem:
Migrating Kubernetes workloads between platforms means transforming hundreds of YAML files — changing image registries (ecr.aws.com → Harbor), remapping storage classes (gp3 → vSAN), stripping cloud annotations (IRSA, Azure Workload Identity), fixing deprecated APIs. I spent three days manually editing manifests with sed scripts and still missed edge cases.
The Solution:
I built this browser-based tool to automate the grunt work. It runs entirely in your browser — no backend, no data upload, works offline.
What It Does:
Upload your Kubernetes manifests, configure your VCF target environment (Harbor registry, vSAN StorageClass, Velero bucket), hit Analyze. The tool:
- Auto-fixes: Deprecated APIs, cloud annotations, image URLs, StorageClass refs, CSI drivers, node selectors
- Flags for review: Secrets (re-provision via Vault), LoadBalancers (NSX ALB sizing), HPA metrics, RWX PVCs
- Generates bundle: Transformed YAML, Velero commands, image mirror script, VolumeSnapshotClass, SC remap ConfigMap, step-by-step checklist
Built with AI assist (I provided migration domain knowledge, AI Assist wrote the transformation engine). Tested on real customer workloads migrating to VCF 9 with NSX VPC.
🚀 Try it below
EKS/AKS/OCP → VKS/VCF9
Upload K8s manifests → analyze cloud deps → transform for VKS on VCF 9 → download migration bundle
kubectl get all,cm,secret,pvc,ingress,sa,pdb,hpa -n <ns> -o yaml---Upload YAML → Configure targets → Download migration bundle
Step-by-Step Usage:
Step 0 (Prerequisite): Export from Source Cluster
# Connect to your source EKS/AKS/OpenShift clusterkubectl config use-context my-eks-cluster# Export all resources from production namespacekubectl get all,configmaps,secrets,pvc,ingress,serviceaccounts,pdb,hpa \ -n production -o yaml > production-export.yaml# Repeat for each namespace you're migratingkubectl get all,cm,secret,pvc,ingress,sa,pdb,hpa -n staging -o yaml > staging-export.yaml
OpenShift users run this instead:
# oc get all,cm,secret,pvc,route,sa,pdb,hpa,deploymentconfigs,imagestreams \ -n production -o yaml > production-export.yaml
Step 1: Upload to Tool — Open the tool , drag production-export.yaml and staging-export.yaml files into the drop zone (or paste YAML content directly)
Step 2: Configure Target — Select source platform (EKS/AKS/OpenShift), fill in target VKS details:
- Harbor registry:
harbor.corp.local - Harbor project:
migration - vSAN StorageClass:
vsan-default-storage-policy - Velero bucket URL:
https://minio.corp.local - Velero bucket name:
velero-backups
Step 3: Analyze — Click “Run Analysis” — tool processes YAML, shows results: X resources analyzed, Y errors, Z warnings, N auto-fixed
Step 4: Download Bundle — Click “Download Migration Bundle” → get vks-migration-bundle.zip with 6 pre-generated files ready to use
Known Limitations:
- Workload validation: Doesn’t check resource limits, affinity rules, or custom CRD schemas — manual review required
- Application code: Can’t detect SDK calls to AWS/Azure APIs in your app code — only infrastructure YAML
- Velero scripts: Templates, not production automation — test your backup/restore workflow thoroughly
- OpenShift Routes: Basic conversion only — complex regex paths or custom annotations need manual work
- Custom operators: Heavily customized or non-standard patterns may need review
- Edge cases exist: Assumes standard Kubernetes conventions — always dry-run before applying
Bottom line: This tool automates the 90% tedious bulk work. The 10% that needs your domain expertise still needs your domain expertise.
Disclaimer & Privacy:
This tool was built during my own migration work and is shared as-is for the community. It is not endorsed, supported, or affiliated with Broadcom, VMware, or my employer. All YAML processing happens entirely in your browser using JavaScript — no data is uploaded to any server, no backend exists, works completely offline. Always review transformed manifests carefully and run kubectl apply --dry-run=server against your VKS cluster before production deployment. This tool automates repetitive transformations but cannot replace human review of your specific workload requirements.


Leave a Reply