Konveyor Move2Kube 协助开发人员将项目从 Cloud Foundry 和 Docker swarm 等平台迁移到 Kubernetes 和 OpenShift。Move2Kube 分析您的应用程序的源代码,并生成基础设施即代码 (IaC) 工件,例如 Kubernetes YAML、Helm charts、Tekton 管道等等。

(Mehant Kammakomati,CC BY-SA 4.0)
Move2Kube 由一个转换器框架驱动,该框架允许多个小型转换器链接在一起,以完全转换工件。

(Mehant Kammakomati,CC BY-SA 4.0)
当转换 Java 或 Node.js 项目以创建所有目标工件时,会涉及到许多不同的转换器。这允许在各种端到端流程中重用转换器。每个转换器都能够执行多项活动。

(Mehant Kammakomati,CC BY-SA 4.0)
Move2Kube
您可以将 Move2Kube 用作终端命令或 Web 应用程序。其核心功能包括规划和转换。在规划阶段,Move2Kube 分析工件以识别所涉及的服务。在转换阶段,它将这些服务转换为目标工件。
终端命令是一个单独的二进制文件,您可以下载并安装。Move2Kube 还提供了一个辅助脚本,用于下载并将二进制文件放置在您的本地文件系统中
curl \ https://raw.githubusercontent.com/konveyor/move2kube/main/scripts/install.sh \
-o move2kube_install.sh
查看脚本以确保其安装方法符合您的偏好,然后运行它
$ sh ./move2kube_install.sh
要使用该命令,只需在包含应用程序源代码的目录中运行它即可
$ move2kube transform -s ./src
转换企业级应用程序
Move2Kube 可用于重新平台真实的的企业应用程序。 Move2Kube git 存储库中包含一个演示企业应用程序,用于演示工作流程。此演示应用程序类似于具有 CRUD 操作和多层架构的典型真实应用程序。
要试用它,请下载企业应用程序的源代码
$ curl https://move2kube.konveyor.io/scripts/download.sh \
| bash -s -- -d samples/enterprise-app/src -r move2kube-demos
企业应用程序的源代码位于 src
目录中。
首先,使用 move2kube transform
命令
$ move2kube transform -s ./src
运行命令后,查看 myproject
文件夹。那里有新的目录,包括 deploy
、scripts
和 source
。 deploy
目录包含所有 IaC 工件,例如 Kubernetes YAML 文件、Tekton 管道、Helm charts、Knative 文件、compose 文件和 OpenShift 文件。 scripts
目录包含用于构建容器镜像并将其推送到您选择的注册表的 shell 脚本。最后,source
目录包含源代码和 Dockerfile。
Move2Kube 提供的功能
Move2Kube 具有强大的 QA 引擎。转换器可以使用此引擎从用户处获取输入。转换器通过终端、Web 界面、REST API 或配置文件接收用户交互形式的输入。
例如,在演示企业应用程序中,Move2Kube QA 引擎可能会询问前端应用程序应侦听哪个端口、应使用哪个容器注册表来存储镜像,或者应使用哪个入口主机。
要在非交互模式下运行应用程序,请使用 --qa-skip
标志。此选项使 Move2Kube 使用默认答案
$ move2kube transform -s ./src --qa-skip
如果您想从配置文件中回答问题,请使用 -f
选项
$ move2kube transform -s ./src -f ./m2kconfig.yaml
用于运行的所有答案列表都捕获为 m2kconfig.yaml
文件中的配置。
自定义功能
Move2Kube 包含多个可立即使用的转换器,并且允许用户编写新的转换器。Move2Kube 公开了所有内部转换器的功能,以便用于编写自定义转换器。这些功能包括 QA 引擎、由 Golang 模板支持的广泛模板化和隔离。自定义转换器的行为与内置转换器完全相同。这两种类型可以链接在一起以实现端到端转换。
Move2Kube 生成的工件可以自定义,以符合组织最佳实践和策略。您可以使用 -c
或 --customization
选项指导 Move2Kube 工具进行自定义。
您可以使用三种不同的方法创建自定义
- 配置内置转换器:配置内置转换器以表现不同。例如,您可以修改参数化转换器以根据组织的需求参数化不同的值。
- 基于 Starlark 的转换器:使用类似 Python 的语言 Starlark 编写完整的转换器。例如,您可以使用基于 Starlark 的转换器向 Kubernetes YAML 文件添加自定义注释。
- 可执行转换器:使用您选择的语言编写完整的转换器,并允许 Move2Kube 与其他转换器一起执行它。例如,生成自定义 Helm charts 以在特定位置添加自定义文件和目录。
参数化和自定义功能
Move2Kube 允许用户在目标平台工件(例如 Helm charts)中参数化自定义字段。例如,参数化 Helm chart 中的副本数
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
move2kube.konveyor.io/service.expose: "true"
creationTimestamp: null
labels:
move2kube.konveyor.io/service: orders
name: orders
spec:
progressDeadlineSeconds: 600
replicas: {{ index .Values "common" "replicas" }}
Move2Kube 还允许您自定义输出工件。例如,向 Ingress YAML 文件添加自定义注释
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: haproxy
creationTimestamp: null
labels:
move2kube.konveyor.io/service: myproject
name: myproject
Move2Kube 案例研究
Mov2Kube 已在行业和开源社区中得到广泛采用。以下是一些案例研究,其中使用 Move2Kube 进行重新平台已显示出比手动工作显着改进。
- InsApp
- 语言栈:Java (springboot)、Angular JS UI
- 源平台:Docker Swarm
- 服务数量:100
- 手动工作:56 天
- Move2Kube 工作:6 天
- 内置转换器调用:6
- 外部转换器数量:0
- AA 案例研究
- 语言栈:Java (springboot)、Angular JS UI
- 源平台:Cloud-foundary
- 服务数量:3
- 手动工作:2 天
- Move2Kube 工作:15 分钟
- 内置转换器调用:14
- 外部转换器数量:0
- CP 案例研究
- 语言栈:Python
- 源平台:ECS Fargate
- 服务数量:7
- 手动工作:12 天
- Move2Kube 工作:1 天
- 内置转换器调用:13
- 外部转换器数量:0
- MFA 案例研究
- 语言栈:.NET Silverlight UI
- 源平台:裸机/VM
- 服务数量:4
- 手动工作:9 天
- Move2Kube 工作:5 小时
- 内置转换器调用:14
- 外部转换器数量:1(自定义依赖项)
- TMP 案例研究
- 语言栈:Java (springboot)
- 源平台:Cloud-foundary
- 服务数量:24
- 手动工作:25 天
- Move2Kube 工作:2.25 天
- 内置转换器调用:15
- 外部转换器数量:1(自定义目录)
数据来源:Seshadri, Padmanabha V., Harikrishnan Balagopal, Akash Nayak, Ashok Pon Kumar, 和 Pablo Loyola。“Konveyor Move2Kube:自动化应用程序重新平台框架。” 在 2022 年 IEEE 第 15 届云计算国际会议 (CLOUD),第 115-124 页。IEEE,2022 年。
了解更多关于 Konveyor Move2Kube 的信息
访问 Move2Kube 网站,了解更多关于使用 Konveyor Move2Kube 进行重新平台的信息。
评论已关闭。