Plan your VPC environment
Classic infrastructure
Review and adjust the VPC configuration generated by the assessment before you provision the VPC cluster. In most cases the auto-generated configuration is ready to use without modification. Use this topic to verify the proposed topology, understand how network policies are handled, plan private connectivity, and lower DNS TTLs before cutover.
The assessment step generates a proposed VPC configuration based on your Classic cluster. Review the following areas before you click Create VPC cluster in the migration wizard, and make any adjustments directly in the cluster creation form if needed.
Step 1: Confirm the VPC and subnets
You select the VPC and subnets for the VPC cluster. If you do not select a VPC, a new VPC is created in the same region as your Classic cluster during the Create step. If you want to use a specific VPC or different subnets per zone, note the IDs now — you will pass them as overrides in the Create phase.
From the console
In the migration wizard, you select the VPC and subnets in the Create VPC cluster form. If you do not select a VPC, a new VPC is created in the same region as your Classic cluster.
- In the wizard, navigate to the Create step and click Create VPC cluster to open the cluster creation form.
- Under Networking, select the Virtual private cloud and the Subnet for each zone.
- To use an existing VPC or subnet, click the dropdown for that field and select from the available options. Only VPCs and subnets in the same region as your Classic cluster are shown.
- For high availability, ensure subnets are selected in at least two zones. For a multizone cluster, you need one subnet per zone.
From the CLI
-
List the available VPCs in your account:
ibmcloud is vpcsExample output:
ID Name Status Classic access Default network ACL Default security group Resource group r006-1a2b3c4d-5e6f-7890-abcd-ef1234567890 my-migration-vpc available false acl-a1b2c3d4 sg-b2c3d4e5 default r006-2b3c4d5e-6f7a-8901-bcde-f12345678901 another-vpc available false acl-b2c3d4e5 sg-c3d4e5f6 production -
List available subnets, filtering by your resource group:
ibmcloud is subnets --resource-group-name RESOURCE_GROUPExample output:
ID Name Status Subnet CIDR Addresses ACL Public gateway VPC Zone 0717-aaaa1111-bbbb-2222-cccc-3333dddd4444 subnet-us-south-1 available 10.240.0.0/24 245/256 acl-a1b2c3d4 - my-migration-vpc us-south-1 0727-bbbb2222-cccc-3333-dddd-4444eeee5555 subnet-us-south-2 available 10.240.64.0/24 245/256 acl-a1b2c3d4 - my-migration-vpc us-south-2
For high availability, ensure subnets exist in at least two zones. For a multizone cluster, you need one subnet per zone.
Use the following minimum recommended subnet sizing:
/26(64 addresses) per zone for small clusters/24(256 addresses) per zone for production workloads
Step 2: Confirm worker pool flavors
The metadata generator maps each Classic worker pool flavor to an equivalent VPC flavor. Review the workerPools[].machineType fields in the VPC metadata that was generated in the assess phase to verify the proposed mappings are
appropriate for your workloads. The metadata is stored in your COS instance as {clusterID}_vpc.json.
-
List available VPC flavors in your target zone to compare against the proposed mapping:
ibmcloud oc flavors --zone VPC_ZONE --provider vpc-gen2Example output:
Name Cores Memory Network Speed OS Server Type Storage Secondary Storage Provider bx2.2x8 2 8GB 24Gbps UBUNTU_20_64 virtual 100GB - vpc-gen2 bx2.4x16 4 16GB 24Gbps UBUNTU_20_64 virtual 100GB - vpc-gen2 bx2.8x32 8 32GB 24Gbps UBUNTU_20_64 virtual 100GB - vpc-gen2 bx2.16x64 16 64GB 24Gbps UBUNTU_20_64 virtual 100GB - vpc-gen2
If you need a different flavor for a worker pool, note the pool name and the desired flavor — you will supply this as a workerPoolOverride in the create step.
Step 3: Review your network policies
The migration service does not migrate Global Network Policies (GNPs). Moving them to VPC security groups is your responsibility. The migration service migrates only namespace-scoped Kubernetes and Calico network policies, as part of the workload migration step. Review your policies now so you can plan any manual steps.
-
List the Global Network Policies on your Classic cluster so that you can re-create them as VPC security group rules:
oc get globalnetworkpolicies -o yaml
For more information, see Which network policies are migrated?. To create equivalent rules in VPC, see Controlling traffic with VPC security groups.
VPC security groups have a maximum of 250 rules. Consolidate rules as needed when you re-create your GNPs.
Step 4: Plan private connectivity
The migration service does not migrate on-premises network connectivity. If your Classic cluster connects to on-premises networks using Classic VPN or Direct Link 1.0, you must set up the equivalent VPC connectivity before you start workload migration so that pods on the VPC cluster can reach on-premises resources immediately after migration.
Review the following VPC equivalents and complete the setup independently before proceeding to the Create step:
| Classic | VPC equivalent |
|---|---|
| Classic VPN | VPC VPN gateway |
| Direct Link 1.0 | Direct Link 2.0 |
| Multiple classic clusters on same private VLAN | Multiple VPC clusters in the same VPC (native private connectivity) |
| Hybrid classic + VPC connectivity | Transit Gateway |
If your application load balancers rely on source IP preservation (for example, for IP allowlisting), only VPC NLBs support source IP preservation in VPC. Plan to annotate the relevant Services with service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: nlb on the VPC cluster.
Step 5: Plan the Ingress migration
Classic clusters use an IBM-managed Ingress subdomain under containers.appdomain.cloud. VPC clusters use a separate subdomain. The migration plan (created in the Migrate step) generates the VPC Ingress host mappings for each existing
Ingress resource. Plan to update your external DNS records at cutover time.
At cutover, update all of the following that reference the Classic Ingress hostname:
- Kubernetes Ingress resources on the VPC cluster
- Application configuration files and environment variables
- CI/CD pipeline configurations (for example, GitHub Actions workflows, Tekton pipelines)
- Any external monitoring or synthetic test endpoints
Lower your external DNS TTLs to 60–300 seconds before the planned cutover window so propagation is fast.