【问题标题】:Multiline overrideValues Helm install Azure DevOps多行 overrideValues Helm 安装 Azure DevOps
【发布时间】:2020-09-10 07:59:18
【问题描述】:

是否可以在 Azure devOps 管道的 HelmDeploy 任务中指定要覆盖的值?例如,类似于下面的任务(显然不能完全按原样工作):

  - task: HelmDeploy@0
              displayName: 'helm install'
              inputs:
                connectionType: 'Azure Resource Manager'
                azureSubscription: '$(RM_SERVICE_CONNECTION_NAME)'
                azureResourceGroup: '$(AKS_RESOURCE_GROUP)'
                kubernetesCluster: '$(AKS_NAME)'
                namespace: '$(AKS_NAMESPACE)'
                command: 'install'
                chartType: 'FilePath'
                chartPath: '$(deploymentChartName)'
                releaseName: test-release
                overrideValues: |
                  value1='value_1'
                  value2='value_2'                 

是否有任何类似于上述示例的格式可以使用?

【问题讨论】:

    标签: azure-devops kubernetes-helm azure-pipelines-yaml


    【解决方案1】:

    恐怕overrideValues 字段不能接受多行覆盖变量。正如document 所说,多个值应该用逗号分隔值key1=val1,key2=val2

    不过,您可以尝试使用arguments 字段并传递变量。

    见下文:

      - task: HelmDeploy@0
        displayName: 'helm install'
        inputs:
           connectionType: 'Azure Resource Manager'
           azureSubscription: '$(RM_SERVICE_CONNECTION_NAME)'
           ...
           ...
           arguments: >
              --set foo=bar
              --set foo1=bar1
              --set foo2=bar2
    

    【讨论】:

    • 谢谢。你确认这行得通吗?它似乎对我不起作用。
    • @ejlouw 抱歉,我在上述解决方法中有错字。 | 中的 arguments 应更改为 >。我更正了上面的 yaml 脚本。它经过测试并且有效。
    • 嗨@ejlouw 您有机会尝试上述更新吗?您的情况如何?
    • 只是补充一些理论信息,这个 YAML 特性叫做"Folded Multi-line Strings"
    【解决方案2】:

    事实上,这个问题中的语法完全一样。新行用逗号连接。

    documentation中也有这样的表述。

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

    我正在为我的所有管道使用此语法,并按预期运行。

    overrideValues: |
        value1='value_1'
        value2='value_2'
    

    我们在这里使用管道的原因是我们想要保留新行。此标准 yaml 语法记录在 here

    块样式指示器:块样式指示块内的换行符应如何表现。 如果您希望将它们保留为换行符,请使用由竖线 (|) 指示的文字样式。如果您希望将它们替换为空格,请使用折叠样式,由右尖括号 (>) 指示。 (要使用折叠样式获得换行符,请通过放入两个换行符留下一个空行。带有额外缩进的行也不折叠。)

    回到值,如果单个值包含文档中所述的新行或我自己的经验中的空格,那么事情就会有问题。这里建议的方法是使用值文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 2020-01-14
      • 2021-01-27
      • 2021-06-10
      • 2020-12-28
      相关资源
      最近更新 更多