使用Velero Restic快速完成云原生应用迁移至ACK集群
本文记录使用Velero Restic快速完成云原生应用迁移至ACK集群的实践过程。
0. 实践步骤概览
(1)创建GKE集群(或自建Kubernetes集群)
(2)在GKE集群上部署示例应用Jenkins Application并执行一个构建任务
(3)创建ACK集群
(4)在ACK集群中部署Minio Service用于应用迁移时数据中转服务
(5)在GKE上部署Velero并备份整个Jenkins Application
(6)把Jenkins Application使用的容器镜像同步到阿里云容器镜像仓库
(7)在ACK上创建Jenkins Application所使用的StorageClass
(8)在ACK上部署Velero并恢复整个Jenkins Application
(9)在ACK上替换Jenkins Application所使用的容器镜像
(10)验证Jenkins Application能否正常提供服务及其构建任务是否存在
1. 环境物料清单
GKE集群(或自建Kubernetes集群)
ACK集群
2. 创建GKE集群并部署示例应用Jenkins Application
(1)在MarketPlace中找到Jenkins应用并配置部署到GKE集群的jenkins命名空间下:
(2)应用正在完成部署:
(3)查看Ingress并访问jenkins服务:
(4)Jenkins应用的初始化配置:
(5)Jenkin应用上创建一个名为gke-to-ack的任务并执行构建:
(6)Jenkins应用的k8s资源列表如下
3. 创建ACK集群并部署Minio对象存储应用
(1) 自定义替换minio-deploy.yaml中的 MINIO_ACCESS_KEY 和 MINIO_SECRET_KEY值并部署:
(2) 查看minio LoadBalancer信息并登陆应用:
(3) 替换minio-job.yaml中的minio_server_url minino_access_key minio_secret_key并运行job在minio中创建名为velero的bucket:
(4) 查看bucket是否创建成功:
4. 在GKE和ACK上部署velero
(1) 安装velero client:
请从official release下载最新版本的velero客户端:
(2) 安装velero server:
创建credentials-velero文件并设置aws_access_key_id 与 aws_secret_access_key的值
ACK集群中请替换minio_server_url的值并指定image参数部署velero server
GKE中请替换minio_server_url的值并部署velero server
5. 在GKE集群中备份Jenkins Application
(1)在备份带volume信息的pod之前,我们要通过给pod加annotation来告诉velero哪些pod需要包含volume数据, 查看jenkins应用的Deployment资源:
(2)为pod加annotation:
(3)创建备份
(4) 查看备份
(5)登录Minio Server查看
5. 同步(或批量)迁移容器镜像
把Jenkins应用使用的容器镜像导入到阿里云容器镜像仓库,导入到的地址为:
批量迁移可参考:https://github.com/AliyunContainerService/sync-repo.git
6. 在ACK集群中创建Jenkins应用所使用的StorageClass standard
7. 在ACK集群中恢复Jenkins Application
查看备份信息:
恢复应用:
此处需要编辑deployment修改image为registry.cn-hangzhou.aliyuncs.com/haoshuwei/jenkins:2.150.3
查看restore的状态:
restore完成后的状态为:
8. 查看ACK集群上jenkins应用的ingress并访问服务进行验证
至此,一个带pv存储的jenkins应用被完整地从GKE迁移到ACK上。
参考链接:
https://velero.io/docs/v1.0.0/get-started/
https://velero.io/docs/v1.0.0/restic/#troubleshooting
https://github.com/heptio/velero
https://github.com/AliyunContainerService/velero-plugin
本文作者:流生
本文为云栖社区原创内容,未经允许不得转载。