1

我有一个 argocd 存储库,其中包含 Kubernetes 集群的所有配置。现在我想和 PR 一起工作,并且只想在合并之前合并在我们的持续集成系统上测试过的东西。为此,我的想法是创建另一个集群,然后将分支部署到该集群。遗憾的是,argocd 在其 yaml 文件中定义了revisionand targetRevision——因此,这是在 git 中“硬编码”的。

切换版本的最佳方式是什么,以便我可以“应用”任何功能分支并仍然将其链接到集群?

目标

GIT - Branch master    -> prod-Cluster
    - Branch dev       -> dev-Cluster
    - Branch feature.. -> feature-Cluster using kind

ArgoCD 配置

Application (root) -> ApplicationSet (app-of-appset) -> apps/* directory containing kustomization files

应用程序集的示例 argo 配置

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: cluster-addons
spec:
  generators:
  - git:
      repoURL: https://github.com/argoproj-labs/applicationset.git
      revision: HEAD <--------- Thats what I want to adjust for testing
      directories:
      - path: examples/git-generator-directory/cluster-addons/*
  template:
    metadata:
      name: '{{path.basename}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/argoproj-labs/applicationset.git
        targetRevision: HEAD <--------- Thats what I want to adjust for testing
        path: '{{path}}'
      destination:
        server: https://kubernetes.default.svc
        namespace: '{{path.basename}}'
4

1 回答 1

0

我认为唯一的方法是在同一个仓库中为每个分支部署不同的应用程序。查看ArgoCD 文档中的以下信息:

如果您从存储库中的单个路径获取多个应用程序,您还可以将参数覆盖存储在应用程序特定文件中。

应用程序特定文件必须命名为.argocd-source-<appname>.yaml,其中是覆盖有效的应用程序的名称。

如果存在非应用程序特定.argocd-source.yaml的,将首先合并该文件中包含的参数,然后合并应用程序特定的参数,这也可以包含对存储在非应用程序特定文件中的参数的覆盖。

或者您可以尝试修补应用程序:

argocd app patch APPNAME --patch '[{"op": "replace", "path": "/spec/template/spec/source/targetRevision", "value": "HEAD"}]'

接着argocd app sync APPNAME

然而,当它被硬编码时,一切都会变得困难。

于 2022-02-17T21:36:29.213 回答