更新模板中函数备注信息

This commit is contained in:
2025-03-13 15:23:42 +08:00
parent 136d42a31e
commit 6754237844
13 changed files with 103 additions and 37 deletions
+1 -1
View File
@@ -2,7 +2,7 @@ apiVersion: v2
# 针对库类型的 Helm Chart,保持 `version` 和 `appVersion` 定义一致 # 针对库类型的 Helm Chart,保持 `version` 和 `appVersion` 定义一致
version: 1.0.0 version: 1.0.0
appVersion: 1.0.0 appVersion: 1.0.0
description: Helm Chart 通用函数及工具库,用于其他 Helm Chart 仓库引用 description: Helm Chart 通用函数及工具库,用于其他 Helm Chart 仓库引用(基于 Bitnami 进行汉化、修改)
home: https://colovu.com home: https://colovu.com
maintainers: maintainers:
- name: Endial Fang(endial@126.com) - name: Endial Fang(endial@126.com)
+2 -3
View File
@@ -234,10 +234,9 @@
{{- end -}} {{- end -}}
{{/* {{/*
检测 Helm 版本是否为支持对版本(3.3+)。 检测 Helm 版本是否为支持的版本(3.3+)(true/flase)。
直到 Helm 3.3.0 版本才引入了 `.Capabilities.HelmVersion` 来检查所使用的 Helm 版本,该属性包含额外的 `{{}}` 结构。 直到 Helm 3.3.0 版本才引入了 `.Capabilities.HelmVersion` 来检查所使用的 Helm 版本,该属性包含额外的 `{{}}` 结构。
之所以使用 `regexMatch` 而非 `{{ if .Capabilities.HelmVersion }}` 进行检查,是因为在 Helm 版本低于 3.3 之所以使用 `regexMatch` 而非 `{{ if .Capabilities.HelmVersion }}` 进行检查,是因为在 Helm 版本低于 3.3时检查 HelmVersion 键会导致 “未找到接口” 错误。
时检查 HelmVersion 键会导致 “未找到接口” 错误。
**当依赖的最低 Helm 版本为 3.3 时,此检查将被移除** **当依赖的最低 Helm 版本为 3.3 时,此检查将被移除**
*/}} */}}
{{- define "common.capabilities.supportsHelmVersion" -}} {{- define "common.capabilities.supportsHelmVersion" -}}
+1 -1
View File
@@ -1,5 +1,5 @@
{{/* {{/*
检测是否为 Openshift 平台(true/false) 检测是否为 Openshift 平台(true/false)。
调用: 调用:
{{- include "common.compatibility.isOpenshift" . -}} {{- include "common.compatibility.isOpenshift" . -}}
*/}} */}}
+2 -2
View File
@@ -5,8 +5,8 @@
{{- $validationError01 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password01" "secret" "secretName" "field" "password-01") -}} {{- $validationError01 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password01" "secret" "secretName" "field" "password-01") -}}
{{ include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $validationError00 $validationError01) "context" $) }} {{ include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $validationError00 $validationError01) "context" $) }}
参数: 参数:
- validationErrors - 字符串(必须)。待校验的字符串列表,如果为空返回错误。 - validationErrors: 字符串(必须)。待校验的字符串列表,如果为空返回错误。
- context - 上下文(必须)。父级上下文信息。 - context: 上下文(必须)。父级上下文信息。
*/}} */}}
{{- define "common.errors.upgrade.passwords.empty" -}} {{- define "common.errors.upgrade.passwords.empty" -}}
{{- $validationErrors := join "" .validationErrors -}} {{- $validationErrors := join "" .validationErrors -}}
+4 -3
View File
@@ -1,6 +1,7 @@
{{/* {{/*
返回合适点镜像名称。如果镜像 Tag 或 digest 未定义,使用图表的 appVersion 作为版本标签。 返回正确的镜像名称。
如果镜像 Tag 或 Digest 未定义,使用图表的 appVersion 作为版本标签。
调用: 调用:
{{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" .Values.global "chart" .Chart ) }} {{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" .Values.global "chart" .Chart ) }}
*/}} */}}
@@ -27,7 +28,7 @@
{{- end -}} {{- end -}}
{{/* {{/*
返回合适到镜像库登陆信息模板。 返回正确的镜像库登陆信息。
调用: 调用:
{{ include "common.images.renderPullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $) }} {{ include "common.images.renderPullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "context" $) }}
*/}} */}}
@@ -62,7 +63,7 @@ imagePullSecrets:
{{- end -}} {{- end -}}
{{/* {{/*
返回合适点镜像版本信息(忽略 revision/prerelease 信息)。 返回正确的镜像版本信息(忽略 revision/prerelease 信息;若无效,使用图表的 appVersion 作为版本标签)。
调用: 调用:
{{ include "common.images.version" ( dict "imageRoot" .Values.path.to.the.image "chart" .Chart ) }} {{ include "common.images.version" ( dict "imageRoot" .Values.path.to.the.image "chart" .Chart ) }}
*/}} */}}
+6 -6
View File
@@ -3,9 +3,9 @@
调用: 调用:
{{ include "common.ingress.backend" (dict "serviceName" "backendName" "servicePort" "backendPort" "context" $) }} {{ include "common.ingress.backend" (dict "serviceName" "backendName" "servicePort" "backendPort" "context" $) }}
参数: 参数:
- serviceName - 字符串。已存在的后端服务名称。 - serviceName: 字符串。已存在的后端服务名称。
- servicePort - 字符串/整数。已存在的后端服务的端口名称(或端口号). 根据数据类型不同,生成不同 YAML。 - servicePort: 字符串/整数。已存在的后端服务的端口名称(或端口号). 根据数据类型不同,生成不同 YAML。
- context - 字典(必须)。模板上下文信息。(`$`: 根上下文; `.`: 当前模板上下文) - context: 字典(必须)。父级上下文信息(`$`: 根上下文; `.`: 当前模板上下文)。
*/}} */}}
{{- define "common.ingress.backend" -}} {{- define "common.ingress.backend" -}}
{{- $apiVersion := (include "common.capabilities.ingress.apiVersion" .context) -}} {{- $apiVersion := (include "common.capabilities.ingress.apiVersion" .context) -}}
@@ -25,7 +25,7 @@ service:
{{- end -}} {{- end -}}
{{/* {{/*
返回 pathType 是否支持(true / false) 返回是否支持 pathType (true / false)。
调用: 调用:
{{ include "common.ingress.supportsPathType" . }} {{ include "common.ingress.supportsPathType" . }}
*/}} */}}
@@ -38,7 +38,7 @@ service:
{{- end -}} {{- end -}}
{{/* {{/*
返回 ingressClassname 是否支持(true / false) 返回是否支持 ingressClassname (true / false)。
调用: 调用:
{{ include "common.ingress.supportsIngressClassname" . }} {{ include "common.ingress.supportsIngressClassname" . }}
*/}} */}}
@@ -51,7 +51,7 @@ service:
{{- end -}} {{- end -}}
{{/* {{/*
返回 cert-manager 需要的注解是否存在(true / false) 返回 cert-manager 需要的注解(TLS 签名证书)是否存在(true / false)。
参考: 参考:
https://cert-manager.io/docs/usage/ingress/#supported-annotations https://cert-manager.io/docs/usage/ingress/#supported-annotations
调用: 调用:
+1 -1
View File
@@ -1,5 +1,5 @@
{{/* {{/*
获取 K8s 标准标签 获取 K8s 标准标签。
调用: 调用:
{{ include "common.labels.standard" (dict "customLabels" .Values.commonLabels "context" $) -}} {{ include "common.labels.standard" (dict "customLabels" .Values.commonLabels "context" $) -}}
*/}} */}}
+4 -3
View File
@@ -1,5 +1,5 @@
{{/* {{/*
获取应用名。 获取图表名。
受 K8s DNS 限制,截取为 63 个字符。 受 K8s DNS 限制,截取为 63 个字符。
*/}} */}}
{{- define "common.names.name" -}} {{- define "common.names.name" -}}
@@ -7,7 +7,8 @@
{{- end -}} {{- end -}}
{{/* {{/*
获取包含图表名称、版本信息的图表名,用于通用标签。 获取包含图表名称、版本信息的图表名;用于通用标签。
受 K8s DNS 限制,截取为 63 个字符。
*/}} */}}
{{- define "common.names.chart" -}} {{- define "common.names.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
@@ -50,7 +51,7 @@
{{- end -}} {{- end -}}
{{/* {{/*
在联合部署中,允许部署的 namespace 被手动控制。 获取部署的 Namespace。
*/}} */}}
{{- define "common.names.namespace" -}} {{- define "common.names.namespace" -}}
{{- default .Release.Namespace .Values.namespaceOverride | trunc 63 | trimSuffix "-" -}} {{- default .Release.Namespace .Values.namespaceOverride | trunc 63 | trimSuffix "-" -}}
+1
View File
@@ -1,5 +1,6 @@
{{/* {{/*
根据给出的预设返回对应的 request/limit 资源对象。 根据给出的预设返回对应的 request/limit 资源对象。
注意:预设资源配置主要用于开发、调试,生产环境建议使用特定的配置。
调用: 调用:
{{ include "common.resources.preset" (dict "type" "nano") -}} {{ include "common.resources.preset" (dict "type" "nano") -}}
*/}} */}}
+12 -12
View File
@@ -3,9 +3,9 @@
调用: 调用:
{{ include "common.secrets.name" (dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $) }} {{ include "common.secrets.name" (dict "existingSecret" .Values.path.to.the.existingSecret "defaultNameSuffix" "mySuffix" "context" $) }}
参数: 参数:
- existingSecret - 字符串(可选)。用户定义的已存在的 Secret。 - existingSecret: 字符串(可选)。用户定义的已存在的 Secret。允许该值为用户定义的 Secret 的名称字符串。
- defaultNameSuffix - 字符串(可选)。用于相同部署时的 Secret 前缀。 - defaultNameSuffix: 字符串(可选)。用于相同部署时的 Secret 前缀。
- context - 字典(必须)。父级上下文信息。 - context: 字典(必须)。父级上下文信息。
*/}} */}}
{{- define "common.secrets.name" -}} {{- define "common.secrets.name" -}}
{{- $name := (include "common.names.fullname" .context) -}} {{- $name := (include "common.names.fullname" .context) -}}
@@ -32,8 +32,8 @@
调用: 调用:
{{ include "common.secrets.key" (dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName") }} {{ include "common.secrets.key" (dict "existingSecret" .Values.path.to.the.existingSecret "key" "keyName") }}
参数: 参数:
- existingSecret - 字符串(可选)。用户定义的已存在的 Secret。 - existingSecret: 字符串(可选)。用户定义的已存在的 Secret。允许该值为用户定义的 Secret 的名称字符串。
- key - 字符串(必须)。键名。 - key: 字符串(必须)。键名。
*/}} */}}
{{- define "common.secrets.key" -}} {{- define "common.secrets.key" -}}
{{- $key := .key -}} {{- $key := .key -}}
@@ -136,10 +136,10 @@ The order in which this function returns a secret password:
调用: 调用:
{{ include "common.secrets.lookup" (dict "secret" "secret-name" "key" "keyName" "defaultValue" .Values.myValue "context" $) }} {{ include "common.secrets.lookup" (dict "secret" "secret-name" "key" "keyName" "defaultValue" .Values.myValue "context" $) }}
参数: 参数:
- secret - 字符串(必须)。存储密码的 Secret 的名字。 - secret: 字符串(必须)。存储密码的 Secret 的名字。
- key - 字符串(必须)。Secret 中键的名字。 - key: 字符串(必须)。Secret 中键的名字。
- defaultValue - 字符串(必须)。 `values.yaml`配置文件中该键对应的路径,如:"mysql.password"。获取第一个定义的值。 - defaultValue: 字符串(必须)。 `values.yaml`配置文件中该键对应的路径,如:"mysql.password"。获取第一个定义的值。
- context - 上下文(必须)。 父级上下文信息。 - context: 上下文(必须)。 父级上下文信息。
*/}} */}}
{{- define "common.secrets.lookup" -}} {{- define "common.secrets.lookup" -}}
{{- $value := "" -}} {{- $value := "" -}}
@@ -155,12 +155,12 @@ The order in which this function returns a secret password:
{{- end -}} {{- end -}}
{{/* {{/*
检测是否已存在一个旧版本的 secret定义(true/false)。 检测是否已存在一个旧版本的 Secret定义(true/false)。
调用: 调用:
{{ include "common.secrets.exists" (dict "secret" "secret-name" "context" $) }} {{ include "common.secrets.exists" (dict "secret" "secret-name" "context" $) }}
参数: 参数:
- secret - 字符串(必须)。用于存放密码的 Secret 的名字。 - secret: 字符串(必须)。用于存放密码的 Secret 的名字。
- context - 上下文(必须)。父级上下文信息。 - context: 上下文(必须)。父级上下文信息。
*/}} */}}
{{- define "common.secrets.exists" -}} {{- define "common.secrets.exists" -}}
{{- $secret := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret) }} {{- $secret := (lookup "v1" "Secret" (include "common.names.namespace" .context) .secret) }}
+1 -1
View File
@@ -1,5 +1,5 @@
{{/* {{/*
返回正确的 Storage Class 返回正确的 Storage Class。
调用: 调用:
{{ include "common.storage.class" ( dict "persistence" .Values.path.to.the.persistence "global" $) }} {{ include "common.storage.class" ( dict "persistence" .Values.path.to.the.persistence "global" $) }}
*/}} */}}
+3 -3
View File
@@ -1,5 +1,5 @@
{{/* {{/*
返回获取 secret 值的命令。 返回获取 Secret 值的命令。
调用: 调用:
{{ include "common.utils.secret.getvalue" (dict "secret" "secret-name" "field" "secret-value-field" "context" $) }} {{ include "common.utils.secret.getvalue" (dict "secret" "secret-name" "field" "secret-value-field" "context" $) }}
*/}} */}}
@@ -9,7 +9,7 @@ export {{ $varname }}=$(kubectl get secret --namespace {{ include "common.names.
{{- end -}} {{- end -}}
{{/* {{/*
将给定字段(横线分割)转换为容器的ENV变量(全大写) 将给定字段(横线分割)转换为容器的 ENV 变量(全大写)
调用: 调用:
{{ include "common.utils.fieldToEnvVar" dict "field" "my-password" }} {{ include "common.utils.fieldToEnvVar" dict "field" "my-password" }}
*/}} */}}
@@ -61,7 +61,7 @@ export {{ $varname }}=$(kubectl get secret --namespace {{ include "common.names.
{{- end -}} {{- end -}}
{{/* {{/*
对`path` 中包含的*单个*资源(ConfigMap、Secret)的模板进行校验和计算,以便用于*Pod*注解,同时排除元数据。 对`path` 中包含的*单个*资源(ConfigMap、Secret)的模板进行*校验和*计算,以便用于*Pod*注解;校验和计算排除元数据。
调用: 调用:
{{ include "common.utils.checksumTemplate" (dict "path" "/configmap.yaml" "context" $) }} {{ include "common.utils.checksumTemplate" (dict "path" "/configmap.yaml" "context" $) }}
*/}} */}}
+65 -1
View File
@@ -1,5 +1,5 @@
{{/* {{/*
使用滚动 TAG 时的警告信息。 使用滚动 TAG 时的警告信息(如:latest)。
调用: 调用:
{{ include "common.warnings.rollingTag" .Values.path.to.the.imageRoot }} {{ include "common.warnings.rollingTag" .Values.path.to.the.imageRoot }}
*/}} */}}
@@ -9,3 +9,67 @@
WARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment. WARNING: Rolling tag detected ({{ .repository }}:{{ .tag }}), please note that it is strongly recommended to avoid using rolling tags in a production environment.
{{- end }} {{- end }}
{{- end -}} {{- end -}}
{{/*
在所有部署中针对设置默认 Resource 时的警告信息。
调用:
{{ include "common.warnings.resources" (dict "sections" (list "path1" "path2") context $) }}
举例:
{{- include "common.warnings.resources" (dict "sections" (list "csiProvider.provider" "server" "volumePermissions" "") "context" $) }}
The list in the example assumes that the following values exist:
- csiProvider.provider.resources
- server.resources
- volumePermissions.resources
- resources
*/}}
{{- define "common.warnings.resources" -}}
{{- $values := .context.Values -}}
{{- $printMessage := false -}}
{{ $affectedSections := list -}}
{{- range .sections -}}
{{- if eq . "" -}}
{{/* Case where the resources section is at the root (one main deployment in the chart) */}}
{{- if not (index $values "resources") -}}
{{- $affectedSections = append $affectedSections "resources" -}}
{{- $printMessage = true -}}
{{- end -}}
{{- else -}}
{{/* Case where the are multiple resources sections (more than one main deployment in the chart) */}}
{{- $keys := split "." . -}}
{{/* We iterate through the different levels until arriving to the resource section. Example: a.b.c.resources */}}
{{- $section := $values -}}
{{- range $keys -}}
{{- $section = index $section . -}}
{{- end -}}
{{- if not (index $section "resources") -}}
{{/* If the section has enabled=false or replicaCount=0, do not include it */}}
{{- if and (hasKey $section "enabled") -}}
{{- if index $section "enabled" -}}
{{/* enabled=true */}}
{{- $affectedSections = append $affectedSections (printf "%s.resources" .) -}}
{{- $printMessage = true -}}
{{- end -}}
{{- else if and (hasKey $section "replicaCount") -}}
{{/* We need a casting to int because number 0 is not treated as an int by default */}}
{{- if (gt (index $section "replicaCount" | int) 0) -}}
{{/* replicaCount > 0 */}}
{{- $affectedSections = append $affectedSections (printf "%s.resources" .) -}}
{{- $printMessage = true -}}
{{- end -}}
{{- else -}}
{{/* Default case, add it to the affected sections */}}
{{- $affectedSections = append $affectedSections (printf "%s.resources" .) -}}
{{- $printMessage = true -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{- if $printMessage }}
WARNING: There are "resources" sections in the chart not set. Using "resourcesPreset" is not recommended for production. For production installations, please set the following values according to your workload needs:
{{- range $affectedSections }}
- {{ . }}
{{- end }}
+info https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
{{- end -}}
{{- end -}}