导语:希望能够在helm安装的时候判断namespace是否存在以便触发不同的操作。
官方文档
测试 1.有namespace deepwise的时候是创建svc deepwise 2.没有deqpwise的时候创建svc deqpwise
{{- $previousReleaseInstalled := false -}}
{{- range $index, $namespace := (lookup "v1" "Namespace" "" "").items }}
{{- if hasSuffix "deqpwise" $namespace.metadata.name }}
{{- $previousReleaseInstalled = true -}}
{{- end }}
{{- end }}
{{- if $previousReleaseInstalled -}}
apiVersion: v1
kind: Service
metadata:
name: deepwise
spec:
ports:
- port: 11381
targetPort: 11381
selector:
k8s-app: aiserver
{{- else -}}
apiVersion: v1
kind: Service
metadata:
name: deqpwise
spec:
ports:
- port: 11381
targetPort: 11381
selector:
k8s-app: aiserver
{{- end }}
测试下来发现dry-run或者output无法生成yaml内容,只有执行的时候才能验证。应该是默认参数是false的缘故。这样就可以
{{- $previousReleaseInstalled := true -}}
{{- range $index, $namespace := (lookup "v1" "Namespace" "" "").items }}
{{- if hasSuffix "test" $namespace.metadata.name }}
{{- $previousReleaseInstalled = false -}}
{{- end }}
{{- end }}
{{- if $previousReleaseInstalled -}}
apiVersion: v1
kind: Namespace
metadata:
name: test
{{- end }}
这样如果namespace存在helm就不会报错了
参考
https://helm.sh/docs/chart_template_guide/functions_and_pipelines/#using-the-lookup-function
https://cloud.tencent.com/developer/ask/sof/107093454