【翻译】Flux:服务器端调和即将到来

原文发表于Flux的博客,作者Daniel Holbach

tl;dr: 服务器端调和将使Flux的性能更强,提高整体的可观察性,并在未来允许我们增加新的功能,如能够预览清单的本地更改,而无需推送到上游。

需要修改。由于Kubernetes的问题,我们至少需要一定的Kubernetes版本(从1.16.11开始--下面会详细介绍)。报告Kubernetes namespaced对象变化的日志、事件和警报现在使用Kind/Namespace/Name格式,而不是Kind/Name

我们很少这样做,但这次我们想提前通知你一个即将到来的大功能,你会很高兴。自从Kubernetes将服务器端应用转移到GA后,我们为你提供了一个基于它的新的调节器,并将API毕业到v1beta2

发生了什么

  • 这是什么时候发生的?
    随着Flux 0.18的发布,我们将转移到新的调节器。它将在未来几周内发布。更多信息请参考此PR
  • 我必须使用这个新东西吗?
    是的。Flux将更有性能,更不容易出错,从维护的角度来看,对我们来说也会更容易。我们理解这个新功能需要在你的终端进行改变,但我们确信你会喜欢这个新的体验
  • 我的集群会停止工作吗?
    不会,但你需要做一些准备工作,以确保Flux仍然能够应用你的配置。见下文。
    注意:飞行前的检查应该能够捕捉到诸如满足最低要求的Kubernetes版本的问题。

以下是你得到的东西

  • 新的调节器提高了性能(CPU、内存、网络、FD使用),并通过用Go编写的专门应用程序取代kubectl exec调用来减少对Kubernetes API的调用。
  • 我们能够验证和核对包含CRD和CR的源。
  • 可靠地检测和报告所需状态(git、s3等)和集群状态之间的漂移。
  • 在未来。预览清单的本地更改,而不推送到上游(flux diff -k命令待定)。
  • 能够等待所有应用的资源准备就绪,而不需要用户填写健康检查列表。
  • 通过实时报告垃圾收集和健康评估行动,提高调和过程的整体可观察性。

这是你需要做的准备工作

检查你在集群中运行的Kubernetes版本。下面所有的版本都修复了管理字段和字段类型的退步。

Kubernetes版本最低要求
v1.16>= 1.16.11
v1.17>= 1.17.7
v1.18>= 1.18.4
v1.19及以后版本>= 1.19.0

命名的对象必须包含metadata.namespace,默认的默认命名空间不再被支持。这意味着你需要在你的配置文件中找到任何默认的namespaced资源,并给它们一个命名空间。请记住,kustomizations经常被用来分配一个命名空间,所以即使一个特定的文件中没有命名空间,也可能不代表一个问题。

报告Kubernetes命名空间对象变化的日志、事件和警报现在使用Kind/Namespace/Name格式,而不是Kind/Name,例如。

服务/flux-demo/podinfo没有变化
部署/flux-demo/podinfo已配置
删除HorizontalPodAutoscaler/flux-demo/podinfo

任何依赖于日志中特定格式的自动化或监控都需要进行调整。理想情况下,你应该尝试同时处理新旧两种格式。

API变化方面,kustomize.toolkit.fluxcd.io/v1beta2API是向后兼容v1beta1的。这是由Kubernetes API服务器自动完成的,不需要准备。不过,你可能希望根据下表中的内容翻译你的FluxKustomization资源。

增加、废弃和删除的内容。

新版本中的变化你应该做什么
现在的版本是v1beta2更改版本:apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
.spec.validation删除现在已经假定服务器端验证了。从.spec中删除此字段。
.spec.patchesStrategicMerge已被弃用,改用.spec.patches.spec.patchesStrategicMerge中的每个条目转换为内联战略合并补丁,就像Kustomize 文档中给出的这个例子,并追加到.spec.patches 中。注意,补丁字段中的值是带引号的;也就是说,它是补丁的YAML或JSON,经过串联。
.spec.patchesJson6902被弃用,改用.spec.patches.spec.patchesJson6902中的每个条目转换为内联JSON6902补丁,并追加到.spec.patches中。请注意,补丁字段中的值是带引号的;也就是说,它是补丁的YAML或JSON,经过了串联。
.status.snapshot.status.inventation 替换。.status不保存在文件中,所以你不需要考虑这个问题。
.spec.wait新增如果为真,控制器将等待所有调和的资源准备就绪,并忽略.spec.healthChecks。这一点不需要准备,因为这是一个新功能。

为什么我们要这样做

当我们开始Flux v2时,我们设定了一个目标,即不再依赖第三方的二进制文件来实现核心功能。虽然我们已经成功地用Go库(go-git、git2go)和C库(libgit2、libssh2)替换了Git CLI shell execs,用Go库(kustomize/api、kustomize/kyaml)替换了kustomize CLI,但我们仍然依赖于kubectl CLI的三方合并应用功能。随着Kubernetes "服务器端应用 "被推广到GA,我们终于可以摆脱kubectl,完全使用控制器-运行时Go客户端来驱动调和了。

请看一下介绍这一变化的PR,因为它详细地谈到了这一变化所解决的问题。

预先预览和留下反馈

如果你想在该功能发布前先预览一下,并在你自己的测试集群上试用v1beta2的API,请按照以下步骤进行。

  1. 安装最新的Flux控制器sfluxinstall
  2. 应用这个分支的CRDkubectlapply -k https://github.com/fluxcd/kustomize-controller/config/crd?ref=v1beta2
  3. 部署本分支的kustomize-controller构建kubectl-n flux-system set image deployment/kustomize-controller / manager=ghcr.io/fluxcd/kustomize-controller:v1beta2-8426b396

请在此PR上发表评论,让我们知道你的想法。

下一步是什么?

最大的部分工作已经完成,以下是我们在发布前的TODO列表中的内容。

  • 将 SSA 资源管理器移到fluxcd/pkg/ssa中。
  • 在Flux CLI中使用SSA管理器来替代kubectl shellexecs来进行flux bootstrapflux install
  • 使用Flux CLI中的SSA管理器来实现flux buildflux diff命令
  • flux check --pre中更新最小的Kubernetes版本

这很好--我想参与其中

请加入我们在CNCF Slack上的#flux频道在这里获得邀请)来讨论这个问题。

或者在我们的社区页面上找到其他的联系方式(包括我们的每周会议)。

我们期待着你加入我们的社区!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值