1. 前言
Kubernetes Operator 是一种封装、部署和管理云原生应用的方法,它基于 Kubernetes 资源和控制器概念构建,涵盖了特定于作用域或应用知识的参数设置,可用于实现其所管理软件的整个生命周期的自动化。使用 Kubernetes API 和 kubectl 工具在 Kubernetes 上部署并管理云原生应用。利用 Operator 作为云原生应用的控制器,可以来代表用户创建、配置和管理复杂应用的实例,与扩展 Kubernetes API 的功能,在本文中我们将详细介绍在 如何在 OpenShift Operator上部署 Kasten K10.
2. Kasten on OpenShift
Kasten K10 是 Veeam 在 Kubernetes 平台的数据管理解决方案,通过部署 Kasten K10 企业可以安全地备份和还原、执行灾难恢复以及迁移云原生的应用。Kubernetes 集群资源和持久卷等存储资源。解决用户备份、灾难恢复、迁移过程中的数据管理问题,提高云原生环境数据管理的便捷性,帮助用户降低灾备成本,提高生产执行效率。
z
红帽® OpenShift® 是一个企业就绪型 Kubernetes 容器平台,可以实现全堆栈自动化运维,以管理混合云、多云和边缘部署。红帽 OpenShift 已进行过专门优化,可以有效提高开发人员的生产力并推动创新。 凭借红帽 OpenShift 的全堆栈自动化运维、跨所有环境的一致体验以及面向开发人员的自助服务置备,团队可以紧密携手合作,更有效地从构思想法过渡到生产阶段。红帽 OpenShift 既可作为领先公共云中的全托管式云服务提供,也可作为自我管理软件提供给需要更高定制化程度的企业。
3. 关于红帽 OpenShift Operator
3.1 k8s Operator 的工作原理是什么?
在 Kubernetes 环境中,控制平面的控制器实施控制应用的生态循环,它反复比较云原生应用在集群中的理想状态和实际状态。如果集群的实际状态与理想状态不符,控制器将采取措施解决此问题。Operator 是使用自定义资源(CR)管理应用及其组件的自定义 Kubernetes 控制器。高级配置和设置由用户在 CR 中提供。Kubernetes Operator 是基于嵌入在 Operator 逻辑中的最佳实践,并将高级指令转换为低级操作。自定义资源是 Kubernetes 中的 API 扩展机制。自定义资源定义(CRD)会明确 CR 并列出 Operator 用户可用的所有配置。 Kubernetes Operator 的动作如下:
- Kubernetes Operator 监视 CR 类型并采取特定于应用的操作,确保当前状态与该资源的理想状态相符。
- Kubernetes Operator 通过自定义资源定义引入新的对象类型。Kubernetes API 可以像处理内置对象一样处理自定义资源定义,包括通过 kubectl 交互以及包含在基于角色的访问权限控制(RBAC)策略中。
- Kubernetes Operator 会持续监控正在运行的应用,可备份数据,从故障中恢复,以及随着时间的推移自动升级应用。
- Kubernetes Operator 几乎可执行任何操作:扩展复杂的应用,应用版本升级,甚至使用专用硬件管理计算集群中节点的内核模块。
3.2 为什么要使用 Operator?
对于应用开发人员,Operator 使得部署和运行其应用所依赖的基础服务变得更简单。 而对于基础架构工程师而言,Operator 提供了在 Kubernetes 集群上分发软件的一致方式,并通过识别和纠正应用问题降低了支持成本。 除了 Kubernetes 中提供的基本自动化功能之外,Operator 还允许您编写代码来实现任务自动化。对于采用 DevOps 或站点可靠性工程(SRE)方法的团队,开发了将 SRE 实践应用到 Kubernetes 的 Operator。 Operator 模式能够捕捉运维人员如何管理服务的规律。运维人员需要全面了解应用或服务的工作原理、部署方式以及如何解决可能发生的问题。站点可靠性工程师或运维团队通常编写软件来管理应用,但 Operator 可以获取人类运维知识并将其编码到软件中,用于管理和部署 Kubernetes 工作负载,同时消除手动任务。
3.3 在红帽网站验证 Operator 的可用性
目前 Kasten 已经通过 OpenShift Operator 可用认证,在可以网站上进行查询,这支持用户通过 Kasten 为企业的云原生应用进行 Day 2 Operation 的数据管理操作,这包括云原生应用的备份、迁移与容灾与 DevOps 支持,从而有效地提高开发与运维人员的生产效率并推动创新。
红帽 Ecosystem Catalog
https://catalog.红帽.com/software/operators/search?q=kasten
4. Kasten 在 OpenShift 上的安装与部署
4.1 通过 helm 进行安装
通过 Helm 安装 Kasten K10
路由与 Token 认证方式通过,如下参数进行设定。
--set route.enabled=true
--set auth.tokenAuth.enabled=true
$ helm install k10 kasten/k10 --namespace=kasten-io --set scc.create=true --set route.enabled=true --set auth.tokenAuth.enabled=true
NAME: k10
LAST DEPLOYED: Mon Jul 26 02:25:50 2021
NAMESPACE: kasten-io
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing Kasten’s K10 Data Management Platform!
Documentation can be found at https://docs.kasten.io/.
How to access the K10 Dashboard:
The K10 dashboard is not exposed externally. To establish a connection to it use the following `kubectl` command:
`kubectl --namespace kasten-io port-forward service/gateway 8080:8000`
The Kasten dashboard will be available at: `http://127.0.0.1:8080/k10/#/`
获取 Token
oc login -u opentlc-mgr
Authentication required for https://api.cluster-cb92.cb92.sandbox352.opentlc.com:6443 (OpenShift)
Username: opentlc-mgr
Password:
Login successful.
You have access to 64 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
[xiaoyliu-红帽.com@bastion linux-amd64]$ oc whoami --show-token
sha256~XPu8Iz5X3ZS7KeK9y6MYKcpK2GyQuQKJG4k6yfZDbvo
[xiaoyliu-红帽.com@bastion linux-amd64]$
4.2 通过 Operator Hub 进行安装
点击 Operator , Operator Hub 查找 Kasten Operator
创建项目
创建 K10 release
使用 Yaml 视图进行参数调整, 搜索 route 两次,直到看见 Route 配置, route 与 tls 都设置为 true
route:
annotations: {}
enabled: true
host: ''
labels: {}
path: ''
tls:
enabled: true
insecureEdgeTerminationPolicy: Redirect
termination: edge
使用 Token 方式认证, 搜索 tokenAuth 设置为 true
tokenAuth:
enabled: true
获取 token,点击复制登录命令,点击显示Token
复制Your API token is 的下一行
4.3 登录 K10
找到网络,路由。找到位置打开
访问 kasten 登录页面, 使用上文获取的Token 进行登录
5. 红帽 OCP 应用的备份与恢复
5.1 部署测试应用: Django + Postgresql
开发者目录 , 新建项目
选择添加,从目录
实例化模板
回到 administrator 界面,在 Protject 里查看,项目部署情况
查看工作负载 pod 的状态,可以看到 django 与 postgresql 已经启动
找到Project的路由
进入 Django的 web 页面,刷新两次,注意下面的 page view 2
进入 Postgresql 终端, 输入命令查看,结果是相同的
5.2 云原生应用的发现
进入 k10 界面 应用数量的变化已经被捕捉,应用数量从 61 上升到 62
5.3 建立备份策略
查找应用test4ocp, 点击 create policy
一切默认,点击 create policy
5.4 运行备份策略
点击 Run Once , Run Ploicy
查看 Dashboard ,确认 程序备份完成
5.5 制造数据变化
进入 Django的 web 页面,刷新两次,注意下面的 page view 4
进入 Pod 终端,查看 pageview = 4
5.6 还原应用与数据
回到 K10 界面,点击 Restore
选择时间点
一切默认,选择 Restore
回 dashboard, 查看 Restore的情况
5.7 查看应用还原结果
回到 OCP 界面,查看,所有 pod running
回 k10 界面查看已经完成,Restore
回到 OCP 界面,查看,所有 pageview =2
总结
红帽® OpenShift® 是一个企业就绪型 Kubernetes 容器平台,可以实现全堆栈自动化运维,以管理混合云、多云和边缘部署。利用红帽 OpenShift Operator 通过在界面简单配置即可完成 Kasten 数据管理平台的部署,红帽 OpenShift 管理员可以参考以上步骤快速上手。目前 Kasten 已经通过 OpenShift Operator 可用认证,支持用户通过 Kasten 为企业的云原生应用进行 Day 2 Operation 的数据管理操作,这包括云原生应用的备份、迁移与容灾与 DevOps 支持,从而有效地提高开发与运维人员的生产效率并推动创新。
参考资料
Kasten 官方文档:
https://docs.kasten.io/
Kasten 实战系列文章:
http://www.data2clouds.com/index.php/archives/41/
OpenShift Documentation
https://docs.OpenShift.com/
O’Reilly: Kubernetes Operators: Automating the Container Orchestration Platform
https://www.红帽.com/zh/resources/oreilly-kubernetes-operators-automation-ebook?intcmp=701f2000001OMH6AAO