头盔查找总是空的

Helm lookup always empty

在部署 Kubernetes 应用程序时,我想检查资源是否已经存在。如果是这样,则不应呈现。为了归档此行为,使用了 helm 的 lookup function。部署时似乎总是空的(没有干-运行)。知道我做错了什么吗?

    ---
{{- if not (lookup "v1" "ServiceAccount" "my-namespace" "my-sa") }}
apiVersion: v1
kind: ServiceAccount
metadata:
  name: {{ .Chart.Name }}-{{ .Values.environment }}
  namespace: {{ .Values.namespace }}
  labels: 
    app:  {{ $.Chart.Name }}
    environment: {{ .Values.environment }}
  annotations:
    "helm.sh/resource-policy": keep
    iam.gke.io/gcp-service-account: "{{ .Chart.Name }}-{{ .Values.environment }}@{{ .Values.gcpProjectId }}.iam.gserviceaccount.com"
{{- end }}

运行ning 相应的 kubectl 命令 return 预期的服务帐户

kubectl get ServiceAccount my-sa -n my-namespace 列出预期的服务帐户

头盔版本:3.5.4

我认为你不能使用这个 if-statement 来验证你想要的。

查找功能 returns 通过查找找到的对象列表。因此,如果您想验证没有具有您指定属性的服务帐户,您应该检查返回的列表是否为空。

测试类似

---
{{ if eq (len (lookup "v1" "ServiceAccount" "my-namespace" "my-sa")) 0 }}
apiVersion: v1
kind: ServiceAccount
metadata:
  name: {{ .Chart.Name }}-{{ .Values.environment }}
  namespace: {{ .Values.namespace }}
  labels: 
    app:  {{ $.Chart.Name }}
    environment: {{ .Values.environment }}
  annotations:
    "helm.sh/resource-policy": keep
    iam.gke.io/gcp-service-account: "{{ .Chart.Name }}-{{ .Values.environment }}@{{ .Values.gcpProjectId }}.iam.gserviceaccount.com"
{{- end }}

参见:https://helm.sh/docs/chart_template_guide/functions_and_pipelines/#using-the-lookup-function