내 차트 만들기1

내장 객체, 변수 주입 우선순위, 사용자 정의 변수



1. Helm 명령어


Command with Show, Template for Helm.

1-1) Chart Template 생성

helm create mychart

1-2) Show 명령

helm show values .
helm show chart .
helm show readme .
helm show all .

vi README.md

# Title
## Introduction
This is README.md

1-3) Template 명령

helm template mychart .


Command with Get, Install for Helm.

1-4) Chart 배포

helm install mychart .

1-5) Get 명령

helm get manifest mychart
helm get notes mychart
helm get values mychart
helm get all mychart

helm get values 비교

helm uninstall mychart
helm install mychart . -f values.yaml
helm install mychart . --set replicaCount=3


2. 내장 객체


Build in Objects for Helm.

2-1) configmap 추가

vi cm-object.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: built-in-object
data:
  .Release: ______________________________________
  .Release.Name: {{ .Release.Name }}
  .Release.Namespace: {{ .Release.Namespace }}
  .Release.IsUpgrade: "{{ .Release.IsUpgrade }}"
  .Release.IsInstall: "{{ .Release.IsInstall }}"
  .Release.Revision: "{{ .Release.Revision }}"
  .Release.Service: {{ .Release.Service }}
  .Values: ______________________________________
  .Values.replicaCount: "{{ .Values.replicaCount }}"
  .Values.image.repository: {{ .Values.image.repository }}
  .Values.image.pullPolicy: {{ .Values.image.pullPolicy }}
  .Values.service.type: {{ .Values.service.type }}
  .Values.service.port: "{{ .Values.service.port }}"
  .Chart: ______________________________________
  .Chart.Name: {{ .Chart.Name }}
  .Chart.Description: {{ .Chart.Description }}
  .Chart.Type: {{ .Chart.Type }}
  .Chart.Version: {{ .Chart.Version }}
  .Chart.AppVersion: {{ .Chart.AppVersion }}
  .Template: ______________________________________
  .Template.BasePath: {{ .Template.BasePath }}
  .Template.Name: {{ .Template.Name }}

templates 폴더 안에 불필요한 파일 삭제

rm -rf deployment.yaml hpa.yaml ingress.yaml serviceaccount.yaml tests

install 배포

helm install mychart . -n default
helm get manifest mychart 
helm upgrade mychart . -n default


3. 변수 주입 우선순위


values yaml for Helm.

3-1) configmap 추가

vi cm-values.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: values-yaml
data:
  env: {{ .Values.configMapData.env }}
  log: {{ .Values.configMapData.log }}
  path: "{{ .Values.configMapData.path }}"

3-2) values.yaml에 해당 속성 추가

configMapData:
  env: dev
  log: debug
  path: "/data"

3-3) 확인

helm template mychart .

3-4) Prod용 values_prod.yaml 파일 추가

vi values_prod.yaml

configMapData:
  env: prod
  log: info

3-5) -f 옵션 적용

helm template mychart . -f ./values_prod.yaml

3-6) -f 옵션 적용, –set 옵션 적용

helm template mychart . -f ./values_prod.yaml --set configMapData.log=debug


4. 사용자 정의 변수


helpers tpl for Helm.

_helpers.tpl 파일

{{/*
Expand the name of the chart.
*/}}
{{- define "mychart.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Common labels
*/}}
{{- define "mychart.labels" -}}
helm.sh/chart: {{ include "mychart.chart" . }}
{{ include "mychart.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

service.yaml 파일

apiVersion: v1
kind: Service
metadata:
  name: {{ include "mychart.fullname" . }}
  labels:
    {{- include "mychart.labels" . | nindent 4 }}
helm template mychart .


Referenece


Helm

Others