通过 Flux 同步 helmrelease

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

我有一个问题,我正在寻找更通用的答案方法或策略。我对 HelmRelease 有一些变化,它指向 oct 容器注册表。该图表保持静态,并具有一个部署,其中图像设置为开发标签。

当我触发图表版本更改时,我的设置会拉取图像,但我不想在每个构建上更改图表版本(因为图表没有更改),而是有通量或实施策略,在以下情况下拉取新图像:图像摘要与当前部署的图像摘要不同。

每次开发分支发生更改时,我的管道都会构建一个新映像,并使用开发标签将新映像添加到 CR。

因此,我再次拥有的是一个静态使用带有开发标签的图像引用的部署,但是当图像摘要更改时,直到我更改图表版本时才会拉动它。有没有人解决过这个问题或者遇到过类似的情况?

这些是我的助焊剂规格:

---
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
metadata:
  name: nchart-repository
  namespace: flux-system
spec:
  interval: 1m0s
  url: oci://gitttt.asd.com:5050/company/assets/asd/chart
  type: oci
  secretRef:
    name: temp-credz
---
apiVersion: helm.toolkit.fluxcd.io/v2beta2
kind: HelmRelease
metadata:
  name: niccom-dev
  namespace: flux-system
spec:
  chart:
    spec:
      chart: ncom-chart
      sourceRef:
        kind: HelmRepository
        name: nchart-repository
      version: 0.1.6
      valuesFiles:
        - values-dev.yaml
      reconcileStrategy: Revision
  interval: 2m
  timeout: 1m
  driftDetection:
    mode: enabled

我发布到 CR 的图表 oci://gitttt.asd.com:5050/company/assets/asd/chart/ncom-chart:0.1.6

其中包含带有片段

的部署
containers:
      - name: {{ .Values.www.name }}
        image: "{{ .Values.base_repo.path }}{{ .Values.www.www_container_repository }}:{{ .Values.www.www_container_tag }}"

通过 helm 安装后生成的镜像值 gitttt.asd.com:5050/company/assets/xyz/www:develop

正如我上面提到的,当我将图表版本升级到 0.1.7 等时,一切都有效,但我想要的是保持图表静态指向开发标签并仅构建图像。

kubernetes gitlab kubernetes-helm flux gitops
1个回答
0
投票

1-利用 Kubernetes ImagePullPolicy:

  • 确保您的 Kubernetes 部署的 imagePullPolicy 设置为 Always 或 IfNotPresent。这可以确保 Kubernetes 每次 pod 启动时都会拉取最新的镜像。

2- 更新 HelmRelease 中的图像摘要:

  • 您可以直接更新图像摘要,而不是更新 HelmRelease 中的图表版本。
  • 每当构建新映像时,让 CI 管道使用新映像摘要更新 HelmRelease 资源。您可以使用 kubectl patch 等工具或 CI/CD 系统支持的任何其他方法来更新 HelmRelease 资源。

3- Flux 图像更新自动化:

  • 配置 Flux 以在图像摘要发生更改时自动更新 HelmRelease 资源。
  • 您可以通过为 Flux 设置 GitRepository 或 HelmRepository 来监视 HelmRelease 资源中的更改来实现此目的。
  • Flux 将自动检测 HelmRelease 资源中的更改并将其应用到您的集群。
© www.soinside.com 2019 - 2024. All rights reserved.