我知道这是一个重复的问题,但是,我没有得到一个满足我的问题的答案。我正在尝试为cronjob部署创建一个舵图。我将舵图的名称保留为cronjob-example。
现在,当我手动运行命令helm install或helm upgrade时,我可以安装或更新cronjob,但是,当我尝试从CICD pipeline执行相同的操作时,它会失败,并在templates/cronjob.yaml文件的第19行将文件YAML转换为JSON时出错。
cronjob.yaml文件。
apiVersion: batch/v1beta1
kind: CronJob
metadata:
namespace: {{ .Values.metadata.namespace }}
creationTimestamp: {{ .Values.metadata.creationTimestamp }}
name: {{ .Values.name }}
spec:
jobTemplate:
metadata:
creationTimestamp: {{ .Values.metadata.creationTimestamp }}
name: {{ .Values.name }}
spec:
template:
metadata:
creationTimestamp: {{ .Values.metadata.creationTimestamp }}
spec:
imagePullSecrets:
- name: {{ .Values.image.imagePullSecrets }}
containers:
- image: {{ .Values.image.repository }}
name: {{ .Chart.Name }}
resources: {}
restartPolicy: OnFailure
schedule: '*/1 * * * *'
status: {}values.yaml文件
---
metadata:
namespace: "{{K8S_NS}}"
name: "{{HELM_APP_NAME}}"
#name: "cronjob-example"
nodeLabel: agent
image:
repository: "{{CI_REGISTRY_IMAGE}}/{{CI_COMMIT_REF_SLUG}}:{{CI_COMMIT_SHA}}.{{CI_PIPELINE_IID}}"
pullPolicy: "Always"
imagePullSecrets: git-image-pull-secret-cron
creationTimestamp: null
variables:
- name: "TLS_ENV"
value: "tst"我想知道为什么当我手动运行它时它会成功,为什么它通过CICD管道失败。除了部署阶段,一切都在CICD管道中正常工作。在这一点上它失败了。当我手动安装/升级时,我所做的就是对从cicd的前几个阶段获得的值进行硬编码。
发布于 2021-08-05 19:18:21
问题出在模板中的这个位置。
- image: {{ .Values.image.repository }}repository: "{{CI_REGISTRY_IMAGE}} /{{CI_COMMIT_REF_SLUG}}:{{CI_COMMIT_SHA}}.{{CI_PIPELINE_IID}}"的代替值将导致无效值。
发布于 2021-08-05 20:01:59
正如您提到的,第19行有一个问题,即
- image: {{ .Values.image.repository }}在本地尝试时,您可能会给出适当的值,并检查在配置项期间传递的值
repository: "{{CI_REGISTRY_IMAGE}} /{{CI_COMMIT_REF_SLUG}}:{{CI_COMMIT_SHA}}.{{CI_PIPELINE_IID}}"如果你想调试更多,你也可以尝试
helm install --dry-run --debug或helm template --debug
让服务器呈现模板,然后返回结果清单文件,这是一种很好的方法。
https://stackoverflow.com/questions/68593697
复制相似问题