如何将现有的应用迁移到Choerodon猪齿鱼(下)

Choerodon猪齿鱼

企业级数字化服务平台

本文档将介绍如何将现有的应用迁移到Choerodon猪齿鱼平台。主要分为以下几个部分:

应用环境搭建

数据库迁移

应用迁移

使用Choerodon猪齿鱼

下面将以资产云平台迁移到Choerodon猪齿鱼为例,详细地介绍如何将一个一般应用迁移到Choerodon中,并使用Choerodon作为开发、发布和部署的支撑平台。

注:本手册使用的Choerodon猪齿鱼版本是0.9版本。

另外,在根据本文档执行迁移之前,请务必学习Docker、Kubernetes、Helm、Gitlab-CI等知识,尽量熟练掌握。

应用系统环境搭建

Choerodon猪齿鱼平台是一个PaaS平台,其本身不提供应用系统的运行环境,用户需要自主安装Kubernetes集群,一般来说一个应用系统需要有开发环境、测试环境和正式环境(如下图所示),每一个环境都是一个独立的Kubernetes集群。当然用户也可以根据具体的需求来调整,例如开发环境和测试环境共用一套Kubernetes集群。

所以,利用Choerodon猪齿鱼PaaS能力的第一项任务就是搭建应用系统的运行环境。

准备服务器

Choerodon猪齿鱼支持本地化部署,也支持公用云部署。Kubernetes集群的硬件要求与应用系统的要求一致,当然考虑到应用系统已经完全容器化,所以用户可以根据自身需求动态定制Kubernetes集群的规模(使用公有云可以非常方便的做到这一点)。

以下表格是一个最低配置要求。

另外,服务器网络需能连接外网,能够与Choerodon猪齿鱼系统连接。还有,操作系统要求是Centos 7.2及以上版本。

安装Kubernetes集群

▌安装Kubernetes集群

Kubernetes集群的安装采用标准安装方式即可,Choerodon猪齿鱼整理了详细方便的Kubernetes安装文档,可供参考。其中一共提供三种安装方式,即简化模式、测试环境模式和正式环境模式,用户可以根据自身需求选择。

简化模式

简化模式指的是在本地模拟安装,并非在服务器上进行部署。在服务器上部署请查阅测试环境模式或正式环境模式。

▌测试环境模式

测试环境模式指的是在私有云或非生产级集群中部署,与正式环境模式的区别在于部署网络时使用的网络模式。

正式环境模式

正式环境模式是指在公有云或生产级环境的部署。

1.Choerodon猪齿鱼整理了详细方便的Kubernetes安装文档【http://t.cn/EvyjNyp】。

2.在安装时,请详细阅读安装文档前部分,其中涉及到前置要求与约定、防火墙及端口检测、同步服务器时区和同步服务器时间等

数据库迁移

如果原有环境没有数据,可以忽略本节。

如果新的集群能够连通你原有数据库,则你可以选择使用原有的数据库连接信息而无需对数据库作任何处理。如果不能连通原有数据库,考虑备份数据库配置、数据等关键数据。

具体操作如下:

1.确定需要备份的数据,如配置,数据等,具体内存请根据实际数据库进行调整。

2.部署新数据库到新集群中。建议使用helm部署,具体操作可以参照mysql部署。

3.使用数据库自带工具恢复数据到新数据库。

4.检查数据库是否正常运行。

应用迁移

应用迁移主要是将应用系统的代码迁移到Choerodon猪齿鱼中,并通过Choerodon猪齿鱼的开发流水线、部署流水线等进行应用系统的开发和部署等工作。应用迁移主要包括Choerodon猪齿鱼系统的创建项目、创建应用、改造原代码库、将原代码库迁移到Choerodon、生成新的应用版本、创建应用系统环境、部署版本、创建网络、创建域名和测试访问等步骤。请用户按照此步骤顺序进行。

如果是SaaS版本的用户需要先申请开通组织。

创建项目

项目是最小粒度的管理层次。在组织下创建项目,则创建的项目属于这个组织。

关于Choerodon猪齿鱼中项目的详细信息,以及相关操作等可以参考项目管理。

1.使用“组织管理员”角色登录系统

2.点击组织,例如“汉得研发”,进入到组织层的管理菜单

3.在组织层的管理菜单中,点击:“汉得研发” -> 左上角的菜单 -> “组织设置” -> “项目管理”。进入到项目管理与创建功能界面。

4.在“项目管理”界面,单击“创建项目”,在弹出的窗口中填写项目编码、项目名称。

例如,

项目编码:hand-rdc-halm

项目名称:汉得资产云平台

