【发布时间】:2021-10-06 03:51:03
【问题描述】:
我知道这是一个重复的问题,但是我没有得到满足我查询的答案。我正在尝试为 cronjob 部署创建一个掌舵图。我将掌舵图名称保留为 cronjob-example。
现在,当我手动运行命令 helm install 或 helm upgrade 时,我可以安装或更新 cronjob,但是当我尝试从 CICD 管道执行相同操作时,它会在 @987654323 的第 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 中先前阶段获得的值进行硬编码。
【问题讨论】:
-
你是如何在你的 values.yml 中填写占位符的?您能否发布一个示例,生成您的 CI 作业的 values.yml 的外观如何?
-
我为
K8S_NS类似变量设置了gitlab CICD 变量,CI_REGISTRY_IMAGE类似变量是gitlab 提供的标准变量。我已经有这种用于部署的实现,现在我想实现它 cronjob。
标签: kubernetes cron gitlab kubernetes-helm helmfile