在 azure devops 部署期间覆盖掌舵图中的配置映射

时间:2021-02-02 19:15:29

标签: azure-devops devops kubernetes-helm

我们正在使用 helm charts 模板部署到 kube 和 Azure devops for CI/CD。在我的 values.yaml 中数据 将根据环境更改并保存为 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)

1 个答案:

答案 0 :(得分:1)

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

如果每个环境(values.yamlenvironment1-values.yaml 等)都有一个 environment2-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=val1,键2=val2。您还可以通过以下方式指定多个值 用换行符分隔它们,如下所示: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