如何使用带有头盔或其他工具的参数化模板来生成OpenShift / Kubernetes对象定义?

时间:2019-07-08 11:27:14

标签: kubernetes openshift kubernetes-helm openshift-origin openshift-enterprise

我想知道是否可以仅使用舵图来生成k8s对象本身。

我们正在使用由openshift管理的多个k8s集群。
Helm不适用于多个openshift集群,
因此我们认为使用oc会更好(主要用于多个集群的身份验证和授权)。

头盔动态k8s对象非常强大,我们希望继续使用它们。
可以告诉头盔从给定的yaml文件和values文件生成对象,并将它们传递给oc replace吗?

1 个答案:

答案 0 :(得分:4)

OpenShift拥有自己的内部模板引擎,该引擎与掌舵有明显的重叠,但集成度更高。

您可以在官方OpenShift文档的RequireJs部分中找到有关此文档的信息。

使用这些模板时,可以使用oc process命令从参数化模板中生成对象定义。

$ oc process -f my-rails-postgresql \
    -p POSTGRESQL_USER=bob \
    -p POSTGRESQL_DATABASE=mydatabase

您可以使用oc create

内联创建结果对象
$ oc process -f my-rails-postgresql \
    -p POSTGRESQL_USER=bob \
    -p POSTGRESQL_DATABASE=mydatabase \
    | oc create -f -

我个人认为使用OpenShift时掌舵是过大的,因为开箱即用的模板引擎通常就足够了。

如果您需要比这更复杂的东西,那么我倾向于将部署打包在ansible剧本,jinja2模板和Templates ansible模块中,而不是运行helm和tiller。