批量克隆组件
同一个应用内存在多个微服务组件需要部署时,如果各微服务组件的配置基本相同,例如:调度策略、伸缩策略、数据存储、日志存储、生命周期等配置都一致,只存在细微的差异需要修改。如果每个组件都在创建并部署时都按需配置一遍,存在操作复杂、容易出错的问题。ServiceStage提供了应用内组件批量克隆部署能力,解决了此类问题,提升了组件部署效率和使用体验。
前提条件
仅状态为“运行中”、“未就绪”、“异常”的组件,支持被克隆。查看组件状态,请参考查看组件详情。
批量克隆组件
- 登录ServiceStage控制台。
- 单击“应用管理”。
- 单击待批量克隆的组件所在的应用名称,进入“应用概览”页面。
- 勾选“组件列表”中待批量克隆的组件,单击“批量克隆”。
- 参考下表批量设置待克隆组件版本配置信息。
参数
说明
组件名称
组件的名称,组件克隆完成后不支持修改。
长度2到64个字符,可以包含英文字母、数字、下划线(_)或中划线(-),以英文字母开头、英文字母或者数字结尾。
对于容器部署方式部署的组件:- 不同应用下的同名组件可以部署在同一个环境下。
- 同一个应用下的同名组件可以部署在同一个环境下相同CCE集群下的不同泳道。关于泳道,请参考全链路流量控制概述。
- 同一个应用下的同名组件可以部署在同一个高可用环境下的不同CCE集群。
- 同一个应用下的同名组件可以部署在不同环境下。
对于虚拟机部署方式部署的组件:
- 不同应用下的同名组件可以部署在同一个环境下。
- 同一个应用下的同名组件可以部署在不同环境下。
组件版本
组件版本号。
- 默认以您开始执行批量克隆组件操作的时间来生成版本号,格式为yyyy.mmdd.hhmms,s取时间戳中秒数的个位值。例如:时间戳为2022.0803.104321,则版本号为2022.0803.10431。
- 您也可以自定义版本号,格式为:A.B.C或者A.B.C.D。A、B、C、D为自然数,例如:1.0.0或者1.0.0.0。
说明:您可以执行以下操作,批量同步设置组件版本号:
- 鼠标移动到指定组件的“组件版本”输入框,单击。
- 勾选需要同步配置组件版本号的其他组件。
- 单击“确定”。
所属应用
选择组件所属应用。您可以执行以下操作,批量同步设置组件所属应用:
- 鼠标移动到指定组件“所属应用”下拉列表框,单击。
- 勾选需要同步配置组件所属应用的其他组件。
- 单击“确定”。
所属环境
选择组件部署环境。
容器部署方式部署的组件仅可选择Kubernetes类型环境;虚拟机部署方式部署的组件仅可选择虚拟机类型环境。
须知:如果组件已经绑定了指定的微服务引擎、分布式缓存或云数据库实例,而为该组件重新选择的环境下并未绑定这些指定的实例,则会在高级配置预检查中报错。
您可以执行以下操作,批量为相同部署方式的组件同步设置组件所属环境:
- 鼠标移动到指定组件“所属环境”下拉列表框,单击。
- 勾选需要同步配置组件所属环境的其他组件。
- 单击“确定”。
重新设置组件所属环境后,容器部署方式部署的组件所属集群会同步变更为重新选择的环境下绑定的集群,所属命名空间会同步变更为重新选择的环境下绑定集群的default命名空间。
所属集群
为容器部署方式部署的组件选择组件部署和运行的CCE集群。
您可以执行以下操作,批量同步设置组件所属命名空间:
- 鼠标移动到指定组件“所属集群”下拉列表框,单击。
- 勾选需要同步配置组件所属集群的其他组件。
- 单击“确定”。
批量同步设置组件所属集群后,仅选择的组件所属环境下绑定了选择的集群,该组件所属集群才会同步变更,且所属命名空间会同步变更为重新选择的集群的default命名空间。
所属命名空间
为容器部署方式部署的组件选择执行构建的环境下CCE集群命名空间,用于隔离构建数据。关于命名空间,请参考管理命名空间。
您可以执行以下操作,批量同步设置组件所属命名空间:
- 鼠标移动到指定组件“所属命名空间”下拉列表框,单击。
- 勾选需要同步配置组件所属命名空间的其他组件。
- 单击“确定”。
批量同步设置组件所属命名空间后,仅所选组件的所属集群下存在选择的命名空间,该组件所属命名空间才会同步变更。
镜像包
单击,重新选择组件来源,请参考组件来源说明。须知:重新选择的组件来源对应的技术栈及版本需要和待克隆组件的技术栈相同,否则会导致克隆失败。
- 容器部署方式部署的组件,如果选择的是镜像包:
- 可重新自定义“容器名称”:长度为1到63个字符,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
- 单击已选择的镜像包卡片右上角的,可修改镜像包来源。
- 容器部署方式部署的组件,如果选择的是软件包,可重新自定义“容器名称”:长度为1到63个字符,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
- 如果组件来源是软件包且选择“自定义文件地址”上传方式,需要执行以下操作:
- 容器部署方式部署的组件,支持设置“镜像访问凭证”。最多支持选择16个镜像访问凭证。单击“创建密钥”,可以创建新的镜像访问凭证。请参考创建密钥,“密钥类型”必须选择kubernetes.io/dockerconfigjson。
实例数
设置组件运行实例数。
- 容器部署方式部署的组件,取值范围为[1, 200]。您可以执行以下操作,批量同步设置组件实例数:
- 鼠标移动到指定组件“实例数”输入框,单击。
- 勾选需要同步配置组件实例数的其他组件。
- 单击“确定”。
- 虚拟机部署方式部署的组件,您可以执行以下操作,重新设置组件实例数:
- 单击“选择”。
- 重新选择组件部署ECS数量。
如果待选择的ECS “Agent状态列”提示“缺少Agent,请先安装”,请单击“安装”,参考安装虚拟机Agent的6~8安装Agent。
- 单击“确定”。
- 根据实际业务需要重新设置组件构建参数。
容器部署方式部署的组件且技术栈类型为Java、Tomcat、Node.js、Python、Php时可以设置。
- 单击目标组件所在行“操作”列的“构建”。
- 参考下表设置构建参数,其中带“*”标志的参数为必填参数。
参数
说明
*编译命令
组件来源是“源码仓库”时,根据业务需要设置“编译命令”。
- 使用默认命令或脚本:优先执行代码根目录下的build.sh,不存在则按照所选语言的通用方法编译,如Java语言的mvn clean package。
- 使用自定义命令:根据所选语言自定义编译命令,或修改build.sh文件后选择使用默认命令或脚本。
*Dockerfile地址
组件来源是“源码仓库”时,根据业务需要设置“Dockerfile地址”。
“Dockerfile地址”即Dockerfile文件相对于项目的根目录(./)所在的目录,Dockerfile文件用于镜像构建。
如果未指定“Dockerfile地址”,默认查找项目根目录下的Dockerfile;如果项目根目录下也没有Dockerfile文件,则根据选定的运行环境自动生成Dockerfile。
*组织
组织用于管理组件构建生成的镜像。
*构建环境
选择用于构建镜像的环境类型。执行构建的环境,必须是Kubernetes环境,且能够访问Internet。
推荐您选择“使用当前环境构建”。如果当前环境的CCE集群不能访问Internet,且您单独规划了构建环境,则可选择“使用独立环境构建”。
- 使用独立环境构建:可使用单独的构建环境进行镜像构建。独立构建环境CCE集群和当前组件部署环境CCE集群的CPU架构必须保持一致,否则会导致组件部署失败。
- 使用当前环境构建:使用组件所属的部署环境进行镜像构建。当前环境CCE集群的master节点和node节点的CPU架构必须保持一致,否则会导致组件构建失败。
*选择环境
- “构建环境”选择“使用独立环境构建”时,可选择使用不同于组件所属的独立构建环境。
- “构建环境”选择“使用当前环境构建”时,固定选择使用组件所属的部署环境。
*选择集群
“选择环境”选择的是“高可用环境”时,需选择用于构建的集群。
关于“高可用环境”,请参考环境概述。
*命名空间
选择执行构建的环境下CCE集群命名空间,用于隔离构建数据。关于命名空间,请参考管理命名空间。
过滤节点标签
如果存在以下情况,您需要通过设置过滤节点标签将构建任务下发到绑定了EIP的固定节点上,保证组件构建、部署成功。
- “构建环境”选择“使用独立环境构建”时,需要设置过滤节点标签,将构建任务下发到独立构建环境下的node节点,保证该节点和当前组件部署环境下node节点CPU架构一致。
- “构建环境”选择“使用当前环境构建”时,如果环境下有node节点和master节点CPU架构不一致,需要设置过滤节点标签,将构建任务下发到和master节点CPU架构一致的node节点上。
新增过滤标签,请参考添加节点标签。
- 单击“确定”。
- 单击目标组件所在行“操作”列的“高级配置”。
- 选择组件技术栈及版本。技术栈详情,请参考技术栈简介。
- 为容器部署方式部署的有状态组件设置“实例间发现服务配置”。
用于解决有状态负载(StatefulSet)内Pod互相访问的问题,给每个Pod提供固定的访问域名。
参数
说明
*Service名称
输入应用发布的可被外部访问的名称。
Service是将运行在一组Pods上的应用程序公开为网络服务的抽象方法。
说明:部署在同一个CCE下的组件,Service名称必须唯一,否则会导致组件部署失败。
*端口配置
设置以下端口配置参数。
- 端口名称:Pod间通信的端口名称。
- 容器端口:容器中应用启动监听的端口。
- 访问端口:访问Service的端口。
如需增加端口配置,请单击“新增端口配置”。
- 设置“公网访问”。
- 单击,为容器部署方式部署的组件开启公网访问。
开启组件公网访问后,支持通过绑定了弹性公网IP的ELB以公网域名方式访问组件,以使用组件提供的服务。
- 设置“公网ELB”。
- 选择所选环境中已经存在的绑定了弹性公网IP的弹性负载均衡(ELB)资源。
- 若不存在,请单击“去所选的环境里添加”,在环境编辑页面,单击“新增可选资源”,为该环境添加已创建的弹性负载均衡(ELB)资源。
- 若需创建弹性负载均衡(ELB)资源,请参考下表根据实际应用场景进行创建。
使用场景
参考章节
使用域名访问应用
- 购买共享型负载均衡器
- 参考购买独享型负载均衡器创建“规格”为“应用型”的ELB
参考购买独享型负载均衡器创建“规格”为“应用型”的ELB
- 弹性负载均衡ELB需已绑定弹性公网IP,且必须与当前组件部署环境下纳管的计算资源处于相同的虚拟私有云VPC及其子网下。
- 组件在不同部署环境下需绑定不同ELB,避免路由错误。
- 设置“对外协议”。
- 选择“HTTP”,会存在安全风险,建议优先选择使用安全的“HTTPS”方式。
- 选择“HTTPS”,单击“使用已有”选择已经创建的证书。
若证书不存在,请单击“新创建”创建新的服务器证书。创建服务器证书请参考创建证书。
- 设置“域名”。
- 选择“自动生成”,自动生成的域名仅有7天有效期。
- 选择“绑定域名”,在输入框中输入自定义域名。
- 设置“监听端口”。
输入应用进程的监听端口号。
图1 设置公网访问
- 设置“公网ELB”。
- 单击,为虚拟机部署方式部署的组件开启组件公网访问。
开启组件公网访问后,支持通过绑定了弹性公网IP的ELB以公网域名方式访问组件,以使用组件提供的服务。
- 设置“公网ELB”。
- 选择所选环境中已经存在的绑定了弹性公网IP的弹性负载均衡(ELB)资源。
- 若不存在,请单击“去所选的环境里添加”,在环境编辑页面,单击“新增可选资源”,为该环境添加已创建的弹性负载均衡(ELB)资源。
- 若需创建弹性负载均衡(ELB)资源:
- 参考购买共享型负载均衡器创建共享型ELB。
- 参考购买独享型负载均衡器创建“规格”为“应用型”的独享型ELB。
- 弹性负载均衡ELB需已绑定弹性公网IP,且必须与当前组件部署环境下纳管的计算资源处于相同的虚拟私有云VPC及其子网下。
- 组件在不同部署环境下需绑定不同ELB,避免路由错误。
- 设置“对外协议”。
- 选择“HTTP”,会存在安全风险,建议优先选择使用安全的“HTTPS”方式。
- 选择“HTTPS”,单击“使用已有”选择已经创建的证书。
若证书不存在,请单击“新创建”创建新的服务器证书。创建服务器证书请参考创建证书。
- 设置“域名”。
- 选择“自动生成”,自动生成的域名仅有7天有效期。
- 选择“绑定域名”,在输入框中输入自定义域名。
- 设置“公网ELB”。
- 设置组件的其他配置。
- 容器部署方式部署的组件,请参考管理容器部署组件云服务配置~管理容器部署组件高级配置进行设置。
- 虚拟机部署方式部署的组件,请参考管理虚拟机部署组件配置进行设置。
- 单击“确定”。
- (可选)单击“高级设置预检查”,检查各组件的高级配置是否正确。
如果组件绑定了指定的微服务引擎、分布式缓存或云数据库实例,而该组件所属环境下并未绑定这些指定的实例,高级配置预检查会报错。请执行以下操作重新配置后再执行后续操作。
- 请在弹出的“高级配置预检查”对话框确认后,单击“确定”。
- 单击报错组件“操作”列的“高级配置”,参考13根据报错情况重新设置。
- 单击“完成并执行”,系统自动进行高级配置预检查,检查各组件的高级配置是否正确。
- 否,请参考13根据报错情况重新设置。
- 是,等待组件状态由“初始化”转换为“运行中”,表示已成功完成组件批量克隆。在组件“部署记录”页面,可查看部署日志。
容器部署方式部署的组件,如果出现“查询工作负载实例状态失败”日志信息,您可以单击“查看事件”,进入事件列表查看详情。