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

Dyn*_*nde 8 continuous-deployment gitops argocd

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

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

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

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

Ali*_*Ali 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
Run Code Online (Sandbox Code Playgroud)

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

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