部署
最佳实践
文档版本 18
发布日期 2021-12-21
版权所有 © 华为技术有限公司 2021。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
目 录
1 Tomcat 应用部署... 1
1.1 创建项目...1
1.2 创建代码仓库... 1
1.3 创建构建任务... 2
1.4 创建主机组... 4
1.5 创建主机...4
1.6 创建部署任务... 6
1.7 创建流水线... 12
1.8 执行流水线... 15
2 SpringBoot 应用部署... 17
2.1 创建项目... 17
2.2 创建代码仓库...17
2.3 创建构建任务...18
2.4 创建主机组... 20
2.5 创建主机... 20
2.6 创建部署任务...22
2.7 创建流水线... 27
2.8 执行流水线... 30
3 实践--基于 haproxy 灰度发布... 32
3.1 导读... 32
3.2 实现方式一:替换 haproxy 配置文件...33
3.2.1 实现原理... 33
3.2.2 操作步骤... 33
3.3 实现方式二:修改 haproxy 配置文件内容... 36
3.3.1 实现原理... 36
3.3.2 操作步骤... 36
4 将多个软件包部署到不同目标主机... 38
5 通过代理机进行内网部署... 42
6 在 DevCloud 部署任务中创建、执行数据库脚本... 46
7 CCE 部署指导...51
7.1 导读... 51
最佳实践 目 录
7.2 制作 Docker 镜像并推送到 SWR 镜像仓... 51
8 ContainerOps 流水线创建指导... 53 9 通过 ContainerOps 部署 CCE/CCI... 57
最佳实践 目 录
1 Tomcat 应用部署
1.1 创建项目 1.2 创建代码仓库 1.3 创建构建任务 1.4 创建主机组 1.5 创建主机 1.6 创建部署任务 1.7 创建流水线 1.8 执行流水线
1.1 创建项目
步骤1 登录DevCloud首页。
步骤2 单击“新建项目”,弹出“新建项目”对话框,选择默认项目模板“Scrum”,填写 项目名称(lich-selfproject)和项目描述。
步骤3 单击“新建”,新建完成后,进入到项目“工作 > Backlog”页面。
----结束
1.2 创建代码仓库
步骤1 单击项目名称(lich-selfproject),进入项目。
步骤2 在顶部菜单栏单击“代码 > 代码托管”,进入代码托管,如下图所示。
最佳实践 1 Tomcat 应用部署
步骤3 单击“普通新建”,进入“新建代码仓库”页面,如下图所示。
步骤4 设置完所有信息,单击“确定”,仓库创建完成,如下图所示。
步骤5 单击仓库名称,可以查看仓库详情。
----结束
1.3 创建构建任务
步骤1 单击项目名称(lich-selfproject),进入项目。
最佳实践 1 Tomcat 应用部署
步骤2 在顶部菜单栏单击“构建&发布 > 编译构建”,进入编译构建,如下图所示。
步骤3 单击“新建任务”,进入“新建编译构建任务”页面,如下图所示,选择源码源和已 经创建好的源码仓库,并根据需要选择分支。
步骤4 单击“下一步”,进入“新建编译构建任务-选择构建模板”页面,选择“Maven”模 板,如下图所示。
步骤5 单击“确定”,进入“构建步骤”页面,使用默认配置即可,如下图所示。
最佳实践 1 Tomcat 应用部署
步骤6 切换到“参数设置”页面,为任务添加如下图所示参数。
步骤7 配置完所有信息,单击“新建”即完成创建。
----结束
1.4 创建主机组
步骤1 单击项目名称(lich-selfproject),进入项目。
步骤2 进入“主机组管理”页面。
步骤3 单击右上角“新建主机组”,进入新建主机组-基本信息页面。
步骤4 设置完主机组基本信息,单击“保存”,进入“主机信息”页面,可以为主机组添加 主机。
----结束
1.5 创建主机
步骤1 进入“主机组管理”页面,如下图所示。
最佳实践 1 Tomcat 应用部署
步骤2 找到目标主机组,单击主机组名称,进入“主机信息”页面,如下图所示。
步骤3 单击右上角“添加主机”,弹出“添加主机”对话框,如下图所示。
图1-1 添加主机
最佳实践 1 Tomcat 应用部署
表1-1 参数说明
参数项 说明
主机名 必选,可自定义。
IP 必选,可自定义。
操作系统 必选,可自定义,如“Linux”。
授信方式 必须,可自定义,如“密码授信”。
用户名 必选,可自定义,如“root”。
密码 必选,可自定义。
ssh 端口 必选,可自定义,如“22”。
通过 SSH 代 理
可选,如不选。
步骤4 主机参数设置完成后,单击“添加”,添加完成的主机展示在主机信息列表,确保主机 授信成功,如下图所示。
----结束
1.6 创建部署任务
背景说明
将Web应用部署在Tomcat上,通过创建部署任务,使用提供的Tomcat应用模板。
操作步骤
步骤1 单击项目名称(lich-selfproject),进入项目。
步骤2 在顶部菜单栏单击“构建&发布 > 部署”,进入部署服务,如下图所示。
最佳实践 1 Tomcat 应用部署
步骤3 单击“新建任务”,进入新建部署任务-基本信息页面,如下图所示。
表1-2 参数说明
参数项 说明
任务名称 必选,任务名称,可自定义。
所属项目 任务所属的项目,不可修改。
描述 可选,任务描述,可自定义。
步骤4 设置完基本信息,单击“下一步”。
进入“新建部署任务-选择部署模板”页面,如下图所示。
最佳实践 1 Tomcat 应用部署
步骤5 选择系统模板“Tomcat应用部署”,单击“确认”,进入“部署步骤”页面,依次配 置如下任务步骤信息。
1. 停止Tomcat服务,信息配置如下图所示。
最佳实践 1 Tomcat 应用部署
2. 安装JDK,信息配置如下图所示。
3. 安装Tomcat,信息配置如下图所示。
最佳实践 1 Tomcat 应用部署
4. 选择部署来源,信息配置如下图所示。
5. 启动Tomcat服务,信息配置如所示。
最佳实践 1 Tomcat 应用部署
6. 执行等待,信息配置如下图所示。
最佳实践 1 Tomcat 应用部署
7. URL健康测试,信息配置如下图所示。
步骤6 部署步骤配置完后,切换到“参数设置”页面,为模板任务添加需要用到的参数。
步骤7 设置完所有信息,单击“保存”。
----结束
1.7 创建流水线
步骤1 在顶部菜单栏单击“构建&发布 > 流水线”,切换到流水线服务,如下图所示。
步骤2 单击右上角“新建流水线”,按页面提示操作,直到进入“新建流水线”页面,如下 图所示。
最佳实践 1 Tomcat 应用部署
步骤3 添加部署阶段。
在“发布仓库”阶段后单击 添加新阶段,然后单击该阶段旁的 ,弹出“阶段配 置”页面,信息配置如下图所示。
图1-2 阶段配置
信息配置完成后,单击“保存”即可看到添加的阶段。
步骤4 添加阶段任务。
分别为构建阶段和部署阶段添加任务。
● 构建阶段任务
a. 单击构建阶段-任务列表下的“添加任务”,添加一条任务。
b. 单击任务旁的 ,选择“编辑任务”,弹出“任务配置”页面。
选择需要调用的任务并配置相关信息,信息配置如下图所示。
最佳实践 1 Tomcat 应用部署
图1-3 构建阶段任务配置
c. 信息配置完成后,单击“保存”。
● 部署阶段任务
a. 同构建阶段,为部署阶段的默认任务配置任务信息,各信息配置如下图所 示。
最佳实践 1 Tomcat 应用部署
图1-4 部署阶段任务配置
b. 信息配置完成后,单击“保存”即可看到添加的任务和构建任务对应的仓库 信息。
步骤5 配置流水线参数。
单击流水线的“参数”页签,可以根据需要配置参数信息。
步骤6 配置完所有信息,单击“保存”,流水线任务即创建完成。
----结束
1.8 执行流水线
步骤1 在流水线任务列表,单击目标流水线名称,进入“流水线详情”页面。
步骤2 单击“全新执行”,弹出执行对话框。
步骤3 设置完执行参数,单击“确定”,开始执行流水线。
最佳实践 1 Tomcat 应用部署
步骤4 执行完成后,可以查看任务执行结果。
● 单击任务旁的 ,可以查看仓库信息、复制仓库地址。
● 单击任务旁的 ,可以下载构建包。
● 单击任务旁的 ,可以查看日志信息。
● 单击任务旁的 ,可以单独执行任务。
----结束
最佳实践 1 Tomcat 应用部署
2 SpringBoot 应用部署
2.1 创建项目 2.2 创建代码仓库 2.3 创建构建任务 2.4 创建主机组 2.5 创建主机 2.6 创建部署任务 2.7 创建流水线 2.8 执行流水线
2.1 创建项目
步骤1 登录DevCloud首页。
步骤2 单击“新建项目”,弹出“新建项目”对话框,选择默认项目模板“Scrum”,填写 项目名称(lich-selfproject)和项目描述。
步骤3 单击“新建”,新建完成后,进入到项目“工作 > Backlog”页面。
----结束
2.2 创建代码仓库
步骤1 单击项目名称(lich-selfproject),进入项目。
步骤2 在顶部菜单栏单击“代码 > 代码托管”,进入代码托管,如下图所示。
最佳实践 2 SpringBoot 应用部署
步骤3 单击“普通新建”,进入“新建代码仓库”页面,如下图所示。
步骤4 设置完所有信息,单击“确定”,仓库创建完成,如下图所示。
步骤5 单击仓库名称,可以查看仓库详情。
----结束
2.3 创建构建任务
步骤1 单击项目名称(lich-selfproject),进入项目。
最佳实践 2 SpringBoot 应用部署
步骤2 在顶部菜单栏单击“构建&发布 > 编译构建”,进入编译构建,如下图所示。
步骤3 单击“新建任务”,进入“新建编译构建任务”页面,如下图所示,选择源码源和已 经创建好的源码仓库,并根据需要选择分支。
步骤4 单击“下一步”,进入“新建编译构建任务-选择构建模板”页面,选择“Maven”模 板,如下图所示。
步骤5 单击“确定”,进入“构建步骤”页面,使用默认配置即可,如下图所示。
最佳实践 2 SpringBoot 应用部署
步骤6 切换到“参数设置”页面,为任务添加如下图所示参数。
步骤7 配置完所有信息,单击“新建”即完成创建。
----结束
2.4 创建主机组
步骤1 单击项目名称(lich-selfproject),进入项目。
步骤2 进入“主机组管理”页面。
步骤3 单击右上角“新建主机组”,进入新建主机组-基本信息页面。
步骤4 设置完主机组基本信息,单击“保存”,进入“主机信息”页面,可以为主机组添加 主机。
----结束
2.5 创建主机
步骤1 进入“主机组管理”页面,如下图所示。
最佳实践 2 SpringBoot 应用部署
步骤2 找到目标主机组,单击主机组名称,进入“主机信息”页面,如下图所示。
步骤3 单击右上角“添加主机”,弹出“添加主机”对话框,如下图所示。
图2-1 添加主机
最佳实践 2 SpringBoot 应用部署
表2-1 参数说明
参数项 说明
主机名 必选,可自定义。
IP 必选,可自定义。
操作系统 必选,可自定义,如“Linux”。
授信方式 必须,可自定义,如“密码授信”。
用户名 必选,可自定义,如“root”。
密码 必选,可自定义。
ssh 端口 必选,可自定义,如“22”。
通过 SSH 代
理 可选,如不选。
步骤4 主机参数设置完成后,单击“添加”,添加完成的主机展示在主机信息列表,确保主机 授信成功,如下图所示。
----结束
2.6 创建部署任务
步骤1 单击项目名称(lich-selfproject),进入项目。
步骤2 在顶部菜单栏单击“构建&发布 > 部署”,进入部署服务,如下图所示。
步骤3 单击“新建任务”,选择模板任务,进入新建部署任务-基本信息页面,如下图所示。
最佳实践 2 SpringBoot 应用部署
表2-2 参数说明
参数项 说明
任务名称 必选,任务名称,可自定义。
所属项目 任务所属的项目,不可修改。
描述 可选,任务描述,可自定义。
步骤4 设置完基本信息,单击“下一步”。
进入新建部署任务-选择部署模板页面,如下图所示。
最佳实践 2 SpringBoot 应用部署
图2-2 新建部署任务-选择部署模板
步骤5 选择系统模板“SpringBoot应用部署”,单击“确认”,进入“部署步骤”页面,依 次配置如下任务步骤信息。
1. 停止SpringBoot服务,信息配置如下图所示。
2. 安装JDK,信息配置如下图所示。
最佳实践 2 SpringBoot 应用部署
3. 选择部署来源,信息配置如下图所示。
4. 启动SpringBoot服务,信息配置如下图所示。
最佳实践 2 SpringBoot 应用部署
5. 执行等待,信息配置如下图所示。
最佳实践 2 SpringBoot 应用部署
6. URL健康测试,信息配置如下图所示。
步骤6 部署步骤配置完后,切换到“参数设置”页面,为模板任务添加需要用到的参数。
步骤7 设置完所有信息,单击“保存”。
----结束
2.7 创建流水线
步骤1 在顶部菜单栏单击“构建&发布 > 流水线”,切换到流水线服务,如下图所示。
图2-3 流水线
步骤2 单击右上角“新建流水线”,进入“新建流水线”页面,如下图所示。
最佳实践 2 SpringBoot 应用部署
图2-4 新建流水线
步骤3 添加部署阶段。
在“发布仓库”阶段后单击 添加新阶段,然后单击该阶段旁的 ,弹出“阶段配 置”页面,信息配置如下图所示。
图2-5 阶段配置
信息配置完成后,单击“保存”即可看到添加的阶段。
步骤4 添加阶段任务。
分别为构建阶段和部署阶段添加任务。
● 构建阶段任务
a. 单击构建阶段-任务列表下的“添加任务”,添加一条任务。
b. 单击任务旁的 ,选择“编辑任务”,弹出“任务配置”页面。
最佳实践 2 SpringBoot 应用部署
选择需要调用的任务并配置相关信息,各信息配置如下图所示。
图2-6 构建阶段任务配置
c. 信息配置完成后,单击“保存”。
● 部署阶段任务
a. 同构建阶段,为部署阶段的默认任务配置任务信息,各信息配置如下图所 示。
最佳实践 2 SpringBoot 应用部署
图2-7 部署阶段任务配置
b. 信息配置完成后,单击“保存”即可看到添加的任务和构建任务对应的仓库 信息。
步骤5 配置流水线参数。
单击流水线的“参数”页签,可以根据需要配置参数信息。
步骤6 配置完所有信息,单击“保存”,流水线任务即创建完成。
----结束
2.8 执行流水线
步骤1 在流水线任务列表,单击目标流水线名称,进入“流水线详情”页面。
步骤2 单击“全新执行”,弹出执行对话框。
步骤3 设置完执行参数,单击“确定”,开始执行流水线。
最佳实践 2 SpringBoot 应用部署
步骤4 执行完成后,可以查看任务执行结果。
● 单击任务旁的 ,可以查看仓库信息、复制仓库地址。
● 单击任务旁的 ,可以下载构建包。
● 单击任务旁的 ,可以查看日志信息。
● 单击任务旁的 ,可以单独执行任务。
----结束
最佳实践 2 SpringBoot 应用部署
3 实践--基于 haproxy 灰度发布
3.1 导读
3.2 实现方式一:替换haproxy配置文件 3.3 实现方式二:修改haproxy配置文件内容
3.1 导读
本次实践基于Haproxy的服务名、IP进行分流,实现灰度发布,关于Haproxy的更多信 息请参考haproxy官网 。
说明
● 本文中使用HA-Proxy version 1.5.18,供其他版本参考。
● 本文提供的shell命令仅供参考,具体命令还以用户实际场景为准。
● 本文试例中的test_A、test_B分别指A边用户和B边用户。
● 本文中添加haproxy服务的主机是root用户。(若为其他用户,需添加包含haproxy目录文件 的权限)
最佳实践 3 实践--基于 haproxy 灰度发布
3.2 实现方式一:替换 haproxy 配置文件
3.2.1 实现原理
● 在本地修改好的haproxy配置文件上传到私有发布仓库中。
● 通过部署任务将发布仓库的haproxy配置文件拷贝到搭建了haproxy的机器上。
● 通过部署平滑的启动haproxy服务。
3.2.2 操作步骤
步骤1 本地修改haproxy配置文件。
● 本地新建haproxy_A.cfg配置文件内容:
#server test_A 10.10.10.10:8080 server test_B 10.10.10.11:8080
haproxy_A.cfg配置文件表示:下线test_A边流量
● 本地新建haproxy_AB.cfg配置文件内容:
server test_A 10.10.10.10:8080
#server test_B 10.10.10.11:8080
haproxy_AB.cfg配置文件表示:上线test_A边流量同时下线test_B边流量
● 本地新建haproxy_B.cfg配置文件内容:
server test_A 10.10.10.10:8080 server test_B 10.10.10.11:8080
haproxy_B.cfg配置文件表示:上线test_B边流量
最佳实践 3 实践--基于 haproxy 灰度发布
步骤2 将修改后的haproxy配置文件上传至发布仓库中.
1. 登录首页,进入目标项目,单击顶部导航栏“发布”,进入发布详情页面。
2. 点击“上传”按钮,将本地修改好的的配置文件上传到发布中。
步骤3 新建主机组
● 新建主机组 > 添加主机,将部署了haproxy服务的这台机器添加到新建的主机组 中。(如何创建主机组 )
步骤4 新建部署任务
● 新建任务,添加“选择部署来源”和“执行shell命令”部署步骤。(如何创建部 署任务 )
1. 配置“选择部署来源”任务步骤:
– 主机组:选择部署haproxy服务的主机组。
– 选择软件包:选择发布仓库中的haproxy配置文件。(下线A,上线A 下线 B,再上线B)
– 下载到主机的部署目录:填写haproxy.cfg配置文件所在的目录。
最佳实践 3 实践--基于 haproxy 灰度发布
2. 配置“执行shell命令”任务步骤。
参考命令:
#!/bin/sh
#haproxy_A.cfg为发布仓库的配置文件名称,用户根据实际情况填写 Haproxy_cfg_Name="haproxy_A.cfg"
#/etc/haproxy/为用户安装haproxy服务机器上的haproxy.cfg配置文件的路径,用户根据实际情况填写 Haproxy_cfg_Path="/etc/haproxy"
#serviceName为切流量的服务名称 serviceName="haproxy"
port="1234" #haproxy的监听端口 now_time=`date +%Y%m%d%H%M%S`
cp $Haproxy_cfg_Path/haproxy.cfg $Haproxy_cfg_Path/haproxy.cfg.$now_time /usr/sbin/$serviceName -c -q -f $Haproxy_cfg_Path/$Haproxy_cfg_Name checkflag=$?
if [ "$checkflag" -eq 0 ] then
mv $Haproxy_cfg_Path/$Haproxy_cfg_Name $Haproxy_cfg_Path/haproxy.cfg sudo iptables -I INPUT -p tcp --dport $port --syn -j DROP
sleep 1
service haproxy reload #(参考命令)若已将haproxy注册成服务的形式
# 参考命令(没有注册成服务):/usr/sbin/$serviceName -D -f /etc/$serviceName/$serviceName.cfg - p /var/run/$serviceName.pid -sf $(cat /var/run/$serviceName.pid)
最佳实践 3 实践--基于 haproxy 灰度发布
sudo iptables -D INPUT -p tcp --dport $port --syn -j DROP else
echo "$Haproxy_cfg_Name 配置文件路径或内容格式错误"
return 1 fi
----结束
3.3 实现方式二:修改 haproxy 配置文件内容
3.3.1 实现原理
● 通过部署任务中的“执行shell命令”步骤修改用户haproxy机器上的配置文件。
● 通过部署任务中的“执行shell命令”步骤平滑的重启haproxy服务。
3.3.2 操作步骤
步骤1 新建主机组
● 新建主机组 > 添加主机,将部署了haproxy服务的这台机器添加到新建的主机组 中。(如何创建主机组 )
步骤2 编辑部署任务
1. 新建任务,添加两个“执行shell命令”部署步骤。(如何创建部署任务 )
2. 配置第一个“执行shell命令”任务步骤:修改用户的haproxy.cfg配置文件。
#!/bin/sh
#/etc/haproxy/为用户安装haproxy服务机器上的haproxy.cfg配置文件的路径,用户根据实际情况填写 Haproxy_cfg_Path="/etc/haproxy"
online_servername="" #上线主机名 offline_servername="" #下线主机名 port="1234" #haproxy的监听端口 now_time=`date +%Y%m%d%H%M%S`
cp $Haproxy_cfg_Path/haproxy.cfg $Haproxy_cfg_Path/haproxy.cfg.$now_time
[[ "$up_servername" != '' ]] && sed -i "/server $up_servername/s/#//g" $Haproxy_cfg_Path/
最佳实践 3 实践--基于 haproxy 灰度发布
haproxy.cfg
[[ "$down_servername" != '' ]] && sed -i "s/server $down_servername/#&/g" $Haproxy_cfg_Path/
haproxy.cfg
[[ "$up_servername" == '' && "$down_servername" == '' ]] && echo "请输入服务名" && exit echo "配置文件修改成功"
3. 配置第二个“执行shell命令”任务步骤:启动haproxy服务。
#!/bin/sh
#/etc/haproxy/为用户安装haproxy服务机器上的haproxy.cfg配置文件的路径,用户根据实际情况填写 Haproxy_cfg_Path="/etc/haproxy"
port="1234" #haproxy的监听端口
#serviceName为切流量的服务名称 serviceName="haproxy"
/usr/sbin/$serviceName -c -q -f $Haproxy_cfg_Path/$serviceName.cfg checkflag=$?
if [ "$checkflag" -eq 0 ]
then sudo iptables -I INPUT -p tcp --dport $port --syn -j DROP sleep 1
service haproxy reload #haproxy参考命令
# 或参考命令:/usr/sbin/$serviceName -D -f /etc/$serviceName/$serviceName.cfg -p /var/run/
$serviceName.pid -sf $(cat /var/run/$serviceName.pid) sudo iptables -D INPUT -p tcp --dport $port --syn -j DROP echo "切流量成功"
else echo "$serviceName.cfg 配置文件路径、或内容格式错误"
return 1 fi
----结束
最佳实践 3 实践--基于 haproxy 灰度发布
4 将多个软件包部署到不同目标主机
场景
一个代码仓库可能有多个模块,需要针对多个模块进行部署。
实现原理
● 可以为每个模块创建一个构建任务,构建出多个模块的jar包部署到目标机器上。
● 也可以创建一个构建任务,构建出多个模块的jar包,将每个jar包部署到目标机器 上。
操作步骤
以下是将每个jar包通过“部署服务”部署到用户目标机器的详细步骤:
步骤1 进入部署服务详情页面,点击“新建任务”按页面提示填写任务名称等,点击“下一 步”进入选择模板页面。
最佳实践 4 将多个软件包部署到不同目标主机
步骤2 在任务模板页面,点击“不使用模板、直接创建”,进入选择任务步骤页面。
步骤3 添加步骤,点击“所有步骤”中的“选择部署来源”。
步骤4 点击“参数设置”,添加动态参数。(静态参数一栏去掉√)
最佳实践 4 将多个软件包部署到不同目标主机
表4-1 参数说明
参数名 参数描述
hostGroup 部署的主机组
releaseVersion 模块的Jar包的发布版本号 Moudle_Name 模块的jar包名称
Path 模块的Jar包的部署路径
步骤5 配置“选择部署来源”步骤中的配置信息。
步骤6 编辑完部署任务后,点击“执行”,根据参数值的不同,分别部署不同版本的软件 包。
最佳实践 4 将多个软件包部署到不同目标主机
即可实现将对应模块的jar包部署到目标机。
----结束
最佳实践 4 将多个软件包部署到不同目标主机
5 通过代理机进行内网部署
应用场景
对于拥有公网IP、弹性公网IP的企业,DevCloud-部署服务支持在企业私有云或自建机 房(不能访问公网)上部署应用。
前置准备
需要一台能访问公网的机器作为部署的代理机,其他不能访问公网的机器通过这台代 理机完成应用的部署。
操作步骤
步骤1 创建主机组:
1. 登录首页,进入目标项目。
2. 单击顶部菜单栏“设置 > 通用设置”,进入主机组管理页面。
3. 单击“新建主机组”,进入“新建主机组 > 基本信息”页面。
4. hostGroup主机组创建完成后,点击“添加主机”按钮,在主机组中添加代理机和 主机。
最佳实践 5 通过代理机进行内网部署
步骤2 在主机组中添加代理机:
1. 在hostGroup主机组中添加代理机,点击选择代理机,根据提示填写信息。
2. 连通性验证通过表示代理机添加成功
步骤3 在主机组中添加部署主机:
1. 在hostGroup主机组中添加部署目标主机。
最佳实践 5 通过代理机进行内网部署
2. 连通性验证通过表示部署主机添加成功。
步骤4 部署主机,通过代理机访问Internet,详细点击链接了解。
云主机通过代理机访问Internet 非云主机通过代理机访问Internet
步骤5 创建部署任务(将已经编译构建好的软件包,从发布仓库部署到用户的目标主机):
● 添加“选择部署来源”部署步骤:
a. 选择已经创建好的hostGroup主机组。
b. 选择从发布仓库已经编译构建好的软件包。
c. 填写该软件包到目标机的部署路径。
最佳实践 5 通过代理机进行内网部署
步骤6 执行部署任务:
编辑完部署任务后,点击执行按钮,部署任务执行成功。
----结束
最佳实践 5 通过代理机进行内网部署
6 在 DevCloud 部署任务中创建、执行数据库 脚本
应用场景
用户在主机上部署服务时,可能存在需要执行数据库脚本的操作,本文档提供一种使 用部署任务执行数据库脚本的方法。
实现原理
把用户自定义的shell脚本(集成数据库命令),从发布仓/代码仓部署到目标主机,并 在目标主机执行shell脚本。
准备工作
● 用户需要提前准备shell脚本,并上传到发布仓/代码仓。
● 用户需要提前准备一台可以连接数据库的主机,并且安装对应数据库客户端。
操作步骤
步骤1 进入部署服务首页,点击“新建任务”,填写任务名称等,单击“下一步”,进模板 选择页面。
最佳实践 6 在 DevCloud 部署任务中创建、执行数据库脚本
步骤2 在模板选择页面,单击“不使用模板、直接创建”,可进入添加任务步骤页面。
最佳实践 6 在 DevCloud 部署任务中创建、执行数据库脚本
步骤3 添加步骤,点击“所有步骤”中的“选择部署来源”。
● 任务配置如下图:
最佳实践 6 在 DevCloud 部署任务中创建、执行数据库脚本
步骤4 添加步骤,点击“所有步骤”中的“执行shell脚本”。
● 任务配置如下图:
最佳实践 6 在 DevCloud 部署任务中创建、执行数据库脚本
须知
● “下载shell脚本”和“执行shell脚本”需要在同一主机上完成。
● 执行方式选择“普通执行”
● Shell脚本路径填写“下载shell脚本”步骤中的下载目录。
----结束
Shell 脚本样例及说明
${db_connect_command} <<EOF
${test_sql};
`exit`;
EOF
其中:${ db_connect_command } 代表数据库连接命令
${test_sql} 代表数据库语句
最佳实践 6 在 DevCloud 部署任务中创建、执行数据库脚本
7 CCE 部署指导
7.1 导读
7.2 制作Docker镜像并推送到SWR镜像仓
7.1 导读
须知
此功能目前仅对2020年7月21日前使用过此功能的账号开放。
应用场景
在软件开发平台DevCloud上,将容器应用部署到用户CCE服务的专属kubernetes集群 上。
实现过程
1.
7.2 制作Docker镜像并推送到SWR镜像仓。
2.
Kubernetes部署。
7.2 制作 Docker 镜像并推送到 SWR 镜像仓
须知
此功能目前仅对2020年7月21日前使用过此功能的账号开放。
前置准备
制作Docker镜像需在代码托管服务新建代码仓库,上传制作好的“Dockerfile”文件。
最佳实践 7 CCE 部署指导
说明
● 代码仓库管理,需了解更多,请参考代码托管 。
● Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新 的镜像,它们简化了从头到尾的流程并极大的简化了部署工作。
● Dockerfile从FROM命令开始,紧接着跟随各种方法,命令和参数。
● Dockerfile制作请参见官网:http://www.docker.org.cn。
操作步骤
创建编译构建任务 创建编译构建任务,选择“制作镜像并推送到SWR仓库”构建步 骤,配置构建任务参数。
说明
详细步骤请参考将镜像推送到SWR镜像仓 。
最佳实践 7 CCE 部署指导
8 ContainerOps 流水线创建指导
须知
此功能目前仅对2020年7月21日前使用过此功能的账号开放。
1. 登录swr控制台 ,点击“持续交付”按钮,进入一站式容器持续交付
ContainerOps服务 。
2. ContainerOps为计费服务,目前只对在用客户开通(续费需要提工单申请)
3. 创建流水线组:为方便管理,ContainerOps支持创建流水线组完成对流水线的管 理,默认创建名为default的流水线组。
最佳实践 8 ContainerOps 流水线创建指导
4. 创建流水线:对于CCE/CCI部署,推荐使用自定义方式创建ContainerOps流水 线,如下图所示,点击“自定义模板创建”按钮可以进入流水线编辑界面。
5. 点击“自定义模板创建”按钮进入流水线编辑界面后,按如下步骤操作 a. 输入ContainerOps流水线名称;
b. 选择ContainerOps流水线所在的流水线组;
c. 在拓扑图中通过点击“+”按钮,支持在ContainerOps流水线添加多个步 骤,如下图所示;
d. 上述拓扑图中选定要编辑的步骤后,在阶段类型中选择“部署>正式发布”
(选择后,“阶段配置”将加载出内容);
最佳实践 8 ContainerOps 流水线创建指导
e. 在“阶段配置>输入资源”中选择要部署的镜像文件;
f. 根据实际需求,选择CCE、CCI两种部署类型。创建方式支持yaml高级创建方 式,支持用户自定义编写工作负载的yaml文件实现高级部署;
g. ContainerOps也支持对工作负载的高级设置,根据实际需求配置, 如下图所 示,配置完点击“提交”按钮;
最佳实践 8 ContainerOps 流水线创建指导
h. 当看到如下效果 ,说明ContainerOps流水线创建成功。
最佳实践 8 ContainerOps 流水线创建指导
9 通过 ContainerOps 部署 CCE/CCI
须知
此功能目前仅对2020年7月21日前使用过此功能的账号开放。
背景说明
● 该实践将介绍通过关联ContainerOps流水线,将容器应用部署到CCE/CCI。
● ContainerOps功能及使用指南请参考ContainerOps产品介绍 。
前置准备
1. 创建集群,请参考如何快速创建集群 。 2. 创建命名空间,请参考如何创建命名空间 。
3. 推送镜像到镜像仓库,请参考制作Docker镜像并推送到swr镜像仓。
操作步骤简述
1. 在ContainerOps中创建含有工作负载的ContainerOps流水线,详见创建
ContainerOps流水线指导手册;
2. ContainerOps流水线创建完成后,在Devcloud部署服务中新建“通过 ContainerOps部署CCE/CCI”任务关联创建好的ContainerOps流水线;
3. 工作负载的编辑(容器配置、访问方式更改等)需要在ContainerOps服务中操 作;
4. DevCloud和ContainerOps支持步骤参数化,“通过ContainerOps部署CCE/
CCI”步骤支持将ContainerOps流水线中定义好的变量映射到DevCloud中,通过 动态替换实现DevOps高效部署,操作指南详见请参见:
a.
Devcloud创建部署任务;
b.
ContainerOps参数化部署;
c.
Devcloud参数化部署ContainerOps;
d.
DevCloud流水线对接部署任务。
最佳实践 9 通过 ContainerOps 部署 CCE/CCI
Devcloud 创建部署任务
1. 登录首页,搜索目标项目,单击项目名称进入项目。
2. 单击顶部菜单“构建&发布 > 部署”进入项目部署。
3. 单击“新建任务”按钮,进入“新建部署任务-基本信息”页面,如下图所示。
4. 设置完基本信息,单击“下一步”,进入选择部署模板页面,选择“不使用模 板,直接创建”进入步骤选择界面。如下图所示。
5. 在添加步骤界面选择“容器类>通过ContainerOps部署CCE/CCI”,进入任务编辑 界面,如下图所示。
最佳实践 9 通过 ContainerOps 部署 CCE/CCI
6. 进入“通过ContainerOps部署CCE/CCI”功能,点击ContainerOps流水线右边的
,选择已创建的ContainerOps流水线。如下图所示。
7. 选定要执行的流水线后,点击下方的“保存并执行”按钮,启动ContainerOps流 水线的运行,实现工作负载的部署。
最佳实践 9 通过 ContainerOps 部署 CCE/CCI
8. 执行完成后,点击“实例列表>查看实例详情”查看可以工作负载实例列表启动事 件以及服务列表。如下图所示。
ContainerOps 参数化部署
● 为方便用户在DevCloud中动态修改工作负载的属性配置,DevCloud和 ContainerOps流水线支持参数化机制。
● 下面以镜像名称、镜像版本作为参数化实践的演示示例。
1. 编辑ContainerOps流水线,在“全局变量”中新增名为“imageName”和
“imageVersion”的变量,并赋予初始值。
最佳实践 9 通过 ContainerOps 部署 CCE/CCI
2. 在拓扑图中选中需要编辑的步骤,在下方的“阶段配置”中采用“${变量名}”的 方式进行变量替换。如下图所示。
3. 创建方式采用yaml方式,可以替换工作负载的属性值,增大变量替换的灵活性,
最大可能的实现工作负载属性的参数化。如下图所示。
最佳实践 9 通过 ContainerOps 部署 CCE/CCI
4. 在DevCloud部署任务中选择“通过ContainerOps部署CCE/CCI”功能,选择已设 置了全局变量的ContainerOps流水线后,ContainerOps流水线变量映射到
“ContainerOps全局变量”中,用户在执行DevCloud部署任务时对变量重新赋值
(蓝框标记为重新赋予的变量值),如下图所示。
5. 工作负载的镜像和CPU申请值都已被修改,如图21所示。
最佳实践 9 通过 ContainerOps 部署 CCE/CCI
Devcloud 参数化部署 ContainerOps
1. 部署服务参数设置:在文本框左上角单击 切换到列表形式,增加需 要替换的参数,并赋予默认值。
2. 在部署任务中使用“${参数名}”的方式引用设置好的参数,如下图所示。
DevCloud 流水线对接部署任务
1. 将参数(例如:下图所示的image、version)设为非静态参数,即不勾选“静态 参数”属性。
2. 部署任务对接DevCloud流水线。在流水线中添加任务的类型选择“部署”,选定 关联的部署任务,该任务中的“非静态参数”自动关联到DevCloud流水线,如下 图所示,DevCloud流水线参数使用详见流水线参数化 。
最佳实践 9 通过 ContainerOps 部署 CCE/CCI
最佳实践 9 通过 ContainerOps 部署 CCE/CCI