Helm 安装/使用

创建 helm chart 模板文件
[gitlab-runner@Gitlab-Runner ~]$ helm create demo
[gitlab-runner@Gitlab-Runner ~]$ ll demo/
charts
Chart.yaml
templates
values.yaml ## 此文件用来设置默认值

rm -rf demo/templates/*

自定义 values.yaml
[gitlab-runner@Gitlab-Runner ~]$ cat > demo/values.yaml << ERIC
replicaCount: 1
deployment:
  serverIp: ''
  serverPort: ''

image:
  repository: ''
  pullPolicy: Always
  tag: ''

annotations:
  id: ''

ERIC




创建部署k8s的模板文件
[gitlab-runner@Gitlab-Runner ~]$ cat > demo/templates/deployment.yaml << ERIC
kind: Deployment
apiVersion: apps/v1
metadata:
  namespace: {{ .Release.Namespace }}
  name: {{ .Release.Name }}
  labels:
    app: {{ .Release.Name }}
    version: v1

spec:
  replicas: {{ .Values.replicaCount }}
  minReadySeconds: 5
  selector:
    matchLabels:
      app: {{ .Release.Name }}
      version: v1

  template:
    metadata:
      labels:
        app: {{ .Release.Name }}
        version: v1
      annotations:
        id: "{{ .Values.annotations.id }}"

    spec:
      terminationGracePeriodSeconds: 60
      containers:
        - name: {{ .Release.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          ports:
            - containerPort: 8080
              protocol: TCP
          resources:
            limits:
              cpu: '2'
              memory: 2Gi
            requests:
              cpu: '2'
              memory: 2Gi
          env:
            - name: SERVER_IP
              value: '{{ .Values.deployment.serverIp }}'
            - name: SERVER_PORT
              value: '{{ .Values.deployment.serverPort }}'
ERIC




生成 chart包
[gitlab-runner@Gitlab-Runner ~]$ helm package demo/ --version 0.0.1
Successfully packaged chart and saved it to: /home/gitlab-runner/test/demo-0.0.1.tgz




测试
helm template mssp-web-temp ./demo-0.0.1.tgz --output-dir . \
    --namespace mssp \
    --set image.repository=nginx \
    --set image.tag=1.19.0 \
    --set deployment.serverIp=172.1.1.1 \
    --set deployment.serverPort=8088


参数对照
helm template 这里是 .Release.Name ./demo-0.0.1.tgz --output-dir . \
    --namespace 这里是 .Release.Namespace \
    --set image.repository=这里是 .Values.image.repository \
    --set image.tag=这里是 .Values.image.tag \
    --set deployment.serverIp=这里是 .Values.deployment.serverIp \
    --set deployment.serverPort=这里是 .Values.deployment.serverPort






自定义父、子 Helm Chart 包

关注后解锁

测试运行

helm install my-test-chart parentchart/ --dry-run --debug




Helm3 推送文件到 Harbor仓库

分类: helm

毛巳煜

高级软件开发全栈架构师