电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

轻轨线CI/CD数据备份和恢复方案

来源:金蝶云社区作者:金蝶2024-09-233

轻轨线CI/CD数据备份和恢复方案



1. 概述


本节描述 轻轨线 CI/CD服务的数据备份和迁移方案。

注意: 因为轻轨线CICD是基于 gPaaS容器服务之上的,所以在操作之前,先将gPaaS进行备份(gPaaS容器服务、监控服务的数据备份恢复指南) ,然后再进行轻轨线CICD的备份。在恢复之前,也是先将gPaaS进行恢复,然后再进行轻轨线CI/CD的恢复。


涉及到的对象:

  •  k8s集群里面的对象

  • 数据库

  • 挂载数据,包括PV(第三方组件数据)


名词解释

pvc

数据卷申明

pv

数据卷


版本说明:

在进行数据备份和恢复时,轻轨线以及其他涉及的第三方组件前后版本必须保持一致,否则可能会出现异常。可按照如下截图指引进行版本查看。


轻轨线版本查看方式


第三方组件版本查看方式


2.  数据备份

2.1 备份k8s里与CICD相关的命名空间对象

注意,默认配置的导出项不包含pvc和role资源,备份时建议先修改kcs服务的环境变量。之后就可以将pvc和role资源也一起导出。具体导出操作流程可参考文章 苍穹k8s集群数据备份恢复方法

2.1.1 导出命名空间下的资源对象

命名空间包括: devops(第三方组件),harbor-system(镜像仓库),kce-system(与容器服务共用)。若某个命名空间不存在,则可能是没有部署。

备份方式: 进入容器服务-集群管理,使用资源管理中的命名空间导出功能进行导出。

特别说明:

  • kce-system命名空间,是容器服务,监控服务,轻轨线CI/CD共用,如gPaaS已进行备份,此处可以不备份。

  • cicd-tool(融合工具,服务挂载了2块数据卷)是部署在客户第三方的商业k8s集群上,其备份恢复依赖于第三方k8s集群的备份恢复机制。不在本文范围之内。

  • kce-system下的rabbitmq服务 由于消息消费量非常小,也不会产生实际影响,可以不备份。

2.1.2 备份k8s里与轻轨线CI/CD相关的ingress对象

包含2个文件:cicd-third-subpath, kce-entry

# kubectl get ingress kce-entry -n $gPaaS命名空间 -oyaml > kce-entry-ingress.yaml  

#gPaaS命名空间默认为 kce-system

# kubectl get ingress cicd-third-subpath -n devops -oyaml > cicd-third-subpath-ingress.yaml

用以上两个文件替换掉上步骤导出的yaml包中的ingress-xxxxxx.yaml文件(注意按照命名空间进行归类整理,按照默认名字,包含kce-system,devops 2个命名空间)。

2.1.3 修改pvc资源文件

  • devops命名空间

导出的pvc yaml文件中包含10组pvc资源数据,分别为如图中10个pvc资源,需要删除导出文件中pv相关的声明配置。



如下图示为删除过后的 pvc-fastdfs-data的最终数据格式,其它9个pvc也是相似处理。



  • harbor镜像仓库(harbor-system)(如组件未安装,可忽略)

导出的pvc yaml文件中,包含如图中的5个pvc资源,同样需要删除导出文件中pv相关的声明配置。



2.2  数据库备份

先在宿主机上看下有哪些数据库 ;

# kubectl exec -it db-mysql-0 -n $gPaaS命名空间 -- mysql -uroot -p # show databases;

结果如下:



与轻轨线CI/CD相关的数据库,包含:   devops,kcar,  kdcc,kdpm,third_api-server,  dtm_barrier。

注意:轻轨线CI/CD服务 依赖gPaaS的容器服务,请先确认已备份gPaaS相关的数据库(参考gPaaS备份手册)。

在gPaaS的安装机上执行如下语句,进行数据库备份。

其中,参数"gPaaS命名空间"按实际填写,安装时若未修改则为kce-system,参数 "gPaaS mysql密码"按实际填写,为安装时用户自定义配置。生成的文件名为cicd_bak.sql(可自定义修改)。

#  kubectl exec db-mysql-0 -n $gPaaS命名空间 -- mysqldump --databases devops kcar kdcc kdpm third_api-server dtm_barrier -u root -p"$gPaaS mysql 密码" --add-drop-table >cicd_bak.sq

