Helm charts 编写模板说明
目录
预置条件
适用于Kubernetes v1.12.1及以上,Helm v3.4.2及以上。
以test-cmdb应用为例进行说明,test-cmdb为部署在k8s中的web 应用
目录结构
| |
目录及文件描述:
| 类型 | 名称 | 描述 |
|---|---|---|
| D | test-cmdb | 应用名称,根据实际业务应用进行命名。 |
| F | Chart.yaml | 文件包含了该chart的描述。 |
| D | files | 配置文件目录 |
| F | application.properties | 配置文件 |
| D | templates | 目录包括了模板文件。当Helm评估chart时,会通过模板渲染引擎将所有文件发送到templates/目录中。 然后收集模板的结果并发送给Kubernetes。 |
| F | configmap.yaml | configmap模板 |
| F | deployment.yaml | deployment模板 |
| F | _helpers.tpl | 放置可以通过chart复用的模板辅助对象 |
| F | ingress.yaml | ingress模板。 |
| F | NOTES.txt | chart的"帮助文本"。会在用户执行helm install时展示。 |
| F | service.yaml | service模板。 |
| F | values.yaml | chart的默认值。会在用户执行helm install 或 helm upgrade时被覆盖。 |
其中,类型:D,目录;F,文件。
配置资源
一个完整的应用部署通常由应用名称、镜像名称及tag、环境变量、资源限额、端口监听、端口映射、目录/文件挂载、配置文件、网关规则等组成。通过helm将应用模板化,仅需要简单配置些许地方即可。
应用名称
文件名 key Chart.yaml name values.yaml fullnameOverride 镜像名称及tag
文件名 key values.yaml image.repository values.yaml image.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.yaml env.name values.yaml env.value values.yaml env.valueFrom.configMapKeyRef.name values.yaml env.valueFrom.configMapKeyRef.key 资源限额
文件名 key values.yaml resources.requests.cpu values.yaml resources.requests.memory values.yaml resources.limits.cpu values.yaml resources.limits.memory 端口监听
文件名 key values.yaml ports.containerPort values.yaml ports.protocol values.yaml ports.name 端口映射
文件名 key values.yaml service.ports.name values.yaml service.ports.port values.yaml service.ports.targetPort 目录/文件挂载
文件名 key values.yaml volumeMounts.name values.yaml volumeMounts.mountPath values.yaml volumeMounts.readOnly values.yaml volumeMounts.subPath values.yaml volumes.name values.yaml volumes.hostpath.path 配置文件
文件名 key values.yaml cm.name values.yaml cm.configmap.name 网关规则
文件名 key values.yaml ingress.annotations values.yaml ingress.tls values.yaml ingress.hosts.paths.path values.yaml ingress.hosts.paths.pathType values.yaml ingress.hosts.paths.port
部署测试
将准备好的chart放到ZCM部署主机$HELM_PATH/charts目录下,镜像推送到对应环境的镜像仓库中,并在$HELM_PATH/charts/values.yaml中配置镜像信息,
如镜像10.45.80.1/iplatform/zcm-crms:T_20220411015401,需配置对应的信息如下:
| |
执行部署操作
| |
也可执行其他相关操作
升级
| |
卸载
| |