为什么“ {{.Release.namespace}}”为空?

时间:2018-08-09 07:07:09

标签: kubernetes-helm

我知道{{.Release.namespace}}将呈现helm正在安装应用程序的名称空间。在这种情况下,helm template命令会将其呈现为空字符串(因为它尚不知道发布名称空间)。

但是,令我惊讶的是helm upgrade --install命令(我没有尝试过其他命令,例如helm install)在某些情况下也使它为空。

以下是我的舵图模板的示例:

apiVersion: v1
kind: Service
metadata:
  name: {{.Values.app.name}}-{{.Values.app.track}}-internal
  namespace: {{.Release.namespace}}
  annotations:
    testAnnotate: "{{.Release.namespace}}"
spec:
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  selector:
    app: {{.Values.app.name}}
    environment: {{.Values.app.env}}
    track: {{.Values.app.track}}
  type: ClusterIP

在该图表模板上调用helm upgrade --install(并成功安装)后,然后尝试查看资源的输出

> kubectl get -o yaml svc java-maven-app-stable-internal -n data-devops
apiVersion: v1
kind: Service
metadata:
  annotations:
    testAnnotate: ""
  creationTimestamp: 2018-08-09T06:56:41Z
  name: java-maven-app-stable-internal
  namespace: data-devops
  resourceVersion: "62906341"
  selfLink: /api/v1/namespaces/data-devops/services/java-maven-app-stable-internal
  uid: 5e888e6a-9ba1-11e8-912b-42010a9400fa
spec:
  clusterIP: 10.32.76.208
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: java-maven-app
    environment: stg
    track: stable
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

如您所见,我在两个地方放了{{.Release.namespace}}

  • metadata.namespace字段中
  • metadata.annotations.testAnnotate字段中。

但是它仅在metadata.namespace字段上呈现正确的名称空间。知道为什么吗?

1 个答案:

答案 0 :(得分:4)

生成的值.Release.Namespace区分大小写。 “名称空间”中的字母N应该大写。