我的情况如下:
- 有一个带有几个节点的 Kubernetes 集群
- 在集群上安装了 argocd 并且运行良好
- 将 gitlab 用于我的仓库并构建管道
- 有另一个用于存储我的掌舵图的存储库
- 在 gitlab 中构建 docker 图像并推送到我的 gitlab 注册表
- 让 argocd 能够指向我的 helm chart repo 并将 helm chart 与我的 k8s 集群同步
- 将 helm chart 存档文件推送到我的 gitlab 存储库
虽然这是一个不错的设置,但并不理想。
我在使用 helm chart git repo 时遇到的第一个问题是我不能(或不知道)如何区分我的暂存环境和我的生产环境。由于我的集群中有一个 dev 环境和 prod 环境,因此 argocd 将这两个环境与 helm chart repo 同步。我可以为每个环境使用单独的图表来解决这个问题,但这不是一个有效的解决方案。
在尝试解决上述问题时,我面临的第二个问题是我无法让 argocd 从 gitlab oci 注册表中提取 helm 图表。我这样做是为了让我的构建管道将 helm chart 存档文件推送到我的 gitlab 容器注册表,带有标签dev-latestor prod-latest,这很棒,正是我想要的。问题是,据我所知,argocd 无法从 gitlab 的容器注册表中提取。
如何使用 gitlab 作为我的 repo 和构建管道、用于打包我的应用程序的 helm 以及用于将我的 helm 应用程序与我的 k8s 集群同步的 argocd 来自动化我的管道?