Resume los puntos y conceptos de conocimiento común de Helm 3. Parte del contenido del documento proviene de los principales blogs y documentos oficiales, y parte del contenido se ha reorganizado en base a mi propia comprensión y práctica. Todas las explicaciones de conceptos estarán equipadas con códigos prácticos. El artículo se actualiza de vez en cuando, lo invitamos a seguirlo y suscribirse (se abre una columna paga; de lo contrario, otros sitios web privados lo rastrearán. Sea considerado con los hermanos y hermanas mayores, es solo un almuerzo, y por favor apoyarlo).
Enlace al texto original de esta columna: https://blog.csdn.net/xzk9381/category_10895812.html, indique la fuente para la reimpresión
El método de uso y la estructura de funciones de algunas funciones de uso común se presentan anteriormente. En esta parte del artículo, se resumen y explican brevemente todas las funciones. El uso detallado se demostrará en un artículo posterior combinado con casos específicos.
Las funciones del timón se pueden dividir a grandes rasgos en las siguientes categorías:
- Función encriptada
- Función de tipo de fecha
- Función de diccionario
- Función de codificación
- Función de ruta de archivo
- Funciones de Kubernetes
- Funciones de control de flujo y lógica
- Función de lista
- Función de cálculo matemático
- Función de red
- Función de mapeo
- Funciones de expresión regular
- Función de versión semántica
- Función de cadena
- Función de conversión de tipo
- Función de procesamiento de URL
- Función de generación de UUID
Funciones de control de flujo y lógica
Helm proporciona varias funciones para procesar la lógica y el control de flujo:
and
coalesce
default
empty
eq
fail
ge
gt
le
lt
ne
not
or
1. y función
La función y se utiliza para devolver el resultado lógico Y (valor booleano) de dos parámetros, lo que significa que si ambos parámetros devuelven verdadero, el resultado es verdadero. Si uno de ellos no es verdadero, entonces el resultado es falso.
Por ejemplo, ingrese lo siguiente en el archivo value.yaml:
flag:
open: true
start: false
Cree un archivo de plantilla llamado configmap.yaml en el directorio de plantillas con el siguiente contenido:
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-configmap
data:
type: {
{
and .Values.flag.open .Values.flag.start | quote }}
Renderice el archivo de plantilla y vea el resultado:
[@k8s-master1 /opt/helm/work]# helm install and-test ./mychart/ --debug --dry-run
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /opt/helm/work/mychart
NAME: and-test
LAST DEPLOYED: Fri Mar 26 11:33:56 2021
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
{
}
COMPUTED VALUES:
flag:
open: true
start: false
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: and-test-configmap
data:
type: "false"
2. o función
La función o se utiliza para determinar la relación lógica OR de dos parámetros. Devuelve el primer parámetro que no está vacío o el último parámetro. Por ejemplo, el contenido del archivo de plantilla configmap.yaml es el siguiente:
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-configmap
data:
type1: {
{
or 1 "" 3 | quote }}
type2: {
{
or 1 2 "" | quote }}
type3: {
{
or "" 2 3 | quote }}
type4: {
{
or "" "" 3 | quote }}
Los resultados de la prueba de la plantilla de representación son los siguientes:
[@k8s-master1 /opt/helm/work]# helm install or-test ./mychart/ --debug --dry-run
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /opt/helm/work/mychart
NAME: or-test
LAST DEPLOYED: Fri Mar 26 14:27:19 2021
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
......
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: or-test-configmap
data:
type1: "1"
type2: "1"
type3: "2"
type4: "3"
3. no funciona
La función not se utiliza para invertir el valor booleano del parámetro. Por ejemplo, el contenido del archivo de plantilla configmap.yaml es el siguiente:
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-configmap
data:
type1: {
{
not 1 | quote }}
type2: {
{
not "" | quote }}
Los resultados de la prueba de la plantilla de representación son los siguientes:
[@k8s-master1 /opt/helm/work]# helm install not-test ./mychart/ --debug --dry-run
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /opt/helm/work/mychart
NAME: not-test
LAST DEPLOYED: Fri Mar 26 14:51:17 2021
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
......
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: not-test-configmap
data:
type1: "false"
type2: "true"
4. función ne
La función ne se utiliza para determinar si dos parámetros no son iguales, si no iguales a verdadero, e iguales a falso. Utilice el archivo configmap.yaml para probar, el contenido es el siguiente:
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-configmap
data:
type1: {
{
ne 1 2 }}
type2: {
{
ne 1 1 }}
Los resultados de la prueba de la plantilla de representación son los siguientes:
[@k8s-master1 /opt/helm/work]# helm install ne-test ./mychart/ --debug --dry-run
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /opt/helm/work/mychart
NAME: ne-test
LAST DEPLOYED: Fri Mar 26 14:57:10 2021
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
......
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: ne-test-configmap
data:
type1: true
type2: false
5. Funciones lt y gt
La función lt se usa para determinar si el primer parámetro es menor que el segundo parámetro, si es menor que es verdadero, si es mayor que es falso.
La función gt se usa para determinar si el primer parámetro es mayor que el segundo parámetro, si es mayor que es verdadero, si es menor que es falso.
Utilice el archivo configmap.yaml para probar, el contenido es el siguiente:
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-configmap
data:
type1: {
{
lt 1 2 }}
type2: {
{
lt 2 1 }}
type3: {
{
gt 2 1 }}
type4: {
{
gt 1 2 }}
Los resultados de la prueba de la plantilla de representación son los siguientes:
[@k8s-master1 /opt/helm/work]# helm install fun-test ./mychart/ --debug --dry-run
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /opt/helm/work/mychart
NAME: fun-test
LAST DEPLOYED: Fri Mar 26 15:02:21 2021
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
......
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fun-test-configmap
data:
type1: true
type2: false
type3: true
type4: false
6. función ge
La función ge se usa para determinar si el primer parámetro es mayor o igual que el segundo parámetro, si es verdadero será verdadero y si no es verdadero será falso. Utilice el archivo configmap.yaml para probar, el contenido es el siguiente:
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-configmap
data:
type1: {
{
ge 2 2 }}
type2: {
{
ge 2 1 }}
type3: {
{
ge 1 2 }}
Los resultados de la prueba de la plantilla de representación son los siguientes:
[@k8s-master1 /opt/helm/work]# helm install fun-test ./mychart/ --debug --dry-run
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /opt/helm/work/mychart
NAME: fun-test
LAST DEPLOYED: Fri Mar 26 15:05:12 2021
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fun-test-configmap
data:
type1: true
type2: true
type3: false
7. función predeterminada
La función predeterminada se introdujo en el artículo anterior. Se utiliza principalmente para establecer un valor predeterminado. Cuando el valor del parámetro está vacío, se utilizará el valor predeterminado, de lo contrario, se devolverá el valor del parámetro. Aquí es necesario explicar el alcance del tipo vacío.
Los tipos vacíos son principalmente los siguientes tipos:
- Entero:
0
- Cuerda:
""
- Lista:
[]
- diccionario:
{}
- Booleano:
false
- Y todo
nil
(onull
)
Para la estructura, no hay una definición vacía, por lo que la estructura nunca vuelve al valor predeterminado.
Utilice el archivo configmap.yaml para probar, el contenido es el siguiente:
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-configmap
data:
type1: {
{
0 | default "zero" | quote }}
type2: {
{
"" | default "null" | quote }}
type3: {
{
default "FALSE" false | quote }}
Los resultados de la prueba de la plantilla de renderizado son los siguientes:
[@k8s-master1 /opt/helm/work]# helm install fun-test ./mychart/ --debug --dry-run
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /opt/helm/work/mychart
NAME: fun-test
LAST DEPLOYED: Fri Mar 26 15:23:28 2021
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
......
HOOKS:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fun-test-configmap
data:
type1: "zero"
type2: "null"
type3: "FALSE"
8. función vacía
La función vacía se usa para determinar si el valor dado está vacío y devuelve verdadero si está vacío. Utilice el archivo configmap.yaml para probar, el contenido es el siguiente:
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-configmap
data:
type1: {
{
0 | empty }}
type2: {
{
1 | empty }}
Los resultados de la prueba de la plantilla de renderizado son los siguientes:
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fun-test-configmap
data:
type1: true
type2: false
Tenga en cuenta que en las condiciones de la plantilla Go, los valores nulos se calculan automáticamente. Por lo tanto, rara vez necesita
if empty .Foo
usar soloif .Foo
puede ser.
9. La función de falla
La función de error se utiliza para devolver una cadena vacía y un mensaje de error especificado si falla la representación de la plantilla.
No tengo claro cómo usar esta función por el momento, la agregaré si encuentro información relevante más adelante.
10. función de unión
La función de unión se utiliza para escanear una lista dada y devolver el primer valor no vacío. Utilice el archivo configmap.yaml para probar, el contenido es el siguiente:
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-configmap
data:
type1: {
{
coalesce 0 1 2 }}
type2: {
{
coalesce "" false "Matt" }}
Los resultados de la prueba de renderizado de plantillas son los siguientes:
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fun-test-configmap
data:
type1: 1
type2: Matt
11. función ternaria
La función ternaria acepta dos parámetros y un valor de prueba. Si el valor booleano de prueba es verdadero, devuelve el valor del primer parámetro; si el valor de prueba está vacío o el valor booleano es falso, devuelve el valor del segundo parámetro. .
Utilice el archivo configmap.yaml para probar, el contenido es el siguiente:
apiVersion: v1
kind: ConfigMap
metadata:
name: {
{
.Release.Name }}-configmap
data:
type1: {
{
ternary "First" "Second" true | quote }}
type2: {
{
ternary "First" "Second" false | quote }}
type3: {
{
empty "" | ternary "First" "Second" | quote }}
type4: {
{
empty hello | ternary "First" "Second" | quote }}
Los resultados de la prueba de la plantilla de renderizado son los siguientes:
MANIFEST:
---
# Source: mychart/templates/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: fun-test-configmap
data:
type1: "First"
type2: "Second"
type3: "First"
type4: "Second"