You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Argo CD中预创建应用所需环境?

用Argo CD的App of Apps模式搞定全流程GitOps上线

核心结论:App of Apps完全能管非Application资源

别纠结,App of Apps模式本质就是用一个父Application统筹所有上线相关资源——不止是子Application CRD,Namespace、Secret、ConfigMap这类K8s原生资源都能直接用它创建。至于集群外的Azure ACR令牌这类任务,也能通过Argo的扩展能力搞定。

具体玩法

1. 预创建Namespace和集群内基础资源

把这些前置资源和子应用放在同一个Git仓库里,用父Application统一同步就行:

  • 参考目录结构:
    git-repo/
    ├── base-setup/
    │   ├── my-app-ns.yaml       # 手动定义的Namespace
    │   ├── app-db-secret.yaml   # 应用所需的Secret
    │   └── app-config.yaml      # 应用的ConfigMap
    └── apps/
        ├── backend-app.yaml     # 后端服务的Application CR
        └── frontend-app.yaml    # 前端服务的Application CR
    
  • 父Application配置里,spec.source.path可以用逗号分隔多个路径(比如base-setup,apps),这样Argo CD会先同步基础资源,再部署依赖这些资源的子应用,刚好符合“不让应用自动创建Namespace”的要求。

2. 搞定集群外资源(比如Azure ACR令牌)

Argo CD本身不直接处理集群外资源,但有两种靠谱方式:

  • 用Argo Workflows:在父Application里加入一个Argo Workflow CR,这个Workflow可以调用Azure CLI或Azure REST API创建ACR令牌,甚至能把生成的令牌自动同步到集群内的Secret中,供应用直接使用。
  • 自定义Argo CD插件:编写简单的插件脚本,在Argo CD同步资源时触发,完成ACR令牌的创建或更新。插件配置在Argo CD的configmap里,绑定到对应的Application即可。

踩坑提醒

  • 控制资源同步顺序:给子Application添加dependsOn字段,让它们等基础资源创建完成后再部署,示例:
    spec:
      dependsOn:
        - name: base-setup-app
          namespace: argocd
    
    同时在父Application的同步选项里设置Prune=false,防止误删基础资源。
  • 敏感数据别乱存:Secret这类敏感内容不要直接写在Git仓库中,可通过Argo CD集成HashiCorp Vault这类工具管理,或者通过Workflow动态生成后注入集群。

内容的提问来源于stack exchange,提问作者Zveratko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:13:23