使用MTA(应用程序迁移工具包)在多个CodeReady工作区中分析Monolith Java应用程


介绍

将单一的Java应用程序转换为分布式的,云原生的微服务绝非易事,但是Red Hat的应用程序迁移工具包可帮助您理解和评估迁移路径。作为开发人员,您可以将以下功能应用于多种转换用例:

  • 规划和工作估算。
  • 确定迁移问题并提供解决方案。
  • 详细的报告。
  • 内置规则和迁移路径。
  • 规则可扩展性和自定义。
  • 源代码或应用程序存档分析。

本文将指导您为应用程序配置Red Hat的迁移工具包,以分析现有的整体Java应用程序。我们将在Red Hat CodeReady Workspaces中建立我们的开发环境。之后,我将向您展示如何使用该工具包来分析迁移问题并生成潜在的解决方案。

注意:应用程序迁移工具箱是可扩展且可自定义的基于规则的工具,可帮助简化Java应用程序迁移。该工具包具有一组全面的云和容器就绪规则,以评估Kubernetes部署的应用程序。它可以通过Red Hat Runtimes获得。

安装CodeReady工作区操作员

首先,我们将创建一个新项目并安装CodeReady Workspaces Operator。使用集群管理员凭据登录到OpenShift 4集群,然后使用控制台左侧的菜单导航到Home> Projects。点击创建项目在屏幕的右上角,然后创建一个项目。如图1所示,我将示例项目命名为che-test。

用于在OpenShift 4集群中创建新项目的对话框。

1.png

图1:在OpenShift 4集群中创建一个新项目。

导航到Operators> OperatorHub,然后codeready在搜索框中键入“ ”。选择Red Hat CodeReady Workspaces运算符,如图2所示。

OperatorHub的屏幕快照,其中CodeReady Workspaces Operator磁贴以红色概述。

2.png

图2:从OpenShift OperatorHub安装CodeReady Workspaces运算符。

选择che-test名称空间,然后单击Install,如图3所示。

在Install Operator(安装操作员)下,用于选择“ che-test”命名空间的选项以红色突出显示。

3.png

图3:选择并安装che-test名称空间。

创建一个新的CheCluster 选择che-test名称空间后,将为您提供创建新CheCluster的选项,如图4所示。

单击“ Red Hat CodeReady工作区”,打开用于创建新CheCluster的选项。

4.png

图4:创建一个新的CheCluster。

选择用于创建CheCluster的YAML视图,如图5所示,然后在服务器配置中添加以下自定义Che属性:

customCheProperties:
CHE_LIMITS_WORKSPACE_IDLE_TIMEOUT: "0"
CHE_INFRA_KUBERNETES_NAMESPACE_DEFAULT: <username>-che

这些属性允许CodeReady Workspaces服务器为任意数量的用户工作区创建名称空间。图5显示了使用来创建CheCluster的服务器配置customCheProperties。

选择YAML视图以编辑服务器配置文件。

5.png

图5:将自定义Che属性添加到服务器配置中。

CodeReady Workspaces将创建为每个用户工作区部署CodeReady Workspaces pod所需的命名空间数量。

安装工具包的IDE插件

接下来,我们将配置一个devfile来安装应用程序的IDE插件的迁移工具包。将以下开发组件添加到您的CodeReady工作区devfile.json:

{
  "alias": "mta-ide-plugin",
  "type": "chePlugin",
  "reference": "https://raw.githubusercontent.com/redhat-cop/agnosticd/development/ansible/roles/ocp4-workload-ccnrd/files/cheplugin-meta.yaml",
  "memoryLimit": "1500M"
}

注意: 我们正在配置具有多个用户的开发环境。您还可以使用devfile定义源代码,应用程序运行时以及预定义命令的列表。有关示例,请参见quarkus-quickstarts存储库。

使用Keycloak进行访问

假设您已经使用username创建了10个开发人员凭据(developer1...developer10)。每个凭证的密码与Keycloak中的用户名相同。您可以使用Keycloak API和访问令牌来创建开发者帐户:

