首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kubernetes yaml文件不能作为helm模板工作

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

Stack Overflow用户
提问于 2021-07-30 15:42:43
回答 2查看 574关注 0票数 2

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

现在,当我手动运行命令helm installhelm upgrade时,我可以安装或更新cronjob,但是,当我尝试从CICD pipeline执行相同的操作时,它会失败,并在templates/cronjob.yaml文件的第19行将文件YAML转换为JSON时出错。

cronjob.yaml文件。

代码语言:javascript
运行
复制
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文件

代码语言:javascript
运行
复制
---
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的前几个阶段获得的值进行硬编码。

EN

回答 2

Stack Overflow用户

发布于 2021-08-05 19:18:21

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

代码语言:javascript
运行
复制
- image: {{ .Values.image.repository }}

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

票数 0
EN

Stack Overflow用户

发布于 2021-08-05 20:01:59

正如您提到的,第19行有一个问题,即

代码语言:javascript
运行
复制
- image: {{ .Values.image.repository }}

在本地尝试时,您可能会给出适当的值,并检查在配置项期间传递的值

代码语言:javascript
运行
复制
repository: "{{CI_REGISTRY_IMAGE}} /{{CI_COMMIT_REF_SLUG}}:{{CI_COMMIT_SHA}}.{{CI_PIPELINE_IID}}"

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68593697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档