【问题标题】:override config map in helm chart during azure devops deploy在 azure devops 部署期间覆盖 helm 图表中的配置映射
【发布时间】:2021-02-03 05:08:22
【问题描述】:

我们正在使用 helm 图表模板部署到 kube 和 Azure devops for CI/CD.in my values.yaml data 下面部分将根据环境更改并保存为 pod 中的配置图。 我的问题是如何在 azure 管道中部署期间对其进行更新。我们正在使用 Helm 升级任务或任何其他方式来更好地处理它。

environment:
    enabled: true
    env:
      enabled: false
    internalConfigMap:
      enabled: true
      **data:
        AZ_DIRECTORY: xxx
        MODEL_ID_SVM: xxx
        MODEL_ID_MULTI: xxx
        MODEL_THRESHOLD_SVM: 'xx'
        SINGLE_ACC_ENDPT: 'xx'
        MODEL_WT_SVM: 'xx'**

这里是部署任务:(忽略缩进)

task: HelmDeploy@0
     displayName: Helm upgrade
                inputs:
                  command: upgrade
                  chartType: Name
                  chartName: chart/$(chartname)
                  releaseName: $(chartname)-${{ parameters.CI_ENVIRONMENT_SLUG }}
                  namespace: $(NAMESPACE)
                  connectionType: Azure Resource Manager
                  #azureSubscriptionEndpoint: ${{ variables.AZ_SUBSCRIPTION }}
                  #azureResourceGroup: $(AKS_RESOURCE_GROUP)
                # kubernetesCluster: $(K8S_CLUSTER)
                  install: true
                  waitForExecution: true
                  useClusterAdmin: true
                  overrideValues: |
                    template.image.tag=$(imagetag)

【问题讨论】:

    标签: azure-devops devops kubernetes-helm


    【解决方案1】:

    选项 1:每个环境一个值文件

    如果每个环境有一个 values.yamlenvironment1-values.yamlenvironment2-values.yaml 等),您可以为管道中的每个阶段引用不同的文件。

    The Helm Upgrade command 接受参数valueFile,您可以使用该参数指向您要部署到的环境的正确values.yaml

    (可选)在 YAML 文件或 URL 中指定值。例如, 指定 myvalues.yaml 将导致 helm install --values=myvals.yaml

    选项 2:在部署时覆盖值

    The Helm Upgrade command 接受参数overrideValues,您可以通过该参数直接将值传递给 helm:

    (可选)在命令行上设置值。可以指定多个 通过用逗号分隔值。例如, 键 1 = 值 1,键 2 = 值 2。您还可以通过以下方式指定多个值 用换行符分隔它们:key1=val1 key2=val2 请注意 如果您有一个本身包含换行符的值,请使用 valueFile 选项,否则任务会将换行符视为分隔符。 该任务将使用这些设置值构造 helm 命令。 例如 helm install --set key1=val1 ./redis

    在你的情况下,这意味着

       overrideValues: template.image.tag=$(imagetag),environment.internalConfigMap.data.AZ_DIRECTORY=xxx,environment.internalConfigMap.data.MODEL_ID_SVM=xxx
    

    【讨论】:

    • 选项 2 看起来更快,所以我可以这样写:template.environment.internalconfigmap.data: key1=value1,key2=value2,key3=value3
    • 不,就像这样:overrideValues: template.image.tag=$(imagetag),environment.internalConfigMap.data.AZ_DIRECTORY=xxx,environment.internalConfigMap.data.MODEL_ID_SVM=xxx(假设您想保留已有的覆盖值)
    猜你喜欢
    • 2018-12-08
    • 2019-02-15
    • 1970-01-01
    • 2014-09-11
    • 2019-07-14
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多