Konveyor Move2Kube assists builders in migrating initiatives from platforms corresponding to Cloud Foundry and Docker swarm to Kubernetes and OpenShift. Move2Kube analyzes your software’s supply code and generates Infrastructure-as-Code (IaC) artifacts corresponding to Kubernetes YAMLs, Helm charts, Tekton pipelines, and so forth.
Powering Move2Kube is a transformer framework that permits a number of small transformers to be chained collectively to rework the artifacts fully.
Many completely different transformers become involved when reworking a Java or Node.js venture to create all of the vacation spot artifacts. This permits for the reuse of transformers in varied end-to-end flows. Each transformer is able to performing a number of actions.
Move2Kube
You can use Move2Kube as a terminal command or as an online app. Its core performance consists of planning and transformation. In the planning section, Move2Kube analyzes artifacts to determine the companies concerned. In the transformation section, it transforms these companies into vacation spot artifacts.
The terminal command is a single binary, which you’ll download and install. Move2Kube additionally gives a helper script to obtain and place the binary in your native filesystem:
curl https://raw.githubusercontent.com/konveyor/move2kube/main/scripts/install.sh
-o move2kube_install.sh
Look via the script to make sure its set up technique aligns along with your choice, after which run it:
$ sh ./move2kube_install.sh
To use the command, simply run it on a listing containing the applying supply code:
$ move2kube rework -s ./src
Transform an enterprise scale software
Move2Kube can be utilized to replatform a real-world enterprise software. There’s a demo enterprise app included within the Move2Kube git repository to display the workflow. This demo app is much like a typical real-world software with CRUD operations and a multi-tier structure.
To attempt it out, obtain the supply code for the enterprise app:
$ curl https://move2kube.konveyor.io/scripts/download.sh
| bash -s -- -d samples/enterprise-app/src -r move2kube-demos
The supply code for the enterprise app is within the src
listing.
First, use the move2kube rework
command:
$ move2kube rework -s ./src
After working the command, look within the myproject
folder. There are new directories, together with deploy
, scripts
, and supply
. The deploy
listing comprises all IaC artifacts, corresponding to Kubernetes YAML recordsdata, Tekton pipelines, Helm charts, Knative recordsdata, compose recordsdata, and OpenShift recordsdata. The scripts
listing comprises shell scripts to construct and push container pictures to the registry of your alternative. Finally, the supply
listing comprises the supply code and Dockerfiles.
Capabilities offered by Move2Kube
Move2Kube has a robust QA Engine. Transformers can get enter from a person utilizing this engine. Transformers obtain the enter as person interplay via a terminal, an online interface, a REST API, or as a configuration file.
For occasion, within the demo enterprise app, the Move2Kube QA engine would possibly ask which port the frontend app ought to pay attention on, which container registry must be used to retailer pictures, or what ingress host must be used.
To run an app in a non-interactive mode, use the --qa-skip
flag. This choice causes Move2Kube to make use of default solutions:
$ move2kube rework -s ./src --qa-skip
If you wish to reply the questions from a configuration file, use the -f
choice:
$ move2kube rework -s ./src -f ./m2kconfig.yaml
An inventory of all solutions used for the run is captured as a config within the m2kconfig.yaml
file.
Customization functionality
Move2Kube consists of a number of transformers prepared to be used, and it permits customers to jot down new transformers. Move2Kube exposes all the inner transformers’ capabilities to be leveraged for writing customized transformers. These capabilities embody a QA engine, intensive templating enabled by Golang templates, and isolation. Custom transformers behave precisely the identical as built-in transformers. The two varieties will be chained collectively to realize an end-to-end transformation.
Move2Kube generates artifacts you possibly can customise to adjust to organizational finest practices and insurance policies. You can direct the Move2Kube software to customizations utilizing the -c
or --customization
choice.
You can create customizations utilizing three completely different strategies:
- Configure built-in transformers: Configure a built-in transformer to behave otherwise. For instance, you possibly can modify the parameterization transformer to parameterize completely different values relying on the group’s wants.
- Starlark-based transformers: Write an entire transformer in a Python-like language, Starlark. For instance, you would use a Starlark-based transformer so as to add customized annotations to Kubernetes YAML recordsdata.
- Executable transformers: Write an entire transformer in a language of your alternative and permit Move2Kube to execute it together with the opposite transformers. For instance, generate customized Helm charts so as to add customized recordsdata and directories in particular places.
Parameterization and customization functionality
Move2Kube permits customers to parameterize customized fields within the goal platform artifacts, corresponding to Helm charts. For occasion, parameterizing the variety of replicas in a Helm chart:
apiVersion: apps/v1
variety: Deployment
metadata:
annotations:
move2kube.konveyor.io/service.expose: "true"
creationTimestamp: null
labels:
move2kube.konveyor.io/service: orders
title: orders
spec:
progressDeadlineSeconds: 600
replicas: {{ index .Values "common" "replicas" }}
Move2Kube additionally lets you customise output artifacts. For occasion, add a customized annotation to the Ingress YAML file:
apiVersion: networking.k8s.io/v1
variety: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: haproxy
creationTimestamp: null
labels:
move2kube.konveyor.io/service: myproject
title: myproject
Move2Kube case research
Mov2Kube has been broadly adopted within the business and open-source communities. Here are some case research the place replatforming utilizing Move2Kube has proven appreciable enchancment over guide effort.
- InsApp
- Language Stack: Java (springboot), Angular JS UI
- Source Platform: Docker Swarm
- Number of Services: 100
- Manual Effort: 56 days
- Move2Kube Effort: 6 days
- In-Built Transformers Invoked: 6
- Number of External Transformers: 0
- AA case research
- Language Stack: Java (springboot), Angular JS UI
- Source Platform: Cloud-foundary
- Number of Services: 3
- Manual Effort: 2 days
- Move2Kube Effort: quarter-hour
- In-Built Transformers Invoked: 14
- Number of External Transformers: 0
- CP case research
- Language Stack: Python
- Source Platform: ECS Fargate
- Number of Services: 7
- Manual Effort: 12 days
- Move2Kube Effort: 1 day
- In-Built Transformers Invoked: 13
- Number of External Transformers: 0
- MFA case research
- Language Stack: .NET Silverlight UI
- Source Platform: Bare-metal/VM
- Number of Services: 4
- Manual Effort: 9 days
- Move2Kube Effort: 5 hours
- In-Built Transformers Invoked: 14
- Number of External Transformers: 1 (customized dependencies)
- TMP case research
- Language Stack: Java (springboot)
- Source Platform: Cloud-foundry
- Number of Services: 24
- Manual Effort: 25 days
- Move2Kube Effort: 2.25 days
- In-Built Transformers Invoked: 15
- Number of External Transformers: 1 (customized directories)
Data supply: Seshadri, Padmanabha V., Harikrishnan Balagopal, Akash Nayak, Ashok Pon Kumar, and Pablo Loyola. “Konveyor Move2Kube: A Framework For Automated Application Replatforming.” In 2022 IEEE fifteenth International Conference on Cloud Computing (CLOUD), pp. 115-124. IEEE, 2022.
Learn extra about Konveyor Move2Kube
Visit the Move2Kube site to be taught extra about replatforming utilizing Konveyor Move2Kube.