Jenkins X将自定义变量的值传递到掌舵值中

时间:2019-09-21 12:48:42

标签: devops continuous-deployment kubernetes-helm aws-eks jenkins--x

摘要 我在头盔的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

1 个答案:

答案 0 :(得分:2)

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

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

env:
   clientname: myclientname 

更新 deployment.yaml 模板以替换值(可以使用除env之外的其他var,仅出于演示替换的目的而显示了此

# ...
spec:
      containers:
        env:
        - name: clientname
          value: {{ .Values.env.clientname }}
# ...