仅当存在自定义资源定义时才使用 helm 创建 kubernetes 资源

LIv*_*nov 4 kubernetes kubernetes-helm

我有一个部署了许多 Kubernetes 资源的掌舵图。其中之一是属于自定义资源定义 (CRD) 类型(ServiceMonitor由 使用prometheus-operator)的资源。

我正在寻找一种方法,如何“告诉” helm 仅当集群中定义了这样的 CRD 时我才想要创建此资源,或者忽略由缺少此类 CRD 导致的错误。

这可能吗,我怎样才能做到这一点?

Dav*_*aze 9

Helm 的Capabilities对象可以告诉您是否在集群中安装了整个 API 类。我认为它不能测试特定的自定义资源类型。

在您的.tpl文件中,您可以将整个文件包装在一个{{ if }}...{{ end }}块中。Helm 并不特别关心文件的渲染版本是否为空。

这将引导您进入如下文件:

{{ if .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" -}}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  ...
{{ end -}}
Run Code Online (Sandbox Code Playgroud)

如果操作员安装在集群中,则会安装,如果没有,则跳过。