5.点击“创建”,即可创建完成。项目创建完成之后,用户就可以使用Choerodon猪齿鱼的系统功能,例如知识管理、敏捷管理、开发流水线、测试管理、部署流水线等。

创建应用

应用是满足用户某些需求的程序代码的集合,一个应用可以是一个单体应用,也可以是微服务系统的一个服务。服务端相关应用,例如Java、Python、C/C++/C#、Go、.NET等应用,以及前端相关应用,例如ReactJs、VueJs、AngularJs等等,理论上讲没有什么限制。

关于如何创建应用,以及相关操作和信息等,可以参考Choerodon官网的应用管理。

1. 切换到项目层,例如“汉得资产云平台”。

2. 在组织层的管理菜单中,点击:“汉得资产云平台” -> 左上角的菜单 -> “应用管理” -> “应用”,进入到应用创建功能界面。

3. 在创建应用的弹框中填写应用编码、应用名称和选择“应用模板”。

例如,

编码:halm-dev

名称:资产云应用

选择应用模板:MicroService

关于Choerodon的应用模板,可以参考应用模板。如果是迁移原库的代码,则随便选择一个即可。

4.创建完成应用之后,Choerodon会在Gitlab中创建先关的代码库。

例如:https://code.choerodon.com.cn/hand-rdc-halm/halm-dev

注意:强烈建议不要直接在Gitlab中操作代码库,Choerodon已经封装了对Gitlab库的增删改查等操作,例如创建库、创建分支、删除分支、合并代码等,所以这些操作尽量在Choerodon上进行操作。

应用容器化配置

Choerodon猪齿鱼秉承云原生的理念,基于平台的应用需要进行容器化改造才能够使用Choerodon进行开发和部署。在本节中将给大家介绍Choerodon容器化的一些概念、如何构建应用的基础镜像,以及为原代码库增加相关的配置使其满足Choerodon容器化要求。

重要:应用的容器化配置是整个迁移过程中最难的部分,在此需要熟悉、掌握Kubernetes、Helm等。

Choerodon猪齿鱼应用容器化概念

在Choerodon猪齿鱼中,使用Helm管理Kubernetes包等,Helm之于Kubernetes好比yum之于RHEL,或者apt-get之于Ubuntu。Helm使用Charts管理应用,Charts就好像RPM一样,里面描述了应用及其依赖关系。

所以,在Choerodon的标准应用代码结构中一定要包含charts文件夹,如下截图,这是一个后端项目的标准结构。

templates为模板文件,将模板文件渲染成实际文件,然后发送给 Kubernetes。

values.yaml为模板的预定义变量。

Chart.yaml包含 chart 的版本信息说明,您可以从模板中访问它。

deployment.yaml:创建 Kubernetes 部署的基本清单。

service.yaml:为您的部署创建服务端点的基本清单。

_helpers.tpl:放置模板助手的地方,您可以在整个 chart 中重复使用。

构建应用基础镜像

什么是应用基础镜像?先来看一张图,一般在应用基础镜像中预先安装了工具类、依赖包、系统基础一致性设置等应用程序构建、测试、运行等相关的基础依赖工具和系统配置。

资产云应用为PHP项目,那么应用基础镜像中就应该为PHP运行环境,首先去DockerHub上搜索是否有官方提供的公共镜像,可以对官方提供的公共镜像做进一步定制,生成需要的镜像,也可以从一个基础的只有系统的镜像进行定制。

1. 编写Dockerfile定制基础镜像时,尽量将镜像大小往小的做,镜像层数往少的写,仅添加应用运行时必须的相关组件,不要添加不必要的东西进入。在项目根目录下新建名为Dockerfile.base文件,在文件中写入Dockerfile定义的信息,例如:

3. 将构建好的镜像推送到镜像仓库中:

在原来代码库中增加Dockerfile、和Helm Chart

Dockerfile

在有应用基础镜像的基础上编写应用的Dockerfile那就很容易了,只需要将程序放入基础镜像特定的目录,设置好镜像运行前置处理和启动命令即可。

本事例中,应用运行时需链接数据库,但数据库相关信息是运行时才会知道的,那么解决方式是将这些信息配置为环境变量,镜像运行时从环境变量中获取这些信息并替换到对应的配置文件中去。

第一步:修改配置文件并编写启动脚本

在项目根目录下新建auto_devops文件夹,将配置文件拷贝至该文件夹下,下面为配置文件中数据库配置片段,将会改变的值全部使用大写的字母进行替换,替换时需保证在此文件中唯一。

然后在auto_devops文件夹新建docker-entrypoint.sh文件编写启动脚本,这个脚本将替换配置文件中大写的那些变量名。

第二步:编写应用Dockerfile

在项目根目录下新建名为Dockerfile的文件

Helm Chart

