2

我们正在使用 ArgoCD 在我的公司尝试使用 GitOps,我们有一个主要问题:

Jenkins,我们的 CI 工具,目前在合并任何 PR 时推送到我们的 docker 存储库,该 PR 带有与当前使用的 git 提交哈希相关的标签。

编辑:我们希望在选择 targetRevision 后,将其 git 哈希作为字符串用于覆盖我们 helm 图表中的 imageTag 的值。

现在选项 1 是我们只是让它也更改任何相关 kubernetes 文件中的 imageTag。

但是我想知道是否有一种方法可以使用 ArgoCD 的 PreSync 挂钩来自动执行此操作。它已经知道 git 哈希,因为它已经提取了 git。让 Jenkins 进行 git 提交从来都不是理想的选择。

谢谢您的帮助!

4

1 回答 1

1

您可以使用targetRevision: HEAD

https://github.com/argoproj/argocd-example-apps/blob/master/apps/values.yaml

所以 ArgoCD 中的应用程序配置就像

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: message-app-staging
  namespace: argocd
  environment: staging
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
  project: default

  # Source of the application manifests
  source:
    repoURL: https://github.com/akash-gautam/message-app-manifests.git
    targetRevision: HEAD
    path: manifests/staging

  # Destination cluster and namespace to deploy the application
  destination:
    server: https://kubernetes.default.svc
    namespace: staging

  syncPolicy:
    automated:
      prune: false
      selfHeal: false

如果指定了分支名称或符号引用(如 HEAD),Argo CD 将持续将实时状态与指定分支顶端定义的资源清单或符号引用的已解析提交进行比较。

上述情况最好与 helm 一起使用。

如果您在 YAML 中有静态清单,我建议您也结帐:https ://github.com/Alwinius/bow或https://github.com/keel-hq/keel

Bow 从包含 Kubernetes Deployments/StatefulSets 或 Helm 模板的 GitOps 部署存储库中定义的 Docker 镜像注册表中检测更新的镜像标签。

额外:https ://www.padok.fr/en/blog/argocd-image-updater

于 2021-09-11T06:07:25.310 回答