{{.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}}
を2つの場所に配置します。
metadata.namespace
フィールドmetadata.annotations.testAnnotate
フィールド。ただし、metadata.namespace
フィールドに正しい名前空間のみをレンダリングします。理由は何ですか?
生成された値.Release.Namespace
は大文字と小文字が区別されます。 「名前空間」の文字Nは大文字にする必要があります。