目录

Helm charts 编写模板说明

预置条件

适用于Kubernetes v1.12.1及以上,Helm v3.4.2及以上。

test-cmdb应用为例进行说明,test-cmdb为部署在k8s中的web 应用

目录结构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
test-cmdb  
├── Chart.yaml  
├── files  
│   └── application.properties  
├── templates  
│   ├── configmap.yaml  
│   ├── deployment.yaml  
│   ├── _helpers.tpl  
│   ├── ingress.yaml  
│   ├── NOTES.txt  
│   └── service.yaml  
└── values.yaml  
2 directories, 9 files

目录及文件描述:

类型名称描述
Dtest-cmdb应用名称,根据实际业务应用进行命名。
FChart.yaml文件包含了该chart的描述。
Dfiles配置文件目录
Fapplication.properties配置文件
Dtemplates目录包括了模板文件。当Helm评估chart时,会通过模板渲染引擎将所有文件发送到templates/目录中。 然后收集模板的结果并发送给Kubernetes。
Fconfigmap.yamlconfigmap模板
Fdeployment.yamldeployment模板
F_helpers.tpl放置可以通过chart复用的模板辅助对象
Fingress.yamlingress模板。
FNOTES.txtchart的"帮助文本"。会在用户执行helm install时展示。
Fservice.yamlservice模板。
Fvalues.yamlchart的默认值。会在用户执行helm install 或 helm upgrade时被覆盖。

其中,类型:D,目录;F,文件。

配置资源

一个完整的应用部署通常由应用名称、镜像名称及tag、环境变量、资源限额、端口监听、端口映射、目录/文件挂载、配置文件、网关规则等组成。通过helm将应用模板化,仅需要简单配置些许地方即可。

  • 应用名称

    文件名key
    Chart.yamlname
    values.yamlfullnameOverride
  • 镜像名称及tag

    文件名key
    values.yamlimage.repository
    values.yamlimage.tag

    当前的模板默认是以镜像名称与应用名称保持一致为前提的,如镜像10.45.80.1/iplatform/test-cmdb:C_20220214144619的名称为test-cmdb与应用名称test-cmdb保持一致。假如实际的应用名与镜像名称不一致,请自行修改_helpers.tpl中的fullimage部分。

    修改前

    1
    2
    3
    
    {{- define "zcm-tpl.fullimage" -}}  
    {{- .Values.global.repository }}/{{ .Values.image.repository }}:{{ index .Values .Chart.Name "image" "tag" | default .Chart.AppVersion }}  
    {{- end }}
    

    修改后

    1
    2
    3
    
    {{- define "zcm-tpl.fullimage" -}}  
    {{- .Values.global.repository }}/{{ .Values.image.repository }}:{{ index .Values "name-template" "image" "tag" | default .Chart.AppVersion }}  
    {{- end }}
    

    其中,name-template为实际的镜像名称,该镜像信息配置在$HELM_PATH/charts/values.yaml中,如果该文件中没有匹配的信息,当在部署时会提示异常。

  • 环境变量

    文件名key
    values.yamlenv.name
    values.yamlenv.value
    values.yamlenv.valueFrom.configMapKeyRef.name
    values.yamlenv.valueFrom.configMapKeyRef.key
  • 资源限额

    文件名key
    values.yamlresources.requests.cpu
    values.yamlresources.requests.memory
    values.yamlresources.limits.cpu
    values.yamlresources.limits.memory
  • 端口监听

    文件名key
    values.yamlports.containerPort
    values.yamlports.protocol
    values.yamlports.name
  • 端口映射

    文件名key
    values.yamlservice.ports.name
    values.yamlservice.ports.port
    values.yamlservice.ports.targetPort
  • 目录/文件挂载

    文件名key
    values.yamlvolumeMounts.name
    values.yamlvolumeMounts.mountPath
    values.yamlvolumeMounts.readOnly
    values.yamlvolumeMounts.subPath
    values.yamlvolumes.name
    values.yamlvolumes.hostpath.path
  • 配置文件

    文件名key
    values.yamlcm.name
    values.yamlcm.configmap.name
  • 网关规则

    文件名key
    values.yamlingress.annotations
    values.yamlingress.tls
    values.yamlingress.hosts.paths.path
    values.yamlingress.hosts.paths.pathType
    values.yamlingress.hosts.paths.port

部署测试

将准备好的chart放到ZCM部署主机$HELM_PATH/charts目录下,镜像推送到对应环境的镜像仓库中,并在$HELM_PATH/charts/values.yaml中配置镜像信息, 如镜像10.45.80.1/iplatform/zcm-crms:T_20220411015401,需配置对应的信息如下:

1
2
3
zcm-crms:  
  image:  
    tag: T_20220411015401

执行部署操作

1
2
cd $HELM_PATH/charts  
helm install zcm-crms ./zcm-crms -f values.yaml -n backend

也可执行其他相关操作

升级

1
helm upgrade zcm-crms ./zcm-crms -f values.yaml -n backend

卸载

1
helm uninstall zcm-crms -n backend