ヘルムチャートとテンプレートの操作の基本-パート2

このチュートリアルでは、HelmがKubernetesアプリケーションの管理を簡素化するのにどのように役立つかについて簡単に説明し、Helmを使用して基本的なグラフを作成する方法を学びます。







このチュートリアルでは、Helmテンプレートdeployment.yaml



をテンプレートからYAMLマニフェストに変換する方法について説明します







この記事は、従来のプログラミングリファレンスマニュアルに対応していません。演算子と関数はアルファベット順にリストされています。







この記事では、deployment.yaml



最初から最後まで説明するために必要に応じてテンプレートの構文について説明します







テンプレートでの値の使用



参考までに、完全なdeployment.yamlファイルを次に示します。







apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "myhelm1.fullname" . }}
  labels:
    app.kubernetes.io/name: {{ include "myhelm1.name" . }}
    helm.sh/chart: {{ include "myhelm1.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app.kubernetes.io/name: {{ include "myhelm1.name" . }}
      app.kubernetes.io/instance: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app.kubernetes.io/name: {{ include "myhelm1.name" . }}
        app.kubernetes.io/instance: {{ .Release.Name }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}

          terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}

          command: ['sh', '-c', 'sleep 60']

      {{- with .Values.nodeSelector }}
      nodeSelector:
        {{- toYaml . | nindent 8 }}
      {{- end }}
    {{- with .Values.affinity }}
      affinity:
        {{- toYaml . | nindent 8 }}
    {{- end }}
    {{- with .Values.tolerations }}
      tolerations:
        {{- toYaml . | nindent 8 }}
    {{- end }}
      
      





これからの抜粋deployment.yaml









    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
  replicas: {{ .Values.replicaCount }}
      app.kubernetes.io/instance: {{ .Release.Name }}
        app.kubernetes.io/instance: {{ .Release.Name }}
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
      
      





.Release.Name



そして、.Release.Service



の完全なリスト-オブジェクトに埋め込まれてhttps://docs.helm.sh/chart_template_guide/埋め込みオブジェクト。残念ながら、非常に長いWebページの特定の部分へのリンクはありません。下にスクロールして見つける必要があります。







以下は、deployment.yaml



使用した場合の最終ファイルの表示方法です。







helm install .\myhelm1\ --name test5 --dry-run --debug
      
      





このチュートリアルの前半では、コマンドを実行する必要はありません。読むだけです。(デバッグする場合でも、3行パターンの構文を調べるだけで出力が多すぎます。)







(完全なチュートリアルを読んだ後、もう一度読みたいと思うかもしれませんが、今回はテンプレートと値のファイルを編集し、デバッグを使用してhelm installを実行して再現/トレーニングします)







    app.kubernetes.io/instance: test5
    app.kubernetes.io/managed-by: Tiller
      app.kubernetes.io/instance: test5
        - name: myhelm1
          image: "radial/busyboxplus:base"
          imagePullPolicy: IfNotPresent
      
      





3 values.yaml:







          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
      
      





values.yaml









image:
  repository: radial/busyboxplus
  tag: base
  pullPolicy: IfNotPresent
      
      





— name: {{ .Chart.Name }} Chart.yaml. .







apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: myhelm1
version: 0.1.0
      
      





, — .







, YAML , {{ and }}



.







{{ }}



.







, , , (.)



.







, . .Chart.name



« , Chart



, name



».







With



**values.yaml** extract: 

nodeSelector:
    disktype: ssd
    gpu: Nvidia
      
      





**deployment.yaml** extract: 

      {{- with .Values.nodeSelector }}
      nodeSelector:
        {{- toYaml . | nindent 8 }}
      {{- end }}
      
      





:







      nodeSelector:
        disktype: ssd
        gpu: Nvidia
      
      





: YAML.







8 , deployment.yaml



{{- toYaml. | nindent 8}}









nindent 8



8 .







with



— . .Values.nodeSelector



: Yaml (toYaml



).

toYaml



.Values.nodeSelector



. .

sum(1,34,454)



toYaml(.)



… .







| , Linux.







affinity



: tolerations



: with



.







, , with . MODIFYING SCOPE USING WITH







include



, , deployment.yaml



values.yaml



, Chart.yaml



.







service.yaml



:







.







apiVersion: v1
kind: Service
metadata:
  name: {{ include "myhelm1.fullname" . }}
  labels:
    app.kubernetes.io/name: {{ include "myhelm1.name" . }}
    helm.sh/chart: {{ include "myhelm1.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
  type: {{ .Values.service.type }}
  ports:
    - port: {{ .Values.service.port }}
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app.kubernetes.io/name: {{ include "myhelm1.name" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
      
      





range () Helm



3 ingress.yaml









{{- if .Values.ingress.enabled -}}
{{- $fullName := include "myhelm1.fullname" . -}}
{{- $ingressPaths := .Values.ingress.paths -}}
... rest of yaml ....
    {{- end }}
  {{- end }}
{{- end }}
      
      





**values.yaml** extract: 
ingress:
  enabled: false
      
      





ingress.yaml



if



..., 1 . — false, yaml — .







2 3 , Helm.







{{ }}









/ . {{-









-}}



, — — .







values.yaml









ingress:
  enabled: false
  hosts:
    - chart-example.local
  tls:
    - secretName: chart-example-tls
      hosts:
        - chart-example.local-1
        - chart-example.local-2
        - chart-example.local-3
      
      





deployment.yaml :







{{- if .Values.ingress.tls }}
  tls:
  {{- range .Values.ingress.tls }}
    - hosts:
      {{- range .hosts }}
        - {{ . | quote }}
      {{- end }}
      secretName: {{ .secretName }}
  {{- end }}
{{- end }}
      
      





:







spec:
  tls:
    - hosts:
        - "chart-example.local-1"
        - "chart-example.local-2"
        - "chart-example.local-3"
      secretName: chart-example-tls
      
      





, (range



) . quote



.







range .Values.ingress.tls



, . 3 , .







Extract of **values.yaml** 

ingress:
  enabled: false
  hosts:
    - chart-example.local
  tls:
    - secretName: chart-example-tls-a
      hosts:
        - chart-example.local-1-a
        - chart-example.local-2-a
        - chart-example.local-3-a

    - secretName: chart-example-tls-b
      hosts:
        - chart-example.local-1-b
        - chart-example.local-2-b

    - secretName: chart-example-tls-c
      hosts:
        - chart-example.local-1-c
        - chart-example.local-2-c
        - chart-example.local-3-c
        - chart-example.local-4-c
      
      





:







  tls:
    - hosts:
        - "chart-example.local-1-a"
        - "chart-example.local-2-a"
        - "chart-example.local-3-a"
      secretName: chart-example-tls-a
    - hosts:
        - "chart-example.local-1-b"
        - "chart-example.local-2-b"
      secretName: chart-example-tls-b
    - hosts:
        - "chart-example.local-1-c"
        - "chart-example.local-2-c"
        - "chart-example.local-3-c"
        - "chart-example.local-4-c"
      secretName: chart-example-tls-c
      
      





importance of -



.







{{- if .Values.ingress.tls }}
  tls:
  {{- range .Values.ingress.tls }}
    - hosts:
      {{- range .hosts }}
        - {{ . | quote }}
      {{- end }}
      secretName: {{ .secretName }}
  {{- end }}
{{- end }}
      
      





:







{{ if .Values.ingress.tls }}
  tls:
  {{ range .Values.ingress.tls }}
    - hosts:
      {{ range .hosts }}
        - {{ . | quote }}
      {{ end }}
      secretName: {{ .secretName }}
  {{ end }}
{{ end }}
      
      





:







  tls:
    - hosts:

        - "chart-example.local-1-a"

        - "chart-example.local-2-a"

        - "chart-example.local-3-a"

      secretName: chart-example-tls-a

    - hosts:

        - "chart-example.local-1-b"

        - "chart-example.local-2-b"

      secretName: chart-example-tls-b

    - hosts:

        - "chart-example.local-1-c"

        - "chart-example.local-2-c"

        - "chart-example.local-3-c"

        - "chart-example.local-4-c"

      secretName: chart-example-tls-c

      
      





.







_helpers.tpl



, .







: name: {{include "myhelm1.fullname". }}



— .







include









include YAML-.







_helpers.tpl



— , .







_helpers.tpl:









{{- define "myhelm1.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
      
      





. , .







myhelm1.name : .Chart.Name.







, myhelm1.name .Values.nameOverride



.







trunc 63



63 .







trimSuffix "-"



-



.







trimSuffix "-



" -



.







( , , )







app.kubernetes.io/name: {{ include "myhelm1.name" . }}















app.kubernetes.io/name: myhelm1









:







helm.sh/chart: {{ include "myhelm1.chart" . }}















helm.sh/chart: myhelm1-0.1.0









:







{{- define "myhelm1.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
      
      





printf "%s-%s" .Chart.Name .Chart.Version



.Chart.Name



.Chart.Version



— .







replace "+" "_"



.







, , 10- myhelm1.fullname



.







, , if / else :







if condition
 do something
else
 do something else
end
      
      





{{ }}



.







Helm



Helm .







The Chart Developer's Guide: https://helm.sh/docs/topics/charts/







The Chart Template Developer's Guide: https://docs.helm.sh/chart_template_guide/







– . — .







, Helm .







:











• .







— , , — .







values.yaml



, , :







replicaCount: 1

terminationGracePeriodSeconds: 30

image:
  repository: radial/busyboxplus
  tag: base
  pullPolicy: IfNotPresent
      
      





, ./myhelm1/.helmignore



, :







NOTES.txt
test-connection.yaml
service.yaml
ingress.yaml
      
      





deployment.yaml, :







apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: {{ include "myhelm1.name" . }}
    helm.sh/chart: {{ include "myhelm1.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
spec:
  replicas: {{ .Values.replicaCount }}
  template:
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}

          terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
      
      





, , yaml ( ), .







:







helm install .\myhelm1\  --name test5 --dry-run --debug
      
      





, :







PS C:\k8> helm install .\myhelm1\  --name test5 --dry-run --debug
[debug] Created tunnel using local port: '50327'

[debug] SERVER: "127.0.0.1:50327"

[debug] Original chart version: ""
[debug] CHART PATH: C:\k8\myhelm1

NAME:   test5
REVISION: 1
RELEASED: Fri Feb 15 13:47:49 2019
CHART: myhelm1-0.1.0
USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
image:
  pullPolicy: IfNotPresent
  repository: radial/busyboxplus
  tag: base
replicaCount: 1
terminationGracePeriodSeconds: 30

HOOKS:
MANIFEST:

---
# Source: myhelm1/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: myhelm1
    helm.sh/chart: myhelm1-0.1.0
    app.kubernetes.io/instance: test5
spec:
  replicas: 1
  template:
    spec:
      containers:
        - name: myhelm1
          image: "radial/busyboxplus:base"
          imagePullPolicy: IfNotPresent

          terminationGracePeriodSeconds: 30
      
      





«» grep.







helm install .\myhelm1\  --name test5 --dry-run --debug | grep -vE 'debug]|NAME|REVIS|RELEA|ART:|OKS:|FEST:'
      
      





. , : yaml .







USER-SUPPLIED VALUES:
{}

COMPUTED VALUES:
image:
  pullPolicy: IfNotPresent
  repository: radial/busyboxplus
  tag: base
replicaCount: 1
terminationGracePeriodSeconds: 30

---
# Source: myhelm1/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: myhelm1
    helm.sh/chart: myhelm1-0.1.0
    app.kubernetes.io/instance: test5
spec:
  replicas: 1
  template:
    spec:
      containers:
        - name: myhelm1
          image: "radial/busyboxplus:base"
          imagePullPolicy: IfNotPresent

          terminationGracePeriodSeconds: 30
      
      





:

deployment.yaml









apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: {{ include "myhelm1.name" . }}
    helm.sh/chart: {{ include "myhelm1.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
spec: #-------------------->> learn spacing << ------------------------
  replicas1: {{ .Values.replicaCount }}
  replicas2:   {{ .Values.replicaCount }}
  replicas3:    {{ .Values.replicaCount }}
  replicas4: '{{ .Values.replicaCount }}'
  replicas5: "{{ .Values.replicaCount }}"
  replicas6: "{{    .Values.replicaCount }}"
  replicas7: "{{    .Values.replicaCount       }}"
  replicas: "{{    .Values.replicaCount       }}'
  replicas: '{{    .Values.replicaCount       }}"
  replicas: {{    .Values.replicaCount       }}"
  replicas: "{{    .Values.replicaCount       }}

  template:
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image1: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          image2: "{{ .Values.image.repository }} {{ .Values.image.tag }}"
          image3: "{{ .Values.image.repository }}{{ .Values.image.tag }}"
          image4: {{ .Values.image.repository }}{{ .Values.image.tag }}

          imagePullPolicy1: {{ .Values.image.pullPolicy }}
          imagePullPolicy2: {{ .Values.image.pullPolicyzzz }}
          imagePullPolicy3: {{ .Values.image.pullPolicyeeeeeeeeeee }}

          terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
      
      





:







spec: #-------------------->> learn spacing << ------------------------
  replicas1: 1
  replicas2:   1
  replicas3:    1
  replicas4: '1'
  replicas5: "1"
  replicas6: "1"
  replicas7: "1"
  template:
    spec:
      containers:
        - name: myhelm1
          image1: "radial/busyboxplus:base"
          image2: "radial/busyboxplus base"
          image3: "radial/busyboxplusbase"
          image4: radial/busyboxplusbase

          imagePullPolicy1: IfNotPresent
          imagePullPolicy2:
          imagePullPolicy3:

          terminationGracePeriodSeconds: 30
      
      





, .







, , . , , .







deployment.yaml









apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: {{ include "myhelm1.name" . }}
    helm.sh/chart: {{ include "myhelm1.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
spec: #
  replicas1: {{ .Values.replicaCount }}

  template:
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image1: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

          imagePullPolicy-correct: {{ .Values.image.pullPolicy }}

          imagePullPolicy1: {{ Values.image.pullPolicy }}
          imagePullPolicy2: {{ .Valu.image.pullPolicyzzz }}
          imagePullPolicy3: {{ ..Values.image.pullPolicyeeeeeeeeeee }}
      
      





:







helm install .\myhelm1\  --name test5 --dry-run --debug | grep -vE 'debug]|NAME|REVIS|RELEA|ART:|OKS:|FEST:'
      
      





Error: parse error in "myhelm1/templates/deployment.yaml": template: myhelm1/templates/deployment.yaml:19: function "Values" not defined
      
      





, , .







Error: parse error in "myhelm1/templates/deployment.yaml": template: myhelm1/templates/deployment.yaml:21: unexpected . after term "."
      
      





, , .







Error: render error in "myhelm1/templates/deployment.yaml": template: myhelm1/templates/deployment.yaml:20:36: executing "myhelm1/templates/deployment.yaml" at 
<.Valu.image.pullPoli...>: can't evaluate field image in type interface {}
      
      





helm install .\myhelm1\  --name test5 --dry-run --debug | grep -vE 'debug]|NAME|REVIS|RELEA|ART:|OKS:|FEST:'
      
      





:







apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: {{ include "myhelm1.name" . }}
    helm.sh/chart: {{ include "myhelm1.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
spec: #
  replicas1: {{ .Values.replicaCount }}

  template:
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image1: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

          imagePullPolicy1: {{ quote .Values.image.pullPolicy }}

          imagePullPolicy2: {{ .Values.image.pullPolicy | quote }}

          imagePullPolicy3: "{{ .Values.image.pullPolicy }}"

          imagePullPolicy4: {{ .Values.image.pullPolicy | upper }}

          imagePullPolicy5: {{ .Values.image.pullPolicy | lower }}

{{ $variable := 123 }}

          variable: $variable           
          variable: {{ $variable }}
      
      





. 3 — use those -, . 3 .







Helm , Python, .







:







      containers:
        - name: myhelm1
          image1: "radial/busyboxplus:base"

          imagePullPolicy1: "IfNotPresent"

          imagePullPolicy2: "IfNotPresent"

          imagePullPolicy3: "IfNotPresent"

          imagePullPolicy4: IFNOTPRESENT

          imagePullPolicy5: ifnotpresent

          variable: $variable
          variable: 123     
      
      





. , imagePullPolicy 1 3 . ? :







deployment.yaml









apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: {{ include "myhelm1.name" . }}
    helm.sh/chart: {{ include "myhelm1.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
spec: #
  replicas1: {{ .Values.replicaCount }}

  template:
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image1: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"

#          imagePullPolicy1: {{ quote .Values.image.pullPolicy }}
          imagePullPolicy1: {{ quote .Values.image.pullPolicy }}

#          imagePullPolicy2: {{ .Values.image.pullPolicy | quote }}
          imagePullPolicy2: {{ .Values.image.pullPolicy | quote }}

          imagePullPolicy3: " .Values.image.pullPolicy "
          imagePullPolicy3: "{{ .Values.image.pullPolicy }}"

          imagePullPolicy4:  .Values.image.pullPolicy | upper 
          imagePullPolicy4: {{ .Values.image.pullPolicy | upper }}

          imagePullPolicy5:  .Values.image.pullPolicy | lower 
          imagePullPolicy5: {{ .Values.image.pullPolicy | lower }}

{{ $variable := 123 }}

          variable: $variable           
          variable: {{ $variable }}
      
      





helm install .\myhelm1\  --name test5 --dry-run --debug | grep -vE 'debug]|NAME|REVIS|RELEA|ART:|OKS:|FEST:'
      
      





:







        - name: myhelm1
          image1: "radial/busyboxplus:base"

#          imagePullPolicy1: "IfNotPresent"
          imagePullPolicy1: "IfNotPresent"

#          imagePullPolicy2: "IfNotPresent"
          imagePullPolicy2: "IfNotPresent"

          imagePullPolicy3: " .Values.image.pullPolicy "
          imagePullPolicy3: "IfNotPresent"

          imagePullPolicy4:  .Values.image.pullPolicy | upper
          imagePullPolicy4: IFNOTPRESENT

          imagePullPolicy5:  .Values.image.pullPolicy | lower
          imagePullPolicy5: ifnotpresent
      
      





. .







{{ and }}



. .







, , — { { and { }



{{ and }}



… 1 .







{ and }



{{ and }}









          imagePullPolicy1: { { quote .Values.image.pullPolicy } }
          imagePullPolicy1: {{ quote .Values.image.pullPolicy }}

          imagePullPolicy2: { .Values.image.pullPolicy | quote }
          imagePullPolicy2: {{ .Values.image.pullPolicy | quote }}
      
      





:







          imagePullPolicy1: { { quote .Values.image.pullPolicy } }
          imagePullPolicy1: "IfNotPresent"

          imagePullPolicy2: { .Values.image.pullPolicy | quote }
          imagePullPolicy2: "IfNotPresent"
      
      





helm install .\myhelm1\ --set replicaCount={1,2,3}  --name test5 --dry-run --debug | grep -vE 'debug]|NAME|REVIS|RELEA|ART:|OKS:|FEST:'
      
      







Helm https://github.com/helm/charts 300 Helm.







: .







, 80% . ( 2 10 ).







4 :







• Helm

• 2

• 300 Helm

• , 3







Helm .







, Helm.







https://github.com/helm/charts/blob/master/stable/lamp/templates/NOTES.txt







, LAMP .Values.ingress.enabled









{{- if .Values.ingress.enabled }}

INGRESS:
      Please make sure that you have an ingress controller instance {{ if .Values.ingress.ssl }}and a lego instance
      {{- end -}} running
      and that you have configured the A Records of {{ template "lamp.domain" . }} and its
      subdomains to point to your ingress controllers ip address.
{{- else }}
      
      





, : .







NOTES.txt , : https://github.com/helm/charts/blob/master/stable/lamp/templates/NOTES.txt







1. You can now connect to the following services:

      {{- if not .Values.ingress.enabled }}
      export CHARTIP=$(kubectl get svc {{ template "lamp.fullname" . }} --output=jsonpath={.status.loadBalancer.ingress..ip})
      {{- end }}

      Main Site:
        {{- if .Values.ingress.enabled }}
        http{{ if .Values.ingress.ssl }}s{{ end }}://{{ template "lamp.domain" . }}
        {{- else }}
        http://$CHARTIP
        {{- end }}
      {{- if .Values.phpmyadmin.enabled }}

      PHPMyAdmin:
      {{- if .Values.ingress.enabled }}
        http{{ if .Values.ingress.ssl }}s{{ end }}://{{ .Values.phpmyadmin.subdomain }}.{{ template "lamp.domain" . }}
      {{- else }}
        http://$CHARTIP:{{ .Values.phpmyadmin.port }}
      {{- end }}
      {{- end }}
      
      





— , : https://github.com/helm/charts/blob/master/stable/mongodb/templates/NOTES.txt







{{- if contains .Values.service.type "LoadBalancer" }}
{{- if not .Values.mongodbRootPassword }}
-------------------------------------------------------------------------------
 WARNING

    By specifying "service.type=LoadBalancer" and not specifying "mongodbRootPassword"
    you have most  likely exposed the MongoDB service externally without any
    authentication mechanism.

    For security reasons, we strongly suggest that you switch to "ClusterIP" or
    "NodePort". As alternative, you can also specify a valid password on the
    "mongodbRootPassword" parameter.

-------------------------------------------------------------------------------
{{- end }}
{{- end }}
      
      





, .Values.service.type



"NodePort



", "LoadBalancer



" "ClusterIP": https://github.com/helm/charts/blob/master/stable/mongodb/templates/NOTES.txt







To connect to your database from outside the cluster execute the following commands:

{{- if contains "NodePort" .Values.service.type }}

    export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
    export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "mongodb.fullname" . }})
    mongo --host $NODE_IP --port $NODE_PORT {{- if .Values.usePassword }} --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD{{- end }}

{{- else if contains "LoadBalancer" .Values.service.type }}

  NOTE: It may take a few minutes for the LoadBalancer IP to be available.
        Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "mongodb.fullname" . }}'

    export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "mongodb.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
    mongo --host $SERVICE_IP --port {{ .Values.service.nodePort }} {{- if .Values.usePassword }} --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD{{- end }}

{{- else if contains "ClusterIP" .Values.service.type }}

    kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ template "mongodb.fullname" . }} 27017:27017 &
    mongo --host 127.0.0.1 {{- if .Values.usePassword }} --authenticationDatabase admin -p $MONGODB_ROOT_PASSWORD{{- end }}

{{- end }}
      
      





3 . ( … ).







.Files.Get



https://docs.helm.sh/chart_template_guide/… … ( ) , .







ヘルムリポジトリ内80のユースケースがあります.Files.Get.





https://github.com/helm/charts/search?utf8=%E2%9C%93&q=.Files.Get&type =

私が5異なる使用見つかった場合、最初の10回の結果で.Files.Get.





学ぶためには、 Helmの詳細については、https://github.com/helm/charts/tree/master/stableにアクセスしてください








All Articles