我在提供給 job.yaml 的 values.yaml 中有這個定義
command: ["/bin/bash"]
args: ["-c", "cd /opt/nonrtric/ric-common/ansible/; cat group_vars/all"]
但是,在 pod 初始化后,我收到此錯誤:
/bin/bash: - : invalid option
如果我嘗試這種語法:
command: ["/bin/sh", "-c"]
args:
- >
cd /opt/nonrtric/ric-common/ansible/ &&
cat group_vars/all
我收到此錯誤: Error: failed to start container "ric-register-avro": Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: "/bin/sh -c": stat /bin/sh -c: no such file or directory: unknown
鏡像中提供了 sh 和 bash,即 CentOS 7
作業.yaml
---
apiVersion: batch/v1
kind: Job
metadata:
name: ric-register-avro
spec:
backoffLimit: 0
template:
spec:
containers:
- image: "{{ .Values.ric_register_avro_job.image }}"
name: "{{ .Values.ric_register_avro_job.name }}"
command: {{ .Values.ric_register_avro_job.containers.command }}
args: {{ .Values.ric_register_avro_job.containers.args }}
volumeMounts:
- name: all-file
mountPath: "/opt/nonrtric/ric-common/ansible/group_vars/"
readOnly: true
subPath: all
volumes:
- name: all-file
configMap:
name: ric-register-avro--configmap
restartPolicy: Never
值.yaml
global:
name: ric-register-avro
namespace: foo-bar
ric_register_avro_job:
name: ric-register-avro
all_file:
rest_api_url: http://10.230.227.13/foo
auth_username: foo
auth_password: bar
backoffLimit: 0
completions: 1
image: 10.0.0.1:5000/5gc/ric-app
containers:
name: ric-register-avro
command: ["/bin/bash"]
args: ["-c cd /opt/nonrtric/ric-common/ansible/; cat group_vars/all"]
restartPolicy: Never
uj5u.com熱心網友回復:
在您的 Helm 圖表中,您直接指定command:和args:使用模板語法
command: {{ .Values.ric_register_avro_job.containers.command }}
args: {{ .Values.ric_register_avro_job.containers.args }}
但是,{{ ... }}塊的輸出始終是字串。如果模板中的值是其他型別,比如串列,它將使用一些默認的 Go 規則轉換為字串,這在 Kubernetes 背景關系中不是特別有用。
頭盔包括兩個輕檔案轉換功能toJson,并toYaml能在這里幫助。有效的 JSON 也是有效的 YAML,因此一種簡單的方法就是將這兩個部分都轉換為 JSON
command: {{ toJson .Values.ric_register_avro_job.containers.command }}
args: {{ toJson .Values.ric_register_avro_job.containers.args }}
或者,如果你想讓它看起來更像普通的 YAML,
command:
{{ .Values.ric_register_avro_job.containers.command | toYaml | indent 12 }}
args:
{{ .Values.ric_register_avro_job.containers.args | toYaml | indent 12 }}
或者,就此而言,如果您通過 Helm 值傳遞完整的容器描述,則可能足以
containers:
- name: ric_register_avro_job
{{ .Values.ric_register_avro_job.containers | toYaml | indent 10 }}
在所有這些情況下,我將模板構造放在第一列開始,然后使用該indent函式正確縮進 YAML 塊。仔細檢查縮進并調整indent引數。
您還可以helm template使用與-f安裝圖表時相同的選項,使用仔細檢查出現的內容是否正確。
(實際上,我可能會將您顯示的許多選項直接放入圖表模板中,而不是將它們配置為值。例如,容器名稱不需要可配置,我通常會修復命令。對于這個非常具體的示例,您還可以設定容器workingDir:而不是cd在外殼包裝器內運行。)
uj5u.com熱心網友回復:
我用這個:
command: ["/bin/sh"]
args: ["-c", "my-command"]
嘗試這個簡單的作業我沒有問題:
apiVersion: batch/v1
kind: Job
metadata:
name: foo
spec:
template:
spec:
containers:
- name: foo
image: centos:7
command: ["/bin/sh"]
args: ["-c", "echo 'hello world'"]
restartPolicy: Never
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/349808.html
標籤:码头工人 Kubernetes kubernetes-helm
