为什么“{{.Release.namespace}}”呈现为空?
Why is "{{.Release.namespace}}" rendered empty?
我了解 {{.Release.namespace}}
将呈现 helm
安装应用程序所在的命名空间。在这种情况下,helm template
命令会将其呈现为空字符串(因为它还不知道发布命名空间)。
然而,令我惊讶的是 helm upgrade --install
命令(我没有尝试过其他命令,例如 helm install
)在某些情况下也会将其呈现为空。
这是我的 helm 图表模板示例:
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}}
放在了 2 个地方:
- 在
metadata.namespace
字段中
- 在
metadata.annotations.testAnnotate
字段中。
但它只在 metadata.namespace
字段上呈现正确的命名空间。知道为什么吗?
生成的值.Release.Namespace
区分大小写。 "namespace"中的字母N要大写
我了解 {{.Release.namespace}}
将呈现 helm
安装应用程序所在的命名空间。在这种情况下,helm template
命令会将其呈现为空字符串(因为它还不知道发布命名空间)。
然而,令我惊讶的是 helm upgrade --install
命令(我没有尝试过其他命令,例如 helm install
)在某些情况下也会将其呈现为空。
这是我的 helm 图表模板示例:
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}}
放在了 2 个地方:
- 在
metadata.namespace
字段中 - 在
metadata.annotations.testAnnotate
字段中。
但它只在 metadata.namespace
字段上呈现正确的命名空间。知道为什么吗?
生成的值.Release.Namespace
区分大小写。 "namespace"中的字母N要大写