2025-03-10 16:39:13 +08:00
2025-03-10 16:39:13 +08:00
2025-03-10 16:39:13 +08:00
2025-03-10 16:39:13 +08:00
2025-03-10 16:39:13 +08:00
2025-03-10 16:39:13 +08:00
2025-03-10 16:39:13 +08:00
2025-03-10 16:39:13 +08:00

common

Helm Chart 通用函数及工具库,用于其他 Helm Chart 仓库引用。

快速开始

Chart.yaml 中添加依赖:

dependencies:
  - name: common
    version: 1.x.x
    repository: oci://registry.colovu.com/chart
helm dependency update

之后,可以在应用的Helm Chart模板中引用common中的定义:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "common.names.fullname" . }}
data:
  myvalue: "Hello World"

环境依赖

  • Kubernetes 1.23+
  • Helm 3.8.0+

特殊输入模式

ImageRoot

registry:
  type: string
  description: Docker registry where the image is located
  example: docker.io

repository:
  type: string
  description: Repository and image name
  example: bitnami/nginx

tag:
  type: string
  description: image tag
  example: 1.16.1-debian-10-r63

pullPolicy:
  type: string
  description: Specify a imagePullPolicy.'

pullSecrets:
  type: array
  items:
    type: string
  description: Optionally specify an array of imagePullSecrets (evaluated as templates).

debug:
  type: boolean
  description: Set to true if you would like to see extra information on logs
  example: false

## An instance would be:
# registry: docker.io
# repository: bitnami/nginx
# tag: 1.16.1-debian-10-r63
# pullPolicy: IfNotPresent
# debug: false

Persistence

enabled:
  type: boolean
  description: Whether enable persistence.
  example: true

storageClass:
  type: string
  description: Ghost data Persistent Volume Storage Class, If set to "-", storageClassName: "" which disables dynamic provisioning.
  example: "-"

accessMode:
  type: string
  description: Access mode for the Persistent Volume Storage.
  example: ReadWriteOnce

size:
  type: string
  description: Size the Persistent Volume Storage.
  example: 8Gi

path:
  type: string
  description: Path to be persisted.
  example: /bitnami

## An instance would be:
# enabled: true
# storageClass: "-"
# accessMode: ReadWriteOnce
# size: 8Gi
# path: /bitnami

ExistingSecret

name:
  type: string
  description: Name of the existing secret.
  example: mySecret
keyMapping:
  description: Mapping between the expected key name and the name of the key in the existing secret.
  type: object

## An instance would be:
# name: mySecret
# keyMapping:
#   password: myPasswordKey

使用举例

当我们将部署所需的敏感数据存储在一个密钥(Secret)中时,有时我们希望为用户提供使用他们现有密钥的可能性。

# templates/secret.yaml 中包含以下内容
---
apiVersion: v1
kind: Secret
metadata:
  name: {{ include "common.names.fullname" . }}
  labels:
    app: {{ include "common.names.fullname" . }}
type: Opaque
data:
  password: {{ .Values.password | b64enc | quote }}

# templates/dpl.yaml 中包含以下内容
---
...
      env:
        - name: PASSWORD
          valueFrom:
            secretKeyRef:
              name: {{ include "common.secrets.name" (dict "existingSecret" .Values.existingSecret "context" $) }}
              key: {{ include "common.secrets.key" (dict "existingSecret" .Values.existingSecret "key" "password") }}
...

# values.yaml 中包含以下内容
---
existingSecret: "my-other-secret"
name: mySecret
keyMapping:
  password: myPasswordKey

ValidateValue

NOTES.txt

{{- $validateValueConf00 := (dict "valueKey" "path.to.value00" "secret" "secretName" "field" "password-00") -}}
{{- $validateValueConf01 := (dict "valueKey" "path.to.value01" "secret" "secretName" "field" "password-01") -}}

{{ include "common.validations.values.multiple.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }}

If we force those values to be empty we will see some alerts

helm install test mychart --set path.to.value00="",path.to.value01=""
    'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value:

        export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-00}" | base64 -d)

    'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value:

        export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-01}" | base64 -d)

参考文档

License

MIT

版本日志

1.0.0

初始版本

S
Description
No description provided
Readme 58 KiB
Languages
Smarty 98.4%
Shell 1.6%