Kubernetes yaml文件不能作为helm模板工作



我知道这是一个重复的问题,但是,我没有得到一个满足我的查询的答案。我正在尝试为cronjob部署创建一个掌舵图。我将舵图的名称保留为cronjob-example。

现在,当我手动运行命令helm installhelm upgrade时,我可以安装或更新cronjob,但是当我尝试从CICD管道做同样的事情时,它会在templates/cronjob.yaml文件的第19行将文件YAML转换为JSON时失败。

的计划。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: {}

的值。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的前几个阶段获得的值。

问题在于模板中的这个位置。

- image: {{ .Values.image.repository }}

repository: "{{CI_REGISTRY_IMAGE}} /{{CI_COMMIT_REF_SLUG}}:{{CI_COMMIT_SHA}}.{{CI_PIPELINE_IID}}"的替换值导致无效值。

正如你提到的,第19行有问题

- image: {{ .Values.image.repository }}

在本地尝试时可能会给出正确的值,并检查在CI期间传递的值是什么

repository: "{{CI_REGISTRY_IMAGE}} /{{CI_COMMIT_REF_SLUG}}:{{CI_COMMIT_SHA}}.{{CI_PIPELINE_IID}}"

如果你想调试更多,你也可以尝试

helm install --dry-run --debughelm template --debug

让服务器呈现你的模板,然后返回结果清单文件,这是一个很好的方法。

相关内容

  • 没有找到相关文章

最新更新