在编写Helm Chart之前你需要了解Kubernetes中的对象及其概念,本事例中运行应用只需定义一个deployment对象即可。

第一步:创建目录

在项目根目录下创建如下目录结构,首先创建一个名为chart的文件夹,再创建一个与应用名相同的文件夹,本事例为Helm Chart,在halm-dev文件夹中再创建一个templates目录。

第二步:编写_helpers.tpl文件

templates文件夹下将一些公共的lable或值定义到_helpers.tpl文件中:

第三步:编写deployment.yml文件

templates文件夹下创建一个名为deployment.yml的文件,内容如下:

第四步:编写Chart.yaml文件

halm-dev文件夹中编写Chart.yaml文件,这个文件中写明应用的的相关信息。

第五步:编写文件

在halm-dev文件夹中编写values.yaml文件,这个文件中编写templates文件夹中deployment.yml文件会用到的变量及默认值。

更多如何charts中详细的讲解,可以参考Choerodon官网文档 从yaml到helm。

CI持续集成配置

在上节“应用容器化配置”中,有提到Choerodon标准的应用源代码结构中必须包含charts文件件。同样,Choerodon使用Gitlab-CI作为CI工具,所以需要在应用源代码中加上.gitlab-ci.yml文件。

在CI中主要的工作就是进行镜像构建并且生成Chart包,最后将Chart包上传至Choerodon,与Choerodon进行集成。

在项目根目录下新建.gitlab-ci.yml文件,粘贴以下内容:

更多如何配置符合Choerodon标准和要求的.gitlab-ci.yml文件,请参考Choerodon官网持续集成

将原来代码库替换到Choerodon代码库

经过了“应用容器化配置”和“CI持续集成配置”两步之后,将得到一个包含了charts和.gitlab-ci.yml文件的新的代码库(charts文件夹和.gitlab-ci.yml文件一定是放在代码库的根目录),现在就将代码库同步到Choerodon对应的代码库,替换生成的标准代码库。

Git相关的命令如下:

生成新的版本

当在上一步“将原来代码库替换到Choerodon代码库”中提交代码到Choerodon的远程新库的时候,Choerodon会自动生成一个master分支上的开发版本,即“2018.8.27-234043-master”,这个版本是可以部署运行的,当然,往往生成的第一个版本会由于各种BUG等,需要经过反复地调试才可以。

可以进入到Choerodon系统中查看生成的版本,系统路径:“汉得研发”(组织)->“”->应用管理->应用版本。如下图所示。

创建一个环境

有了可部署的版本之后,就可以把此版本部署到环境中去了。在步骤“应用系统环境搭建”中已经安装好了应用系统运行的Kubernetes集群环境,并且在“数据库迁移”步骤中已经安装部署好数据库。

1. 进入到的Choerodon猪齿鱼创建环境页面,系统路径:“汉得研发”(组织)->“”->部署流水线->环境流水线

2. 单击“创建环境”按钮,在弹出框中输入环境编码、环境名称和环境描述。

例如,

环境编码:halm-dev

环境名称:开发环境

环境描述:开发环境

3. 保存时,系统会跳出来另一个对话框,如下图,需要将这段命令在步骤“应用系统环境搭建”中创建的Kubernetes环境中运行,以安装Choerodon Agent。这一步是必须要执行的,关于Choerodon Agent可以参考官网 Choerodon Agent。

4. 命令是具体应用、具体环境而不同的,所以,以下是笔者的环境生产的命令,请不要复制执行。

5. 如果在Kubernetes中执行成功,则可以看到“开发环境”显示“运行中”,否则就是不成功。

部署新生成的版本

可部署版本就绪,环境就绪,现在就还要把可部署的版本部署到环境中。

1.进入到的Choerodon猪齿鱼应用部署页面,系统路径:“汉得研发”(组织)->“”->部署流水线->应用部署

2.选择应用及版本。

例如,

选择应用:资产云应用(halm-dev)

选择版本:2018.8.27-234043-master

3.选择环境及修改配置信息。

例如,

选择环境:开发环境

还有,下面的配置信息可以根据自身需求修改。

4.选择部署模式。

例如,

选择部署模式:新建实例

对于第一次部署,需要选择“新建实例”。

5.确认信息及部署。

6.最后,确认检查好信息之后,部署即可。可以在“实例”界面查看部署的情况。最终部署的实例名称为:“halm-dev-9fc8”。

创建网络

部署完成应用之后,还不能够被外部访问,需要创建网络和域名。现在先创建网络。

1. 进入到Choerodon猪齿鱼网络页面,系统路径:“汉得研发”(组织)->“”->部署流水线->网络

2.单击“创建网络”,弹出创建网络界面。填写相关的字段信息。

