Flux v2.7 正式发布

软件资讯 软件资讯 发布于 3小时前 0 浏览 0 回复

Flux v2.7.0 现已正式发布

Flux v2.7 正式发布

主要更新

Flux v2.7 标志着镜像更新自动化功能的正式 GA,同时引入了新的 ExternalArtifact 和 ArtifactGenerator API,用于支持更复杂的源组合与拆分模式。

本次发布还为 Flux 控制器增加了多项新功能,包括支持监控 ConfigMaps 和 Secrets 的引用变更、通过 CEL 表达式扩展依赖的就绪状态评估,以及支持 OpenTelemetry 跟踪 Flux Kustomization 和 HelmRelease 的调和过程。

生态系统方面,发布了新版本的 Flux Operator,集成了集群内镜像自动更新功能,支持 GitLess GitOps 工作流。

镜像更新自动化正式 GA

本版本实现了 Flux Image Automation API 和控制器的 GA。image-reflector-controller 和 image-automation-controller 联动,当容器镜像仓库有新镜像时,会自动更新 Git 仓库中的 Kubernetes 清单。

以下 API 已升级为稳定版 v1:

  • ImageRepository
  • ImagePolicy
  • ImageUpdateAutomation

ImagePolicy API 新增了 .spec.suspend 字段,用于暂停和恢复策略评估。ImageUpdateAutomation 支持 Git 稀疏检出,启用方式是在 image-automation-controller 中添加 --feature-gates=GitSparseCheckout=true 参数。

此外,image-automation-controller 现支持使用 Kubernetes Workload Identity 认证 AzureDevOps 仓库。

不兼容变更:

  • image-reflector-controller 中自 2023 年起弃用的 autologin 参数已移除,用户需在 ImageRepository.spec.provider 设置相应云厂商。

  • ImageUpdateAutomation 中弃用自 2024 年起的 commit 模板字段 .Updated 和 .Changed.ImageResult 被移除,建议迁移到:

    • .Changed.FileChanges(详细变更)

    • .Changed.Objects(对象级变更)

    • .Changed.Changes(扁平变更列表)

监控 ConfigMaps 和 Secrets 的变更

从 Flux v2.7 起,kustomize-controller、helm-controller 和 notification-controller 支持监控 ConfigMaps 和 Secrets 的引用变更。

监控的引用字段包括:

  • Kustomization.spec.postBuild.substituteFrom

  • Kustomization.spec.decryption.secretRef

  • Kustomization.spec.kubeConfig.secretRef

  • Kustomization.spec.kubeConfig.configMapRef

  • HelmRelease.spec.valuesFrom

  • HelmRelease.spec.kubeConfig.secretRef

  • HelmRelease.spec.kubeConfig.configMapRef

  • Receiver.spec.secretRef

当被监控的 ConfigMap 或 Secret 变更,且对象标记有 reconcile.fluxcd.io/watch: Enabled 标签时,控制器会立即触发调和。

若想监控所有引用对象而不需要打标签,可通过 --watch-configs-label-selector=owner!=helm 参数配置控制器。

远程集群的 Workload Identity 认证

Flux v2.7 支持在 Kustomization 和 HelmRelease 资源层面配置 Workload Identity,用于 hub-and-spoke 模式中云厂商认证。

这让集群管理员可以使用 hub 集群的云身份认证 spoke 集群,无需创建和管理静态 kubeconfig Secrets。

更多配置详情参考:

  • Kustomization - remote cluster apply

  • HelmRelease - remote cluster apply

对象级 Workload Identity

Flux v2.7 完成了 Kubernetes Workload Identity 对所有支持云厂商认证的 Flux API 的集成,支持以下资源:

  • Bucket.spec.serviceAccountName(认证 AWS S3、Azure Blob、Google Cloud Storage)

  • GitRepository.spec.serviceAccountName(认证 Azure DevOps)

  • OCIRepository.spec.serviceAccountName(认证 AWS ECR、Azure Container Registry、Google Artifact Registry)

  • ImageRepository.spec.serviceAccountName(同上)

  • Kustomization.spec.decryption.serviceAccountName(认证 AWS KMS、Azure Key Vault、Google KMS)

  • Kustomization.spec.kubeConfig.configMapRef.name(认证远程 AWS EKS、Azure AKS、Google GKE)

  • HelmRelease.spec.kubeConfig.configMapRef.name(同上)

  • Provider.spec.serviceAccountName(认证 Azure DevOps、Azure Event Hub、Google Pub/Sub)

更多配置说明见:

  • AWS Workload Identity

  • Azure Workload Identity

  • GCP Workload Identity

OpenTelemetry 跟踪支持

从 Flux v2.7 起,用户可通过配置类型为 otel 的 Provider,启用 Flux 调和的 OpenTelemetry 跟踪:

apiVersion: notification.toolkit.fluxcd.io/v1beta3
kind:Provider
metadata:
name:jaeger
namespace:flux-system
spec:
type:otel
address:http://jaeger-collector.jaeger:4318/v1/traces

notification-controller 会将 Flux 事件转换为 OTEL span,并基于 Flux 对象层级建立正确的追踪关系。源对象(GitRepository、HelmChart、OCIRepository、Bucket)生成根 span,Kustomization 和 HelmRelease 生成子 span。每个 span 包含事件元数据,服务标识使用告警名称和命名空间。

Flux v2.7 正式发布

Flux v2.7 正式发布

更多配置细节参考 notification-controller 文档。

