我正在尝试使用 Flux 从 Helm Chart 部署应用程序,我只需要添加我的
values.yaml
文件。所以我有:
a
HelmRepository
指向公开可用的图表
A
HelmRelease
使用 Flux ci 创建,其中值文件可直接在命令行上使用。
这有效。 但我希望有一个包含 value.yaml 文件的 git 存储库,该文件由 Flux 监视更改,然后更新版本。
这可能吗?
我特别希望保持
values.yaml
文件独立于 Flux,因为它可以在不包含 Flux 的其他部署中使用。我知道我可以直接在 HelmRelease
中“输入”,但这就是我不想要的。
是的,使用 Flux 可以实现您所描述的目标。您可以拥有一个包含values.yaml 文件的单独的Git 存储库,并且Flux 可以监视此存储库的更改。当发生更改时,Flux 可以自动使用新值更新 HelmRelease。 以下是有关如何设置的分步指南:
创建一个单独的 Git 存储库来存储 value.yaml 文件。该存储库将专门用于存储配置值。 将您的values.yaml 文件提交到此存储库。
配置 Flux 以监视值存储库: 配置 Flux 以监视包含 value.yaml 文件的 Git 存储库。您可以通过创建指向您的值存储库的 GitRepository 类型的 Flux 自定义资源 (CR) 来完成此操作。 示例:
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: GitRepository
metadata:
name: values-repo
namespace: flux-system
spec:
interval: 1m
url: <URL_OF_VALUES_REPO>
配置 Flux 以将值应用于 HelmRelease:
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
name: my-release
namespace: default
spec:
chart:
repository: <CHART_REPOSITORY>
name: <CHART_NAME>
version: <CHART_VERSION>
valuesFrom:
- kind: GitRepository
name: values-repo
path: values.yaml
通过此设置,Flux 将定期检查您的值存储库是否有更改。当检测到更改时,Flux 将使用存储库中的 values.yaml 文件中的新值自动更新 HelmRelease。这使您可以保持值文件独立于 Flux,同时仍然受益于自动更新。
另一种方法(GitRepository + helmRelease)。您可以下载 Helm 图表,将其存储在单独的 Git 存储库中,然后配置 Flux 以监视此存储库的更改。具体方法如下:
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: GitRepository
metadata:
name: chart-repo
namespace: flux-system
spec:
interval: 1m
url: <URL_OF_CHART_REPO>
注意,使用此方法,仅当 Chart.yaml 文件中的图表版本更改时才会触发 Flux