2.3 第三方组件的数据备份

2.3.1  devops命名空间

此命名空间下,包含10组pvc所对应的pv的数据需要备份。涉及的第三方组件包含:fastdfs,gitlab,jenkins,nexus,postgresql,sonarqube(如组件未安装,可忽略)

a)  先查找命名空间 devops下的对应的所有 pv的数据,用如下命令执行:

# kubectl get pvc -n devops --no-headers | awk '{system ("kubectl get pv " $3 "  -o jsonpath='[{.spec.hostPath.path},{.spec.nodeAffinity.required.nodeSelectorTerms[0].matchExpressions[0].values[0]}]' ");print "" }'

执行后,得出来的结果如图:



结果说明: 第一列:pv对应的主机磁盘路径; 第二列:pv所在的主机IP(hostname),中间以逗号分隔。

b) 分别备份上一步骤中的数据目录(注意所在主机和数据路径,将整个目录备份,目录名中有所属的组件名称)。

 例如 第一行数据(属于fastdfs服务)

/var/gpaas/gpaas/pvc-48e39e19-887c-4331-b765-db1f375aaf39_devops_pvc-fastdfs-data,v-fusion-test1.sz.kingdee.net

需要备份时,先切换到 hostname(或ip)为  v-fusion-test1.sz.kingdee.net 的机器,执行备份(假设备份路径为 /bak_data,建议备份前检查下 整个目录的数据大小和剩余磁盘空间是否足够)。

查看对应目录下的文件:

查看目录文件大小:

执行备份(本次举例,备份到本机上)

#  cp -fr /var/gpaas/gpaas/pvc-48e39e19-887c-4331-b765-db1f375aaf39_devops_pvc-fastdfs-data/  /bak_data

备份完后,检查备份后的数据目录:

注意: 其它行的数据也需依次进行备份。  


2.3.2 harbr-system命名空间(如组件未安装,可忽略)

此命名空间下,包含5组pvc所对应的pv的数据需要备份。涉及的第三方组件包含:harbor

a)  先查找命名空间 harbr-system下的对应的所有 pv的数据,用如下命令执行:

# kubectl get pvc -n harbor-system --no-headers | awk '{system ("kubectl get pv " $3 "  -o jsonpath='[{.spec.hostPath.path},{.spec.nodeAffinity.required.nodeSelectorTerms[0].matchExpressions[0].values[0]}]' ");print "" }'

执行后,得出来的结果如图:



结果说明: 第一列:pv对应的主机磁盘路径; 第二列:pv所在的主机IP(hostname),中间以逗号分隔。


b) 分别备份上一步骤中的数据目录(注意所在主机和数据路径,将整个目录备份,目录名中有所属的组件名称)。备份过程参考3.1章节。


3. 数据恢复

3.1 轻轨线CI/CD k8s集群数据恢复

3.1.1. 恢复devops命名空间 集群对象

先创建devops命名空间

# kubectl create ns devops

执行导入1.1步骤里 导出的 devops命名空间下的文件(yaml文件执行导入没有先后顺序):

# kubectl apply -f xxx.yaml

3.1.2. 恢复harbor-system命名空间 集群对象(如之前组件未安装,可忽略)

先创建harbor-system命名空间

# kubectl create ns harbor-system

执行导入1.1步骤里 导出的 harbor-system命名空间下的文件(yaml文件执行导入没有先后顺序):

# kubectl apply -f xxx.yaml

3.1.3. 恢复kce-system命名空间(如gPaaS容器服务已恢复,此步省略)

先创建kce-system命名空间

# kubectl create ns kce-system

执行导入1.1步骤里 导出的 kce-system 命名空间下的文件(yaml文件执行导入没有先后顺序):

# kubectl apply -f xxx.yaml

3.2 轻轨线CI/CD 数据库恢复

执行如下命令即可恢复已备份的轻轨线CI/CD数据库(cicd_bak.sql为备份的轻轨线CI/CD数据库文件)。gPaaS命名空间默认为 kce-system

轻轨线CI/CD数据备份和恢复方案

1. 概述本节描述 轻轨线 CI/CD服务的数据备份和迁移方案。注意: 因为轻轨线CICD是基于 gPaaS容器服务之上的,所以在操作之前,先将gP...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信