GitOps 中单独的存储库中的应用程序和环境配置 - 如何处理配置更改?

问题描述 投票:0回答:1

我已经开始了使用 k8s 和 argoCD 的 GitOps 之旅,使用单独的存储库来存储应用程序源和部署文件(清单、环境配置等),并且我正在尝试弄清楚,如果应用程序源代码更改还需要更改环境配置。

示例:应用程序已部署并在测试/QA 环境中运行,我想推送代码更改,这需要新的“DB_ConnectionString”环境变量。 由于此环境变量是新的,因此它不存在于我的部署/gitops 存储库的配置文件中(假设它是 Helm 值-QA.yml)。

如果我推送这个新的代码更改,CI 将构建应用程序并更新容器,这会提示 argoCD 部署新的容器版本 - 但因为我还没有更新 GitOps 存储库,所以它缺少这个新变量,并且部署将会失败。

我想我很难理解,如果在这些情况下,我被迫始终确保我的 GitOps 存储库在我的应用程序存储库之前更新,以及是否有最佳实践来处理此流程?

continuous-deployment argocd gitops
1个回答
0
投票

您想要的是利用“应用程序的多个来源”

更多信息在这里: https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/

例如:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  destination:
    server: https://kubernetes.default.svc
    namespace: default
  sources:
    - chart: elasticsearch
      repoURL: https://helm.elastic.co
      targetRevision: 8.5.1
    - repoURL: https://github.com/argoproj/argocd-example-apps.git
      path: guestbook
      targetRevision: HEAD

通过这种方法,您可以混合源,如果将其与“同步阶段和波”结合使用,您可以优先考虑部署顺序。

更多信息在这里: https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/

© www.soinside.com 2019 - 2024. All rights reserved.