如何在ArgoCD应用定义中配置Helm的--create-namespace参数?
解决ArgoCD同步cert-manager时命名空间不存在的问题
你的核心问题是没有在ArgoCD应用的目标配置里明确指定命名空间,仅通过Helm参数设置namespace会导致CreateNamespace=true无法生效。要实现等效于Helm--create-namespace的效果,只需调整以下配置:
- 移除Helm参数中的
namespace配置(ArgoCD会通过目标配置控制部署命名空间,无需重复设置) - 在
spec.destination中添加目标命名空间cert-manager - 保留
syncPolicy.syncOptions里的CreateNamespace=true,这个选项就是ArgoCD对应Helm--create-namespace的实现
修改后的完整应用定义:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: cert-manager namespace: argocd spec: project: default source: repoURL: 'https://charts.jetstack.io' targetRevision: v1.15.1 chart: cert-manager helm: parameters: - name: crds.enabled value: 'true' - name: startupapicheck.timeout value: 5m destination: server: 'https://kubernetes.default.svc' namespace: cert-manager syncPolicy: syncOptions: - CreateNamespace=true
这样配置后,ArgoCD同步时会先自动创建cert-manager命名空间,再执行Helm安装操作,就能解决命名空间不存在的报错。
内容的提问来源于stack exchange,提问作者Marcus
相关产品推荐
相关产品推荐

