web-dev-qa-db-ja.com

「{{.Release.namespace}}」が空になっているのはなぜですか?

{{.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フィールドに正しい名前空間のみをレンダリングします。理由は何ですか?

8
Agung Pratama

生成された値.Release.Namespaceは大文字と小文字が区別されます。 「名前空間」の文字Nは大文字にする必要があります。

14
Jaakko Pallari