After proper preparation, the migration itself includes, in fact, only applying the configured YAML files to the created production cluster, checking its operability and gradually switching workloads to new addresses. You can manually apply manifests to a cluster, but it is much more efficient and correct to use a customized CI / CD pipeline.
Typical Problems And How To Solve Them
Of course, migration has its pitfalls. Below is a list of the most common problems and how to solve them:
- Transfer of databases: Several strategies are possible here
- leave the database in the local infrastructure;
- deploy a database inside a Kubernetes cluster – for this; you will have to experiment with the available operators to launch the database in Kubernetes;
- Leverage Managed Database as a Service (DBaaS) in the cloud. This option is easier to configure and offers built-in backup and scaling.
- In general, it is better to transfer the database to the cloud and not keep it locally to avoid performance loss. To reduce downtime during data migration, you can pre-create a database replica in the cloud and keep it in sync with the primary database. When ready, convert it to master and perform a switchover. This work does not need to be done concurrently with the cluster migration.
- Moving message queues: The same options are available as with databases: continue using the On-premise queue, start it in a Kubernetes cluster, or use a managed service in the cloud (Simple Queue Service, SQS). The recommendation will be the same – moving to the cloud for maximum performance.
- Potential downtime of applications during migration; To reduce downtime when switching users to a new Kubernetes cluster, we recommend using the blue-green deployment approach. You can deploy applications to a new cluster without disabling previous versions and, if successful, perform traffic translation at the DNS level – for example, using weighted routing available in most ISP DNS management systems.
- When the entire volume of requests has been transferred to the new cluster, old versions of applications can be disabled.
- Kubernetes version mismatch:To avoid any inconsistencies in the K8s API, you should plan to migrate to the same Kubernetes version that is currently in use. If this version is no longer supported on the target cloud platform, it is important to identify and exclude deprecated APIs.
- Proprietary services on the side of the previous cloud provider: When using any cloud platform, it is extremely important to avoid Vendor lock-in, that is, binding to the services of a particular provider that other providers do not have. The use of proprietary services, perhaps, brings certain advantages, allowing you to use unique functionality. Still, at the same time, it makes it difficult to change the provider if necessary quickly.
- Suppose you find yourself in a similar trap before migration. In that case, you will need additional refactoring of applications to switch to the closest analogs of services on the new platform (provided that they are not proprietary again) or to exclude them from your project altogether.
- Lack of expertise in configuring YAML files and cluster management: In this case, you will need to improve the qualifications of your specialists or contact the experts of the cloud provider for help.
Turnkey Migration Options
Many cloud platforms are ready to help you migrate to Managed Kubernetes. When migrating to Kubernetes aaS, it requires the following support.
- advice on building a microservice architecture using Kubernetes;
- Assistance with data transfer from Docker Swarm, Managed solutions of other cloud providers and existing On-premise clusters. You can use the integration with Velero available on the platform or get advice on manually rewriting YAML files if necessary;
- the assistance of experts in creating a fault-tolerant and scalable Kubernetes cluster, including setting up the backup, load balancing, monitoring and other functionality;
- Further consultations on the operation of the cluster, including round-the-clock monitoring and elimination of incidents 24/7