通过ArgoCD向Helm传递字符串参数遇错,如何覆盖values.yaml?
解决ArgoCD部署Vault Helm Chart时server.ha.config字符串参数报错问题
问题原因
使用ArgoCD的helm.parameters传递多行字符串类型的server.ha.config时,ArgoCD的参数解析逻辑会将该参数识别为需要数组或null类型,与实际传入的字符串类型不匹配,触发报错。
解决方案
放弃helm.parameters,改用helm.values直接覆盖配置,可正确传递多行字符串格式的内容,无需复刻原仓库修改values.yaml。
修改后的Application清单如下:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: vault namespace: argocd spec: project: hashicorp-vault source: repoURL: https://github.com/hashicorp/vault-helm targetRevision: "v0.21.0" path: . helm: values: | server: ha: config: | listener "tcp" { address = "[::]:8200" cluster_address = "[::]:8201" tls_cert_file = "/vault/userconfig/vault-server-tls/vault.crt" tls_key_file = "/vault/userconfig/vault-server-tls/vault.key" tls_client_ca_file = "/vault/userconfig/vault-server-tls/vault.ca" } destination: name: hashicorp-vault namespace: hashicorp-vault
原理说明
helm.values支持直接编写完整的YAML配置片段,能正确处理多行字符串这类复杂值;而helm.parameters更适合传递简单键值对参数,对于嵌套层级深、格式复杂的配置,使用values覆盖是更稳妥的方式。
内容的提问来源于stack exchange,提问作者Jack Holland
相关产品推荐
相关产品推荐

