
Flux 项目宣布了 Flux v2.6.0 版本的发布。这个版本标志着 Flux 开放容器计划(OCI)构件特性的全面可用性(GA),代表了组织处理GitOps的方式的根本转变。这个版本验证了 Flux 团队所说的“无 Git 的 GitOps 模型”的成熟,在这个模型中,Flux 控制器独立于 Git 存储库运行,完全依赖于容器注册表作为 Kubernetes 集群期望状态的权威来源。
对 OCI 构件的支持之旅开始于 2022 年,它的升级到 GA 状态反映了广泛的企业采用。主要的金融机构和企业正在采用 Flux 和 OCI 作为它们管理生产部署的首选方式,这证明了该模型的生产就绪性和企业级可靠性。
Flux 2.6 中另一个重要的增强是引入了用于镜像自动化的摘要绑定。这个特性通过允许 ImagePolicy
跟踪容器镜像的最新摘要,而 ImageUpdateAutomation
则使用加密可验证的摘要引用来更新清单,这解决了一个关键的安全问题。这确保部署引用特定的、不可变的镜像版本,防止了通过镜像进行潜在的供应链攻击。
该实现既支持传统的镜像引用,也支持更复杂的场景,其中存储库、标记和摘要值在 HelmReleases
等自定义资源中单独管理。这种灵活性使组织能够在自动化更新的同时,保持对其容器镜像供应链的细粒度控制。
Flux 2.6 引入了对象级别的工作负载身份支持,从根本上改变了多租户集群处理外部服务的身份验证方式。集群管理员现在可以使用 Kubernetes Workload Identity 为每个租户分配独特的云身份,而不是依赖需要手动轮换的静态秘密。这一增强既适用于使用 KMS 服务的 SOPS 解密,也适用于通过 OCIRepository 和 ImageRepository API 的容器注册表访问。
这一进步解决了企业 Kubernetes 管理中最具挑战性的一个方面:在既不损害最小权限原则,也能避免通过手动密钥管理创建操作产生开销的情况下,安全地为不同的租户提供适当的云资源访问。
GitHub App 认证集成的完成代表了另一个安全里程碑。基于 Flux v2.5 中引入的特性,该系统现在支持所有 Flux API 中的 GitHub App 身份验证,并使用智能令牌缓存来优化性能并减少身份验证请求。通知控制器利用这种身份验证方法进行 Git 提交状态更新和 GitHub Actions 工作流触发器。
通知功能已经通过公共表达式语言(Common Expression Language, CEL)支持扩展,用于自定义 Git 提交状态标识符。事实证明,这一增强对于管理基于 monorepo 的跨多个 Kubernetes 集群的机群部署的组织特别有价值,能够根据每个集群区分提交状态。
除了功能增强之外,Flux在 CNCF 安全性大满贯(CNCF Security Slam)中参与展示了该项目对安全的积极态度。Flux 在SLSA构建级别 3(SLSA Build Level 3)构建和签名,以防止上游镜像被篡改,从源头确保供应链的完整性。该架构避免了外部二进制依赖,使用原生 Go 代码和库为所有调和器提供服务,GPG 是唯一的例外。
对 OCI 构件支持的成熟使得以前使用传统的基于 Git 的方法无法实现的复杂安全性模型成为可能。由社区成员开发的 D2 参考架构(D2 Reference Architecture)展示了如何跨独立的机群、基础设施和应用程序存储库分布期望状态,并将各个组件内置于已签名的 OCI 构件中,以便进行独立部署。

D2 架构——存储库结构
这些 OCI 构件将其 GitHub Actions 构建运行器的工作流和分支名称编码到构件签名中,从而使集群能够验证部署是否来自指定分支上的特定工作流。这种验证机制通过 OCIRepository 的 spec.verify.matchOIDCIdentity
字段强制执行,提供了前所未有的构建来源保证。
这些社区贡献体现了开源模式在通过集体专业知识和多样化视角解决安全挑战方面的优势。
原文链接:
评论