《OpenShift / RHEL / DevSecOps 汇总目录》
文本已在OpenShift 4.10环境中进行验证。
文章目录
- Opeartor 的调解(Reconcilition)功能
- OpenShift 的 Operator Hub
- 用 Runtime Component Operator 运行容器应用
- 演示视频
- 参考
Opeartor 的调解(Reconcilition)功能
Kubernetes 的 Operator 是一种封装、部署和管理云原生应用的机制。我们可以将云原生应用相关资源对象封装到 Operator 中的 Customer Resources (CR)中,这样 Operator 就可以管理云原生应用生命周期,包括:创建、升级、删除、自愈、备份等。
当应用以 CR 方式运行期间,Operator 可以持续监控其状态,一旦发现当前状态和用户期望的状态不同,Operator 会进行自动调解(Reconcilition),将状态修正到用户期望的状态。
因为 Opeartor 的自动调解(Reconcilition)机制,使得直接对 CR 包括的 Kubernetes 对象(例如 Deployment、Service等)进行修改是无效的。这种情况,我们需要通过修改 CR 实例的配置才能实现修改云应用的配置的目的。
OpenShift 的 Operator Hub
在 OpenShift 的 Opeartor Hub 中提供了大量的红帽、开源社区以及第三方提供 Opertor。这些 Operator 覆盖云原生应用、数据库/大数据、AI/ML、开发工具、CI/CD、日志监控、等各个领域。由于 Opeartor 很好地对复杂这些软件运行环境和管理进行了封装,因此能有效地降低运维人员学习这些专业化软件环境的门槛、以及操作复杂性和难度。
用 Runtime Component Operator 运行容器应用
通常情况,要想通过 Opeator 运行一个应用需要根据 Opeator Frame 并使用 go、Helm 或 Ansible 实现 Operator。不过在 OpenShift 中提供了名为 Runtime Component 的 Operator,它可动态将云原生应用的资源对象封装到名为 RuntimeComponent 的标准 CR 中,这样就无需针对每个应用开发、封装一套 Opeartor 了。
以下介绍如果通过 Runtime Component Operator 运行测试应用:
- 通过在 OpenShift 控制台创建一个名为 hello 的项目。
- 使用默认配置安装 Runtime Component Operator,安装好后将会看到 Runtime Component。
- 进入安装好的 Runtime Component Operator ,创建 RuntimeComponent 实例。
- 在 Application Image 中提供 “docker.io/openshift/hello-openshift” 镜像名,Service Port 设为 hello-openshift 用到的 8080 端口。注意:Runtime Component 只持支运行 Image,不支持 OpenShift 的 s2i,而且 Image 需要使用带域名的全路径地址。
- 创建 Runtime Component 完后可以看到该实例的状态为 “Reconciled”,即当前运行状态符合CR定义的期望状态。
- 进入 Runtime Component 实例后可以在 Resources 中看到所有通过 CR 维护的资源。
- 通过 Route 确认可以访问 hello-openshift 应用。
- 进入到 OpenShift 开发者视图,可以调整 pod 数量,或者更改 Deployment 的其他配置(标签,健康检查)。确认这些直接修改操作是无效的。
- 通过 “操作” 删除 Deployment,确认提示 “该资源由 runtimecomponent-sample 管理,任何修改都可能会被覆盖。编辑管理资源以保留更改”。所以 Deployment 也无法直接修改。
- 修改 runtimecomponent-sample 实例的 YAML,将 “replicas” 的数量改为 2。
- 确认此时 Deployment 中的 pod 数量增加到 2 了。