如何通过Terraform为Argo CD添加用户并配置admin API权限
Terraform部署ArgoCD配置用户与API权限正确方案
不要单独创建kubernetes_config_map资源修改Helm管理的argocd-cm:
- 同名资源会和Helm release的所有权冲突,直接报资源已存在错误
- 用
generate_name生成的是带随机后缀的新ConfigMap,名称不匹配ArgoCD固定读取的argocd-cm,配置完全不会生效,还会残留无效资源
所有自定义配置直接通过helm_release传值实现即可,这是官方推荐的无冲突方案。
修复set块传值报错问题
你之前遇到的failed parsing key "accounts.new-user" with value apiKey, login, key " login" has no value报错,有两个核心原因:
- argo-helm 4.x版本后,
argocd-cm的自定义配置必须放在configs.cm路径下,直接写accounts.xxx无法注入到对应ConfigMap - 带逗号的字符串值会被Helm默认当成分隔符拆分为多个键值对,需要显式指定值类型为字符串避免拆分
正确的set块写法如下:
# 新增自定义用户 set { name = "configs.cm.accounts.new-user" value = "apiKey, login" type = "string" } set { name = "configs.cm.accounts.new-user.enabled" value = "true" } # 为默认admin开启API访问权限 set { name = "configs.cm.accounts.admin" value = "apiKey, login" type = "string" }
完整可用配置参考
resource "helm_release" "argo_cd" { chart = "argo-cd" repository = "https://argoproj.github.io/argo-helm" name = "argocd" namespace = var.namespace # 新增用户new-user,授予登录和API Key权限 set { name = "configs.cm.accounts.new-user" value = "apiKey, login" type = "string" } set { name = "configs.cm.accounts.new-user.enabled" value = "true" } # 为默认admin用户开启API Key权限 set { name = "configs.cm.accounts.admin" value = "apiKey, login" type = "string" } }
部署验证步骤
- 先清理之前测试残留的无效ConfigMap:执行
kubectl get configmap -n argocd,删除所有名称为argocd-cm-加随机后缀的无效资源 - 执行
terraform apply更新Helm发布,等待1-2分钟让ArgoCD组件重载配置 - 获取admin初始密码:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d - 登录ArgoCD CLI:
argocd login <你的ArgoCD服务访问地址> --username admin --password <上一步获取的初始密码> - 验证账号配置:执行
argocd account list,即可看到admin和new-user两个账号,均已关联apiKey、login权限。
内容的提问来源于stack exchange,提问作者praiseHellRaiseDale
相关产品推荐
相关产品推荐

