Tutorial completo de Helm 3 (7): explicación de la función de Helm (1) funciones de control de flujo y lógica

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"

Enlace al texto original de esta columna: https://blog.csdn.net/xzk9381/category_10895812.html, indique la fuente para la reimpresión

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(o null)

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 .Foousar solo if .Foopuede 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"

Enlace al texto original de esta columna: https://blog.csdn.net/xzk9381/category_10895812.html, indique la fuente para la reimpresión

Supongo que te gusta

Origin blog.csdn.net/xzk9381/article/details/115374494
Recomendado
Clasificación