控制器改进

  • GitRepository API 支持 GitHub App 的 mTLS 认证。

  • Kustomization API 支持 CEL 表达式扩展依赖就绪状态评估。

  • 新增 .spec.ignoreMissingComponents 字段,忽略源中缺失的 Kustomize 组件。

  • kustomize-controller 支持针对 Age 密钥的全局 SOPS 解密。

  • kustomize-controller 可配置在检测到新源版本时取消当前健康检查(--feature-gates=CancelHealthCheckOnNewRevision=true)。

  • HelmRelease API 支持 CEL 表达式扩展依赖就绪状态评估。

  • HelmRelease 新增 RetryOnFailure 策略,改善发布失败处理。

  • Provider API 支持通过 spec.proxySecretRef 设置代理,spec.certSecretRef 配置 mTLS。

  • Provider API 新增 Zulip 和 OpenTelemetry 跟踪支持。

CLI 改进

  • flux bootstrap 和 flux install 支持 --components-extra=source-watcher 参数,启用新组件 source-watcher。

  • 新增 flux migrate 命令,将 Kubernetes etcd 中的 Flux 资源迁移至最新 API 版本。

  • flux debug 增加 --show-history,显示 Flux 对象调和历史。

  • flux diff 支持处理 kustomize.toolkit.fluxcd.io/force: Enabled 注解。

  • flux create hr 增加 --storage-namespace 参数,改变 Helm 存储对象的命名空间。

  • 新增 ImagePolicy 相关命令:

    • flux reconcile image policy

    • flux suspend image policy

    • flux resume image policy

  • 新增 ArtifactGenerator 相关命令:

    • flux get artifact generator

    • flux export artifact generator

    • flux tree artifact generator

    • flux events --for ArtifactGenerator/<name>

Artifact Generators

Flux v2.7 新增 source-watcher 组件,可通过 --components-extra=source-watcher 开启。

source-watcher 控制器实现了 ArtifactGenerator API,支持:

  • 多个 Flux 源(GitRepository、OCIRepository、Bucket)组合成单一可部署工件

  • 将 monorepo 拆分成多个独立工件,各自拥有独立部署生命周期

  • 只在特定路径变更时触发调和,提升效率

  • 方便构建由不同团队维护的分布式复杂部署

多源组合示例

ArtifactGenerator 可将多个源组合成单个部署工件,比如将上游 OCI Helm Chart 与组织自定义配置合并:

apiVersion: source.extensions.fluxcd.io/v1beta1
kind:ArtifactGenerator
metadata:
name:podinfo
namespace:apps
spec:
sources:
    -alias:chart
      kind:OCIRepository
      name:podinfo-chart
    -alias:repo
      kind:GitRepository
      name:podinfo-values
artifacts:
    -name:podinfo-composite
      originRevision:"@chart"
      copy:
        -from:"@chart/"
          to:"@artifact/"
        -from:"@repo/charts/podinfo/values.yaml"
          to:"@artifact/podinfo/values.yaml"
          strategy:Overwrite
        -from:"@repo/charts/podinfo/values-prod.yaml"
          to:"@artifact/podinfo/values.yaml"
          strategy:Merge
---
apiVersion:helm.toolkit.fluxcd.io/v2
kind:HelmRelease
metadata:
name:podinfo
namespace:apps
spec:
interval:15m
releaseName:podinfo
chartRef:
    kind:ExternalArtifact
    name:podinfo-composite

Monorepo 拆分示例

ArtifactGenerator 可将 monorepo 拆分为多个独立工件,分别管理生命周期:

apiVersion: source.extensions.fluxcd.io/v1beta1
kind:ArtifactGenerator
metadata:
name:app-decomposer
namespace:apps
spec:
sources:
    -alias:git
      kind:GitRepository
      name:monorepo
artifacts:
    -name:frontend
      originRevision:"@git"
      copy:
        -from:"@git/deploy/frontend/**"
          to:"@artifact/"
    -name:backend
      originRevision:"@git"
      copy:
        -from:"@git/deploy/backend/**"
          to:"@artifact/"
---
apiVersion:kustomize.toolkit.fluxcd.io/v1
kind:Kustomization
metadata:
name:frontend-service
namespace:apps
spec:
interval:15m
prune:true
sourceRef:
    kind:ExternalArtifact
    name:frontend
path:./
---
apiVersion:kustomize.toolkit.fluxcd.io/v1
kind:Kustomization
metadata:
name:backend-service
namespace:apps
spec:
interval:15m
prune:true
sourceRef:
    kind:ExternalArtifact
    name:backend
path:./

backend-service 仅在 deploy/backend/ 变更时触发调和,其他服务不受影响。

更多使用详情见 source-watcher 文档。

支持的版本

Flux v2.4 已停止维护,不再支持。

Flux v2.7 支持以下 Kubernetes 版本:

Flux v2.7 正式发布

企业支持方面,CNCF Flux 项目仅支持 Kubernetes 最近三个小版本。对于更早版本,企业用户可通过 ControlPlane 等厂商获取 Flux 企业级支持。

更多详情可查看官方公告



同类文章推荐:

  • 谷歌发布 Gemini 2.5 Computer Use 模型
  • OpenAI 正式上线 GPT-5 Pro API
  • OpenAI 宣布 AI 编程助手 Codex 正式 GA
  • React 19.2.0 发布
  • Python 虚拟环境 VirtualEnv 20.35.0 版本发布
  • 高通宣布收购 Arduino