例如,

环境:选择“开发环境”。

目标对象:选择“选择实例”。

应用名称:选择“资产云应用

选择实例:选择“halm-dev-9fc8”,就是上一步部署生成的实例。

网络配置:选择“ClusterIP”

外部IP:NULL

端口:80,镜像内部应用的端口

目标端口:80,K8s中已经部署的应用对外提供服务的端口

网络名称:halm-dev-3491

创建域名

有了网络还要有域名才可以。

1. 进入到Choerodon猪齿鱼域名页面,系统路径:“汉得研发”(组织)->“”->部署流水线->域名。

2. 单击“创建域名”,在弹出页面中填写相关信息。

测试访问

创建好域名之后,使用URL:handalm.hand-china.com 访问。

Choerodon猪齿鱼学习和介绍资源汇集

迁移完毕,下面跟大家介绍一下日常开发和部署等如何使用Choerodon。本部分包含项目管理、开发、发布版本、部署等操作,其中没有具体的步骤,而是把相关的学习和介绍资源汇集在一起,方便用户查找和学习。

▌知识管理

知识管理主要是提供Wiki的功能,用户可以使用知识管理做项目的立项、需求分析、应用设计等,同时也可以用于记录Scrum的回顾会议等,总之,其可以作为项目日常文档编辑与共享的媒介

资料:

知识管理快速入门【http://t.cn/EvymE7B】

知识管理用户手册【http://t.cn/EvLBoLA】

[官网视频资料]【http://t.cn/Re8rq7S】

[知识管理视频]【http://t.cn/EvLBIWe】

敏捷管理

敏捷管理主要是提供项目管理的功能,包括需求管理(故事、用户故事地图、问题)、计划(待办事项、冲刺)、执行(活动冲刺、看板),以及项目管理涉及的数据分析,例如累计流图、燃尽图等。

资料:

敏捷管理快速入门【http://t.cn/EvymMnD】

敏捷管理用户手册【http://t.cn/EvLBbMH】

[官网视频资料]【http://t.cn/Re8rq7S】

[敏捷管理视频]【http://t.cn/EvLBwMS】

▌开发

开发对应的功能包括开发流水线、应用管理。主要作用是创建管理应用,以及开发应用的时候使用的分支模型和版本控制等。软件工程师日常开发对应的流程操作等都在此进行。

资料:

创建一个项目【http://t.cn/Evy8YxG】

创建一个Nginx应用【http://t.cn/Evy8e8P】

创建一个后端应用【http://t.cn/EvyRJ3X】

创建一个前端应用【http://t.cn/EvynQeE】

应用管理用户手册【http://t.cn/EvL1DDB】

开发流水线用户手册【http://t.cn/EvL13O2】

[官网视频资料]【http://t.cn/Re8rq7S】

[开发视频]【http://t.cn/EvLEeh3】

测试

测试管理为用户提供敏捷化的持续测试工具,包括测试用例管理、测试循环、测试分析等,可以有效地提高软件测试的效率和质量,提高测试的灵活性和可视化水平。

资料:

使用测试管理【http://t.cn/Evy8Lgk】

测试管理用户手册【http://t.cn/EvLnuBi】

[官网视频资料]【http://t.cn/Re8rq7S】

持续发布与部署

借助部署流水线,用户客户可以方便地管理各种使用Choerodon开发部署的应用服务,包括应用启停、状态监控,以及应用对应的版本控制、容器管理等,同时还包括应用涉及到的各种资源管理,例如网络、域名、数据库服务、缓存服务等。

资料:

部署流水线用户手册【http://t.cn/EvLnaMR】

[官网视频资料]【http://t.cn/Re8rq7S】

[持续交付视频]【http://t.cn/EvLEeh3】

关于Choerodon猪齿鱼

Choerodon猪齿鱼是一个开源企业服务平台,是基于Kubernetes的容器编排和管理能力,整合DevOps工具链、微服务和移动应用框架,来帮助企业实现敏捷化的应用交付和自动化的运营管理的开源平台,同时提供IoT、支付、数据、智能洞察、企业应用市场等业务组件,致力帮助企业聚焦于业务,加速数字化转型。

-▼-

大家也可以通过以下社区途径了解猪齿鱼的最新动态、产品特性,以及参与社区贡献:

官网:http://choerodon.io

Github:https://github.com/choerodon/

微信公众号:Choerodon猪齿鱼

微博公众号:Choerodon猪齿鱼

欢迎加入Choerodon猪齿鱼社区,共同为企业数字化服务打造一个开放的生态平台。

扫描下图二维码

关注Choerodon猪齿鱼的微博和微信

微博

微信

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181008G0YMD700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券