Systematic approach to migrating workloads from US cloud providers (AWS, Azure, GCP, OCI) to sovereign infrastructure. Covers rehosting strategies, data migration, cutover procedures, and rollback capabilities.
Migration Approach Options
Rehost (Lift & Shift)
Recommended for emergency timeline
Move workloads as-is to sovereign infrastructure with minimal changes. Fastest path to sovereignty.
Timeline: Days to weeks per workload
Replatform
Minor optimisations during migration (e.g., managed DB → self-managed PostgreSQL).
Moderate effort, some performance/cost benefits.
Timeline: Weeks per workload
Refactor/Rearchitect
Significant changes to leverage new platform. Not recommended for initial migration due to time constraints.
Timeline: Months per workload
Emergency Mobilisation Recommendation
Rehost first, optimise later. The primary goal is achieving sovereignty, not optimisation. Once workloads are on sovereign infrastructure, they can be refactored incrementally. The risk of continued US cloud dependency far outweighs any performance or cost inefficiency from lift-and-shift.
Migration Strategy by Workload Type
Virtual Machine Workloads
EC2, Azure VMs, GCE, OCI ComputeApproach: Image-Based Rehost
- Inventory: Document all VMs, configurations, networking, storage attachments
- Image Export: Create machine images/snapshots (AMI, VHD, etc.)
- Image Conversion: Convert to KVM-compatible format (qcow2) if needed
- Secure Transfer: Transfer images via encrypted channel to sovereign storage
- Import: Register images in CloudStack, configure networking
- Validation: Boot VMs, validate functionality in isolated network
- DNS Cutover: Update DNS to point to new infrastructure
- Monitoring: Monitor for issues, maintain rollback capability for 72 hours
Pre-Migration Checklist
- Document all security groups/firewall rules
- Identify instance metadata dependencies (AWS 169.254.x.x, Azure IMDS)
- Check for cloud-specific agents (CloudWatch agent, Azure agent)
- Map elastic IPs/public IPs
- Document auto-scaling configurations
- Backup all data volumes separately
Key Risk: Cloud-Specific Dependencies
VMs may depend on cloud-specific services (instance metadata, cloud-init, managed DNS). These must be identified and replicated or replaced on sovereign infrastructure.
Containerised Workloads (Kubernetes)
EKS, AKS, GKE, OKEApproach: Manifest Migration + Data Replication
- Export: Export all Kubernetes manifests (Deployments, Services, ConfigMaps, Secrets)
- Registry Sync: Mirror container images to sovereign registry (Harbor)
- Cluster Setup: Deploy equivalent K8s cluster on CloudStack
- Manifest Adjustment: Update storage classes, load balancer configs, ingress
- Data Migration: Migrate PersistentVolumes and databases
- Parallel Deploy: Deploy workloads to sovereign cluster
- Traffic Shift: Gradual traffic migration via DNS or ingress weights
- Validation: Full functional testing before full cutover
Advantage: Kubernetes Portability
Containerised workloads are inherently more portable. Standard Kubernetes manifests work across any conformant cluster. Main changes: storage class names, cloud-specific load balancer annotations, and any managed service integrations (RDS, managed Redis, etc.).
Cloud-Specific Components to Replace
- Ingress: AWS ALB Ingress → nginx-ingress or Traefik
- Storage: EBS CSI → CloudStack CSI or Ceph RBD
- Secrets: AWS Secrets Manager → OpenBao
- Service Mesh: App Mesh/Anthos → Istio/Linkerd
- DNS: Route53 external-dns → CoreDNS + sovereign DNS
Database Workloads
RDS, Azure SQL, Cloud SQL, OCI DBApproach: Logical Replication + Cutover
- Setup Replica: Deploy PostgreSQL/MySQL on sovereign infrastructure
- Enable Replication: Configure logical replication from source (AWS DMS or native)
- Sync: Wait for replica to catch up with source
- Test: Validate data integrity and schema consistency
- Freeze Writes: Brief write freeze on source (seconds to minutes)
- Final Sync: Ensure final transactions replicated
- App Cutover: Point applications to new database
- Verify: Confirm read/write operations working
Key Challenge: Managed Service Features
Managed databases include features that must be replicated manually:
- Automated backups → Configure pgBackRest or equivalent
- Multi-AZ failover → Configure Patroni or replication-manager
- Read replicas → Configure native replication
- Parameter groups → Apply equivalent PostgreSQL/MySQL settings
- Monitoring → Configure Prometheus PostgreSQL exporter
Object Storage Data
S3, Azure Blob, GCS, OCI Object StorageApproach: Parallel Sync + Application Update
- Inventory: List all buckets, sizes, access patterns
- Setup MinIO: Create equivalent bucket structure on MinIO
- Initial Sync: Use rclone or s5cmd for high-speed transfer
- Continuous Sync: Set up ongoing sync to capture new objects
- Policy Migration: Recreate bucket policies and IAM in Keycloak
- Application Update: Update application configs to use MinIO endpoint
- Validation: Verify all objects accessible and integrity intact
- Final Sync: Final sync before S3 cutoff
MinIO S3 Compatibility
MinIO provides full S3 API compatibility. Applications using standard S3 SDKs typically require only endpoint URL and credential changes. No code modifications needed for most applications.
Data Transfer Considerations
- Bandwidth: Plan for sustained transfer speeds (10Gbps+ for large datasets)
- Cost: AWS egress charges apply (~$0.09/GB for first 10TB)
- Time: 100TB at 1Gbps ≈ 10 days
- Security: Encrypt data in transit (TLS) and verify checksums
Serverless/FaaS Workloads
Lambda, Azure Functions, Cloud FunctionsApproach: Function Containerisation + OpenFaaS Deploy
- Inventory: List all functions, triggers, environment variables
- Extract: Download function code and identify dependencies
- Containerise: Package as container image with OpenFaaS template
- Deploy: Deploy to OpenFaaS on sovereign Kubernetes
- Trigger Setup: Configure equivalent triggers (HTTP, queue, schedule)
- Environment: Migrate environment variables and secrets to OpenBao
- Testing: Comprehensive functional testing
- Cutover: Update calling applications to new endpoints
Key Challenge: Cloud-Native Integrations
Lambda functions often integrate tightly with AWS services:
- API Gateway triggers: → Replace with Kong or Traefik
- SQS triggers: → Replace with Kafka consumer
- S3 event triggers: → Replace with MinIO bucket notifications
- DynamoDB streams: → Replace with Kafka CDC or PostgreSQL triggers
- AWS SDK calls within function: → Refactor to use sovereign equivalents
Cutover Strategy: Blue-Green Deployment
All critical workloads use blue-green deployment for zero-downtime cutover with instant rollback capability.
↓ Gradual shift
[Users] → [DNS/Load Balancer] → 50% [Blue: US Cloud] / 50% [Green: Sovereign]
↓ Validation successful
[Users] → [DNS/Load Balancer] → 0% [Blue: US Cloud] / 100% [Green: Sovereign]
Cutover Phases
Pre-Cutover Validation
- Full functional testing on sovereign infrastructure
- Performance benchmarking against production baseline
- Security scanning and penetration testing
- Disaster recovery testing (simulate rollback)
Go/No-Go Decision
- Final data sync verification
- All teams confirm readiness
- Communication sent to stakeholders
- Rollback procedures confirmed
Traffic Migration
- 10% traffic shift: Initial canary (monitor for 30 minutes)
- 50% traffic shift: Broader validation (monitor for 1 hour)
- 90% traffic shift: Near-complete migration (monitor for 2 hours)
- 100% traffic shift: Full cutover
Stabilisation Period
- Maintain rollback capability to US cloud
- 24/7 monitoring and incident response
- Performance optimisation
- User feedback collection
US Cloud Decommission
- Final data verification
- US cloud resources terminated
- Contracts terminated/not renewed
- Data deletion verification (compliance)
US Cloud Cessation Strategy
Immediate Actions (Week 1)
- Freeze new deployments: No new workloads deployed to US cloud
- Contract review: Identify all active contracts, notice periods, termination clauses
- Spending freeze: No new reserved instances or committed use discounts
- Data audit: Full inventory of all data stored on US cloud
Contract Termination Approach
| Provider | Typical Notice Period | Termination Clause | Recommended Action |
|---|---|---|---|
| AWS | Pay-as-you-go: None. Reserved: Varies | Standard ToS allows termination | Immediate migration; let reserved capacity expire |
| Azure | EA: 30-90 days typically | Review EA amendment rights | Serve termination notice immediately |
| GCP | Committed use: Varies | Standard ToS | Migrate and allow commitments to expire |
| OCI | Universal Credits: Varies | Review contract terms | Serve notice; negotiate early exit if needed |
Data Deletion Requirements
- Request formal data deletion confirmation from all US providers
- Verify deletion across all regions and backup systems
- Obtain written certification of deletion (GDPR Article 17 right)
- Retain audit logs of deletion requests and confirmations