2

总结 我在 helm 的 Values.yaml 文件中有自定义变量,我需要在构建发布阶段分配这个变量的值。...客户名称:XYZ ...

重现行为的步骤 我尝试使用 eskaffold 通过 setEnv 发送 vaule

apiVersion: skaffold/v1beta2
kind: Config
build:
  artifacts:
  - image: 'myimagename'
    context: .
    docker: {}
  tagPolicy:
    envTemplate:
      template: '{{.DOCKER_REGISTRY}}/{{.IMAGE_NAME}}/{{.CLIENT_NAME}}:{{.VERSION}}'
  local: {}
deploy:
  kubectl: {}
profiles:
- name: dev
  build:
    tagPolicy:
      envTemplate:
        template: '{{.DOCKER_REGISTRY}}/{{.IMAGE_NAME}}/{{.CLIENT_NAME}}:{{.DIGEST_HEX}}'
    local: {}
  deploy:
    helm:
      releases:
      - name: '{{.CLIENT_NAME}}'
        chartPath: charts/'{{.CLIENT_NAME}}'
        setValueTemplates:
          image.repository: '{{.DOCKER_REGISTRY}}/{{.IMAGE_NAME}}/{{.CLIENT_NAME}}'
          image.tag: '{{.DIGEST_HEX}}'
          clientname: 'myclientname'

客户端名称 Values.yaml 的值设置为 myclientname 的预期行为

实际行为 Values.yaml 中的值没有改变

jx版

NAME               VERSION
jx                 2.0.743
jenkins x platform 2.0.1182
Kubernetes cluster v1.12.10-eks-825e5d
kubectl            v1.13.7-eks-c57ff8
helm client        Client: v2.14.3+g0e7f3b6
git                2.16.5
Operating System   CentOS Linux release 7.6.1810 (Core)

詹金斯类型 经典詹金斯

Kubernetes 集群 EKS

4

1 回答 1

2

据我所知,管道不再使用 skaffold。他们已将构建器切换到 google kaniko。将值插入模板的最佳方法是通过charts/myapp/templates/deployment.yamlcharts/myapp/values.yaml

尝试将以下内容添加到 values.yaml

env:
   clientname: myclientname 

更新deployment.yaml模板以替换值(可以使用除 env 之外的其他变量,这只是为了演示替换的目的而显示)

# ...
spec:
      containers:
        env:
        - name: clientname
          value: {{ .Values.env.clientname }}
# ...
于 2020-01-08T04:37:16.420 回答