我们正在使用 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)
答案 0 :(得分:1)
如果每个环境(values.yaml
、environment1-values.yaml
等)都有一个 environment2-values.yaml
,则可以为管道中的每个阶段引用不同的文件。
The Helm Upgrade
command 接受参数 valueFile
,您可以使用它来指向要部署到的环境的正确 values.yaml
(可选)在 YAML 文件或 URL 中指定值。例如, 指定 myvalues.yaml 将导致 helm install --values=myvals.yaml
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