遍历 --set-file helm 选项传递的纯文本文件行,然后逐行解析每一行
loop thru lines of plain text file passed by --set-file helm option then parse each line by column
我有一个 cron 文件,我正试图通过 --set-file
选项传递它。
我想遍历 cron 文件行并为每一行创建 CronJob 类型的新 Kubernetes 对象。
我是这样用的helm instal ... --set-file crons.file=mycron
mycron 文件看起来像一个典型的 cron 文件:
0,10,20,30,40,50 * * * * /usr/bin/cmd1 opta optb
35 2-23/3 * * * /usr/bin/cmd2
我无法遍历这个简单的纯文本行:
{{- range $indx, $line := .Values.crons.file }}
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: {{ regexFind "[^/]+$" "$line"}}
jobTemplate:
spec:
template:
spec:
containers:
- name: cron-{{ $indx }}
image: busybox
args:
- /bin/sh
- -c
- {{ regexFind "[^/]+$" "$line"}}
restartPolicy: OnFailure
{{- end }}
是否有像 fromYaml
这样的函数可以让 range
函数迭代纯文本文件?
Sprig support library includes functions for splitting and joining strings into lists, and for manipulating lists in general。如果 splitList
文件换行,您将获得行列表。您可以再次 splitList
空格上的每一行,以从各个 cron 行中获取单独的时间和命令部分。
{{/* Iterate over individual lines in the string */}}
{{- range $line := splitList "\n" .Values.crons.file -}}
{{/* Break the line into words */}}
{{- $words := splitList " " $line -}}
{{/* Reconstitute the schedule and command parts from the words */}}
{{- $time := slice $words 0 5 | join " " -}}
{{- $command := slice $words 5 -}}
---
schedule: {{ $time }}
command: {{- $command | toYaml | nindent 2}}
{{ end -}}
我有一个 cron 文件,我正试图通过 --set-file
选项传递它。
我想遍历 cron 文件行并为每一行创建 CronJob 类型的新 Kubernetes 对象。
我是这样用的helm instal ... --set-file crons.file=mycron
mycron 文件看起来像一个典型的 cron 文件:
0,10,20,30,40,50 * * * * /usr/bin/cmd1 opta optb
35 2-23/3 * * * /usr/bin/cmd2
我无法遍历这个简单的纯文本行:
{{- range $indx, $line := .Values.crons.file }}
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
schedule: {{ regexFind "[^/]+$" "$line"}}
jobTemplate:
spec:
template:
spec:
containers:
- name: cron-{{ $indx }}
image: busybox
args:
- /bin/sh
- -c
- {{ regexFind "[^/]+$" "$line"}}
restartPolicy: OnFailure
{{- end }}
是否有像 fromYaml
这样的函数可以让 range
函数迭代纯文本文件?
Sprig support library includes functions for splitting and joining strings into lists, and for manipulating lists in general。如果 splitList
文件换行,您将获得行列表。您可以再次 splitList
空格上的每一行,以从各个 cron 行中获取单独的时间和命令部分。
{{/* Iterate over individual lines in the string */}}
{{- range $line := splitList "\n" .Values.crons.file -}}
{{/* Break the line into words */}}
{{- $words := splitList " " $line -}}
{{/* Reconstitute the schedule and command parts from the words */}}
{{- $time := slice $words 0 5 | join " " -}}
{{- $command := slice $words 5 -}}
---
schedule: {{ $time }}
command: {{- $command | toYaml | nindent 2}}
{{ end -}}