假设,我们有两个kubernetes环境,一个是基于Windows的k8s集群环境,一个是基于linux的k8s集群环境。两者都有不同的 kubeconfig,没有混淆(不是一个 k8s 集群中的 windows 和 linux)。
问题: 如果我们部署到基于 windows 的 k8s 集群,其中
nodeSelector
名称在 helm chart 中定义并且它应该使用“kind:deployment”。使用我们用于 windows k8s 集群的相同 helm chart,如果我们部署到基于 linux 的 k8s 集群,适当的 nodeSelector
linux 名称也在 helm chart 中定义,它应该使用“kind: daemonset”。
我们如何使用 helm chart(使用模板或 _helpers.tpl)实现,有没有我可以看到的例子?
因为你有两个独立的集群,在我的 helm chart 中,我的模板目录中可能有两个清单。我会在我的清单周围使用
if
语句来确定该模板是否已呈现。例如,在 values.yaml
中有一个值,它指定类似 nodeOS
的值,并且具有可能的值 windows
和 linux
然后你可以像这样构建一个清单
部署.yaml
{{- if eq .Values.nodeOS "windows" }}
apiVersion: apps/v1
kind: Deployment
... rest of manifest
{{- end }}
daemonset.yaml
{{- if eq .Values.nodeOS "linux" }}
apiVersion: apps/v1
kind: Daemonset
... rest of manifest
{{- end }}
这会给你一个单一的清单,你可以通过执行以下操作来确定在安装时呈现的内容
helm install <chart_name> . --set=nodesOS="windows"
(Would only deploy the deployment)
helm install <chart_name> . --set=nodesOS="linux"
(只会部署守护进程)