掌舵 | Jenkins Azure keyvault 机密作为掩码传递 (********),因此它在 helm 命令中抛出无值异常

Helm | Jenkins Azure keyvault secrets are passing as masked(********),So it's throwing no value exception in helm command

我正在尝试使用 helm 图表将 java 微服务部署到 azure kubernetes 中,我的应用程序几乎没有像数据库用户名和密码这样的秘密。我将我的秘密存储在 azure keyvault 中。使用 Azure Key vault 插件和服务主体,我正在尝试获取机密。测试连接在插件中成功,我可以打印我的秘密,如下所述。但是在将秘密传递给 helm 命令时,我遇到了以下异常

Error: failed parsing --set data: key "****" has no value

如果我对秘密进行硬编码,它就可以工作。

我的詹金斯文件如下所示

    *** Pipeline Code ***
pipeline {
  agent any
  environment {
    DB-USERNAME = credentials('db-username')
    DB-PASSWORD = credentials('db-password')

  }
  stages {
    stage('Foo') {
      steps {
        echo DB-USERNAME
        echo DB-USERNAME.substring(0, DB-USERNAME.size() -1) // shows the right secret was loaded

sh 'helm upgrade --install $SERVICE $CHART_NAME --set $DB-USERNAME --set $DB-PASSWORD

      }
    }
  }
}

任何人都请告诉我这个

参考:

https://linuxhelp4u.blogspot.com/2020/04/integrate-jenkins-with-azure-key-vault.html

https://plugins.jenkins.io/azure-keyvault/

使用double quotesh一次

  • 如果你使用"double quotes", $var in sh "... $var ..." 将是 解释为 Jenkins 变量;

  • 如果你使用'single quotes', $var in sh '... $var ...' 将是 解释为 shell 变量。

示例

pipeline {
  agent any
  environment {
    DB-USERNAME = credentials('db-username')
    DB-PASSWORD = credentials('db-password')

  }
  stages {
    stage('Foo') {
      steps {
        echo DB-USERNAME
        echo DB-USERNAME.substring(0, DB-USERNAME.size() -1) // shows the right secret was loaded

sh "helm upgrade --install $SERVICE $CHART_NAME --set $DB-USERNAME --set $DB-PASSWORD"

      }
    }
  }
}