Environment
This document lists the cloud-specific prerequisites for deploying QMigrator on Azure AKS, AWS EKS, Google GKE, and Minikube environments.
Each section outlines the required tools, configurations, permissions, and networking essentials needed before installation.
Azure Kubernetes Service (AKS)
Requirements
| Category | Details |
|---|---|
| Cluster Version | Kubernetes v1.25+ |
| Node Count | Minimum 1 node |
| Node Size | Standard_D4as_v5 or larger (4 vCPU, 16 GB RAM minimum) |
| Storage Types | Azure Disk (RWO), Azure Files (RWX) |
| Network Plugin | Azure CNI (recommended) or Kubenet |
| DNS | Azure DNS or custom DNS |
| LoadBalancer | Azure Load Balancer or Application Gateway |
Permissions
Cluster Creation & Management:
- Role:
Contributoron Resource Group
Storage Access:
- Role:
Storage Account Contributorfor Azure Files access az storage account keys listpermission
Network & Security
Outbound Connectivity:
- Source Database (Oracle, PostgreSQL, MySQL, etc.)
- Target Database (PostgreSQL, MySQL, etc.)
- Docker registry (qmigrator.azurecr.io, docker.io, quay.io)
Inbound Connectivity:
- LoadBalancer: Ports 80/443 (HTTP/HTTPS)
Storage Fulfillment
Azure Files (Shared Storage - RWX):
-
Create Storage Account:
-
Create File Share:
Amazon Elastic Kubernetes Service (EKS)
Requirements
| Category | Details |
|---|---|
| Cluster Version | Kubernetes v1.25+ |
| Node Count | Minimum 1 node |
| Node Size | t3.xlarge or larger (4 vCPU, 16 GB RAM minimum) |
| Storage Types | EBS (RWO), EFS (RWX) |
| IAM | OIDC provider enabled for service accounts |
| VPC | Custom VPC with public/private subnets |
| LoadBalancer | AWS Network Load Balancer (NLB) or Application Load Balancer (ALB) |
Permissions
IAM Roles for Cluster:
AmazonEKSClusterPolicy- Cluster managementAmazonEKSServiceRolePolicy- Cluster operations
IAM Roles for Worker Nodes:
AmazonEKSWorkerNodePolicy- EC2 permissionsAmazonEKS_CNI_Policy- NetworkingAmazonEC2ContainerRegistryReadOnly- ECR access
IAM policy for EFS and bind to service account
Security Group Permissions:
- Allow EKS instances to reach databases
Network & Security
Outbound Connectivity:
- Source Database (Oracle, PostgreSQL, MySQL, etc.)
- Target Database (PostgreSQL, MySQL, etc.)
- Docker registry (qmigrator.azurecr.io, docker.io, quay.io)
Inbound Connectivity:
- LoadBalancer: Ports 80/443
Storage Fulfillment
EFS (Shared Storage - RWX):
-
Create EFS:
-
Create Mount Targets in each subnet:
Google Kubernetes Engine (GKE)
Requirements
| Category | Details |
|---|---|
| Cluster Version | Kubernetes v1.25+ |
| Node Count | Minimum 1 node |
| Node Size | n4-standard-4 or larger (4 vCPU, 16 GB RAM minimum) |
| Storage Types | Persistent Disk (RWO), GCS Bucket (RWX) |
| Workload Identity | Enabled for pod authentication |
| Network | VPC with private/public subnets |
| LoadBalancer | Google Cloud Load Balancer or Ingress |
Permissions
GCP Project-Level:
- Role:
roles/container.admin- GKE cluster management - Role:
roles/iam.serviceAccountAdmin- Service account management - Role:
roles/storage.admin- Cloud Storage access
Workload Identity Setup:
# Enable Workload Identity for cluster
gcloud container clusters update <cluster-name> \
--workload-pool=<project-id>.svc.id.goog
Network & Security
Outbound Connectivity:
- Source Database (Oracle, PostgreSQL, MySQL, etc.)
- Target Database (PostgreSQL, MySQL, etc.)
- Docker registry (qmigrator.azurecr.io, docker.io, quay.io)
Inbound Connectivity:
- LoadBalancer/Ingress: Ports 80/443
Storage Fulfillment
GCS Bucket (Shared Storage - RWX):
-
Create GCS Bucket:
-
Install gcsfuse CSI Driver:
Minikube (Local / PoC Deployment)
Requirements
| Category | Details |
|---|---|
| Kubernetes Version | v1.25+ (bundled with Minikube 1.30+) |
| Host OS | Linux, macOS, or Windows (WSL2 recommended) |
| CPU/Memory | 4 vCPU / 16 GB RAM minimum (8 vCPU / 32 GB recommended) |
| Disk Space | 40 GB free space for images and volumes |
| Storage | HostPath |
| Hypervisor | Docker, VirtualBox, Hyper-V, or KVM |
| Ingress | Add On |
Permissions
Host-Level:
- Docker daemon access (add user to docker group)
- Sudo access for mount operations
- Write permissions to Minikube data directory (~/.minikube)
Kubernetes RBAC:
- Default user has cluster-admin access
Network & Security
Outbound Connectivity (from Minikube VM):
- Host network (for database access from host machine)
- Internet (for pulling container images)
- Docker registry (qmigrator.azurecr.io)
- Docker registry (qmigrator.azurecr.io, docker.io, quay.io)
Inbound Connectivity:
- port-forward for direct access
Network Setup for Databases on Host:
# Enable Minikube to access host network
minikube start --driver=docker --extra-config=kubeadm.ignore-preflight-errors=DummyControlPlane
Storage Fulfillment
Local HostPath Storage:
-
Create local directories:
-
Mount into Minikube:
-
Verify mount: