OpenShift 配置管理

62次阅读
没有评论

问题描述

在使用 OpenShift 时,想了解是否有一种标准的方式来管理 OpenShift 的配置,比如服务、构建配置等对象的配置。他注意到 OpenShift 的官方文档中并没有提到如何保存这些配置,即在 Web 控制台或 oc edit 中看到的 YAML 或 JSON 表示形式是否可以保存在 Git 仓库中。他想知道大多数项目是将配置保存在 OpenShift 内部,还是有一种将配置保存在 OpenShift 之外的标准方式。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

根据我的了解,OpenShift 和 Kubernetes 本身都不支持将服务配置外部化。你应该在某个地方有一堆 YAML 或 JSON 文件,并使用 CLI 工具来控制它们的部署和配置。
然而,有一个名为 Rancher 的工具,它在 2.0 版本中允许我们导入外部的 Kubernetes 集群,并将其作为 Rancher 自己的环境进行管理。
你可以在这里找到如何使用 Rancher 的说明。

注意:Rancher 2.0 目前正在逐步进入 Beta 阶段,所以在你的工作中可能需要一些时间才能使用它。

方案2

根据我的经验,OpenShift 在支持社区提出的优秀 Kubernetes 工具方面是开放的。你可以选择适合你需求的 Kubernetes 工具。我们使用 Helm 来管理我们在 OpenShift 集群中运行的应用程序的配置对象(即 YAML 文件)。Helm 可以管理通用的 Kubernetes 对象,也可以管理 OpenShift 的特定扩展。Helm 在官方的 OpenShift 博客中有介绍。我们正在使用强大的 helmfile 重写我们的配置管理,它可以更容易地管理多个 Helm 发布。
这个答案给出了我们如何将所有 Helm(或 Helmfile)的配置存储在 Git 中,并将 Git 中的配置推送到 OpenShift,实现“基础设施即代码”。
此外,你可能忽略了 oc 的一个重要功能,即模板。然而,Helm 是一个较新的工具,它内置了更好的模板框架。当我们使用 oc 模板系统时,我不得不编写自己的包装逻辑来处理条件逻辑,以添加或删除应用程序模板的可选功能。当我们升级到 Helm 时,所有这些自定义逻辑都被移除了。Helm 还具有回滚到先前版本的功能。
我认为 OpenShift 团队开始添加像 oc 模板这样的功能,是为了填补生态系统中的空白。现在,Helm 已经填补了这个空白,并且发展得更快(例如,支持 Kustomize 的 Helmfile)。Kubernetes Operator 框架是另一个来自 Kubernetes 上游的东西,现在 OpenShift 也支持。在我看来,这对于 RedHat 和 OpenShift 来说并不意外,他们不是在与其他开源项目竞争,而是在为开源生态系统提供支持,对于他们来说,生态系统越强大越好。
我们的大部分配置都可以使用 Helm Charts 进行模板化。唯一似乎难以模板化的是 ImageStreamTag 对象,因为它们包含许多特定信息,例如每个镜像层的 sha256。由于我们要运行的标签随着软件的更改而变化,因此使用 Helmfile 定义我们环境的“形状”,然后使用 oc 将特定的镜像流标签拉入项目(即命名空间)中,这种方式对我们来说是很自然的。

正文完