《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),将状态修正到用户期望的状态。

openRemoveAbandoned作用_OpenShift


因为 Opeartor 的自动调解(Reconcilition)机制,使得直接对 CR 包括的 Kubernetes 对象(例如 Deployment、Service等)进行修改是无效的。这种情况,我们需要通过修改 CR 实例的配置才能实现修改云应用的配置的目的。

OpenShift 的 Operator Hub

在 OpenShift 的 Opeartor Hub 中提供了大量的红帽、开源社区以及第三方提供 Opertor。这些 Operator 覆盖云原生应用、数据库/大数据、AI/ML、开发工具、CI/CD、日志监控、等各个领域。由于 Opeartor 很好地对复杂这些软件运行环境和管理进行了封装,因此能有效地降低运维人员学习这些专业化软件环境的门槛、以及操作复杂性和难度。

openRemoveAbandoned作用_封装_02

用 Runtime Component Operator 运行容器应用

通常情况,要想通过 Opeator 运行一个应用需要根据 Opeator Frame 并使用 go、Helm 或 Ansible 实现 Operator。不过在 OpenShift 中提供了名为 Runtime Component 的 Operator,它可动态将云原生应用的资源对象封装到名为 RuntimeComponent 的标准 CR 中,这样就无需针对每个应用开发、封装一套 Opeartor 了。

以下介绍如果通过 Runtime Component Operator 运行测试应用:

  1. 通过在 OpenShift 控制台创建一个名为 hello 的项目。
  2. 使用默认配置安装 Runtime Component Operator,安装好后将会看到 Runtime Component。
  3. 进入安装好的 Runtime Component Operator ,创建 RuntimeComponent 实例。
  4. 在 Application Image 中提供 “docker.io/openshift/hello-openshift” 镜像名,Service Port 设为 hello-openshift 用到的 8080 端口。注意:Runtime Component 只持支运行 Image,不支持 OpenShift 的 s2i,而且 Image 需要使用带域名的全路径地址。
  5. 创建 Runtime Component 完后可以看到该实例的状态为 “Reconciled”,即当前运行状态符合CR定义的期望状态。
  6. 进入 Runtime Component 实例后可以在 Resources 中看到所有通过 CR 维护的资源。
  7. 通过 Route 确认可以访问 hello-openshift 应用。
  8. 进入到 OpenShift 开发者视图,可以调整 pod 数量,或者更改 Deployment 的其他配置(标签,健康检查)。确认这些直接修改操作是无效的。
  9. 通过 “操作” 删除 Deployment,确认提示 “该资源由 runtimecomponent-sample 管理,任何修改都可能会被覆盖。编辑管理资源以保留更改”。所以 Deployment 也无法直接修改。
  10. 修改 runtimecomponent-sample 实例的 YAML,将 “replicas” 的数量改为 2。
  11. 确认此时 Deployment 中的 pod 数量增加到 2 了。