目录
引言
KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,平台内置的多租户设计,让不同的团队能够在一个平台中不同的企业空间下,更安全地从云端到边缘部署云原生应用。 其中提到的企业空间,也就是workspace,方便的隔离了企业内部团队的应用。详见 https://v2-1.docs.kubesphere.io/docs/zh-CN/platform-management/workspace-management/
如果想对上述workspace进行备份,首先需要了解workspace中包含的资源:
- 一个 name 为 test-workspace-1 的 Workspace 资源,这是一个 cluster 级别的资源
- 一个 name 为 test-workspace-1 的 WorkspaceTemplate 资源,这是一个 cluster 级别的资源
- 带有 label: kubesphere.io/workspace=test-workspace-1 的 WorkspaceRole 和 WorkspaceRoleBinding 资源, 这些是 cluster 级别的资源
- 上一步的 WorkspaceRoleBinding 中涉及到的 User 资源,这些是 cluster 级别的资源
- 上一步的 User 中涉及到的 GlobalRole 和 GlobalRoleBinding 资源,这些是 cluster 级别的资源
- 带有 label: kubesphere.io/workspace=test-workspace-1 的其他 cluster 级别的资源,如 ResourceQuotas, HelmRepo 等
- 带有 label: kubesphere.io/workspace=test-workspace-1 的 namespace,以及里面的所有资源
综上可以看出,一个 workspace 里面包含了非常多的资源,虽然大部分的资源都带有同样的 label,但还是有些非常重要的资源是没有这样的 label 的,并且这些资源(包括里面的 namespace 以及其中的资源)随着项目的创建和修改都是在动态变化的。
如果使用常见的备份工具,几乎不可能通过一个或者多个备份将这些资源动态地备份下来,就算是真的能备份,中间也少不了一些手工的操作,整个过程非常复杂而且容易出错。 但是如果使用 YS1000 对 workspace 进行备份,整个过程就会变得非常顺畅。因为 YS1000 借助于其自研的强大的备份模版功能,可以将上述过程在一次备份里面全部完成,而且不需要任何手工介入。
更方便的是,YS1000 还可以动态发现 KubeSphere 集群里所有的 worksapce,并且对 workspace 的每一次备份,都是动态备份其当下的所有应用和对应资源。 此外,YS1000 的应用发现页面中还提供了资源预览的功能,可以列出所有将要备份的资源的名称,让你在任何时候都可以对你要备份的资源有一个直观的感受。
本文就如何快速的通过银数多云数据管家的最新版本 YS1000 v2.10 查找workspace的资源,并快速备份和恢复workspace作一个简单介绍。
实验环境
- YS1000宿主集群配置:
kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
test-master Ready control-plane,master 22h v1.20.15 172.17.0.11 <none> CentOS Linux 7 (Core) 3.10.0-1160.62.1.el7.x86_64 docker://19.3.14
test-worker Ready <none> 21h v1.20.15 172.17.16.2 <none> CentOS Linux 7 (Core) 3.10.0-1160.62.1.el7.x86_64 docker://19.3.14
- 青云KubeSphere环境配置:
kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master1 Ready control-plane,master 25h v1.21.5 172.16.0.4 <none> Ubuntu 18.04.6 LTS 4.15.0-166-generic docker://20.10.8
worker-p001 Ready worker 25h v1.21.5 172.16.0.3 <none> Ubuntu 18.04.6 LTS 4.15.0-166-generic docker://20.10.8
worker-p002 Ready worker 25h v1.21.5 172.16.0.5 <none> Ubuntu 18.04.6 LTS 4.15.0-166-generic docker://20.10.8
kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
csi-high-capacity (default) csi-qingcloud Delete Immediate true 25h
csi-high-capacity-legacy csi-qingcloud Delete Immediate true 25h
csi-high-perf csi-qingcloud Delete Immediate true 25h
csi-neonsan csi-qingcloud Delete Immediate true 25h
csi-ssd-enterprise csi-qingcloud Delete Immediate true 25h
csi-standard csi-qingcloud Delete Immediate true 25h
csi-super-high-perf csi-qingcloud Delete Immediate true 25h
- s3备份仓库使用腾讯云的cos(也可以是其他的云平台的对象存储,或者使用自己搭建的minio)
部署部署YS1000
使用helm安装YS1000免费版,详见
https://github.com/jibutech/helm-charts/blob/main/README.md
使用手册详见
https://github.com/jibutech/docs/blob/main/user_guide/ys1000-user-guide-v2.10.md
安装完成后查看YS1000版本:
helm list -A
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
qiming-operator qiming-migration 1 2022-12-23 19:07:56.458502247 +0800 CST deployed qiming-operator-2.10.3 2.10.3
创建workspace及其应用
- 我们使用KubeSphere的前端创建两个新的workspace
- 点击进入其中一个workspace,创建几个project
- 部署完应用后,查看运行状态
自动发现workspace并备份
- 使用以下cmd获得YS1000的service,并在浏览器上登陆YS1000(使用密码登录admin/passw0rd)
kubectl -n qiming-migration get svc ui-service-default
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ui-service-default NodePort 10.96.0.153 <none> 9000:30180/TCP 7h
- 点击左侧导航栏“集群信息”,点击“添加集群”按钮,选择k8s发行版:KubeSphere 或 QKE,并保存,等待集群部署组件完成,在页面中显示“已就绪”。
- 点击左侧导航栏“集群应用备份”,点击“创建应用备份任务”按钮,输入备份名称和备份仓库;
点击下一步,选择qke集群,在选择应用下拉框中选择"工作空间",并在右侧下拉框中选择其中一个test-workspace-1,其他默认选项即可,就能针对test-workspace-1进行备份;
点击下一步,选择备份策略(可选预置策略snapshot-bronze);后续选项默认不勾选,直接点击完成,备份计划创建成功。
- 等待备份计划“已就绪”后,点击备份计划右侧的操作按钮,点击备份进行一次手动备份(想验证数据的话也可以在备份前通过mongo-client连接mongodb插入一些数据);
在备份任务完成后,点击“详情”按钮,再点击资源列表,可以看到只有workspace相关资源,没有其他helm应用的资源。
- 针对 workspace 的备份计划创建后,后台会自动创建对应的受管应用和备份模版,点击左侧导航栏“应用管理”,切换到“备份模版”,并可以点击操作中的预览按钮查看备份内容。
基于预览的结果,也可以点击操作中的修改按钮调整备份模版的内容,比如添加一些你认为遗漏的资源,完成后 YS1000 会把这些定制化的资源同时应用到备份计划中,让你可以在一个备份中同时备份标准资源和定制化资源。
恢复workspace及其应用
接下来,我们模拟一次误删workspace的操作,然后通过ys1000恢复。
- 在qke前端直接删除整个test-workspace-1
- 使用YS1000 的应用备份进行恢复,点击备份任务右侧“恢复”按钮,输入恢复名称和恢复的目标集群(还是选择qke集群);
点击下一步选择默认全部资源;
点击下一步,默认立即恢复即可;再点击下一步,选择与原来存储相同的目标存储,其他默认选项即可,最后点击下一步跳过钩子程序,点击完成。
- 恢复计划创建成功后展开恢复任务,点击右侧“激活”恢复任务。
- 等待恢复任务完成后,登录qke前端检查workspace及其应用的恢复情况(如果备份前有插入过数据也可以顺便查看一下数据库中的数据正确性)。
小结
随着云原生生态的越发成熟,有不少企业选择 KubeSphere 作为其容器平台,并通过workspace隔离不同团队的应用,本文利用YS1000银数多云数据管家, 简化了KubeSphere 中的workspace 的动态备份和恢复操作, 可助力企业达成 KubeSphere workspace级别的应用灾备、迁移和 DevOps 等目标,从而保证了企业云原生应用的弹性和可靠性。