KEYCLOAK_TOKEN=$(curl -s -d "username=<YOUR_KEYCLOAK_ADMIN_USERNAME>&password=<YOUR_KEYCLOAK_ADMIN_PASSWORD>&grant_type=password&client_id=admin-cli" \
-X POST https://keycloak-che-test.<YOUR_ROUTE_SUBDOMAIN>/auth/realms/codeready/protocol/openid-connect/token | \
jq  -r '.access_token')
curl -v -H "Authorization: Bearer ${KEYCLOAK_TOKEN}" -H "Content-Type:application/json" \
-d '{"username":"developer1","enabled":true,"emailVerified": true,"firstName": "developer1","lastName": "Developer","email": "developer1@no-reply.com", "credentials":[{"type":"password","value":"developer1","temporary":false}]}' \
-X POST "https://keycloak-che-test.<YOUR_ROUTE_SUBDOMAIN>/auth/admin/realms/codeready/users"

预热开发人员工作区

最后,让我们将devfile配置为预热每个开发人员的工作区。预热使我们避免了启动工作区的初始等待:

for i in $(eval echo "{1..10}") ; do
DEVELOPER_TOKEN=$(curl -s -d "username=developer${i}&password=developer${i}&grant_type=password&client_id=admin-cli" \
-X POST https://keycloak-che-test.<YOUR_ROUTE_SUBDOMAIN>/auth/realms/codeready/protocol/openid-connect/token | \
jq  -r '.access_token')
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' \
--header "Authorization: Bearer ${DEVELOPER_TOKEN}" -d @devfile.json \
"http://codeready-che-test.<YOUR_ROUTE_SUBDOMAIN>/api/workspace/devfile?start-after-create=true&namespace=developer1"
done

在CodeReady工作区中打开工作区

返回OpenShift开发人员控制台并导航到userXX-che项目,其中“ XX”是用户编号。例如,如图6所示,您可能会看到一个工作区pod在user1-che项目中运行。

拓扑视图中的user1-che工作空间。

6.png

图6:开发人员控制台的拓扑视图中的用户工作区。

导航到che-test开发人员控制台中的项目,然后单击URL以打开CodeReady Workspaces中的一个窗格,如图7所示。

拓扑视图显示可用的窗格。

7.png

图7:在CodeReady工作区中打开一个窗格。

登录后,您将被移至个人仪表板。单击左侧的预创建工作空间的名称,如图8所示。

箭头指向左侧菜单中的预先创建的工作区。

8.png

图8:单击预创建的用户工作空间的名称。

几秒钟后,您将移至工作区登录页面,如图9所示。

工作区登录页面包含用于打开新文件或更新设置的选项。

9.png

图9:CodeReady工作区中的工作区登录页面。

为应用程序配置迁移工具包 单击图10中标有“ MTA Explorer”的图标,然后单击加号(+)以添加用于应用程序配置的新迁移工具箱。

箭头指示MTA资源管理器图标和加号以创建新配置。

10.png

图10:为应用程序配置添加新的迁移工具包。

添加了所需的配置元素(如后--input,--source和--target server),点击运行到运行分析。工具箱的命令行界面(CLI)将在新终端中自动执行。几分钟后,您将看到分析已完成。单击Open Report 选项,如图11所示。

点击新终端窗口底部的“打开报告”。

2.png

图11:打开迁移分析报告。

接下来,您将看到查看迁移报告的选项,如图12所示。

选择选项以查看报告详细信息。 请注意,此迁移报告列出了22个故事点。

1.png

图12:查看报告详细信息。

您可能会注意到,此报告中有22个故事点。一个故事点是敏捷软件开发常用的估计来实现功能或改变所需的工作量一个抽象的指标。红帽针对应用程序的迁移工具包使用故事点来表达迁移特定应用程序结构和整个应用程序所涉及的工作。工作量将取决于要迁移的一个或多个应用程序的大小和复杂性。

您的转型之路下一步是什么? 使用针对应用程序的迁移工具包分析您的转换路径仅仅是现代化整体Java应用程序的开始。下一步,您可以使用Quarkus,Spring Boot和Node.js等云原生运行时将应用程序划分为微服务。在Red Hat Runtimes的支持下,您可以将整个整体应用程序逐步重构为一组分布式云原生微服务。


原文链接:http://codingdict.com