“「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。”
大家好,我是张晋涛。
docker compose v2.16.0 正式发布
Docker Compose 自 v2 开始使用 Go 替换了原先的 Python 实现,并在其中添加了很多新的特性。同时,也支持通过 Docker Plugin 的方式进行配置,所以用户可以直接使用 docker compose
来进行调用。
另外,Docker Compose 尽管在默认情况下只能进行单机服务编排,但它仍然也是一个非常方便的工具,有很多的用户在使用它,Docker Compose 的更新节奏也比较快。
这次的版本中它带来了一些主要的功能:
- 在
compose create
和compose run
中增加了一个--remove-orphans
参数, 移除未在 Compose 文件中定义的 service 的容器; - 实验性的增加了一个
watch
命令,可以实时查看 build context 的变化。不过这里需要说下,compose 的 alpha 命令没有直接暴露出来,所以很多人可能都没发现。
➜ ~ docker compose alpha
Usage: docker compose alpha COMMAND
Experimental commands
EXPERIMENTAL:
docker compose alpha is an experimental feature.
Experimental features provide early access to product functionality. These
features may change between releases without warning, or can be removed from a
future release. Learn more about experimental features in our documentation:
https://docs.docker.com/go/experimental/
Commands:
dry-run EXPERIMENTAL - Dry run command allow you to test a command without applying changes
watch EXPERIMENTAL - Watch build context for service and rebuild/refresh containers when files are updated
Run 'docker compose alpha COMMAND --help' for more information on a command.
- 实验性的
dry-run
命令也是这次新增的; - 增加了
docker compose build --push
这样在构建后就可以同时把镜像 push 到 registry 中了; - 修复了 goroutine 泄漏的问题,不过这个对服务无影响,是在终端输出格式化的部分的代码;
更多关于此版本的详细信息请查看其 ReleaseNote
Kubernetes 旧的 registry 将被冻结
Kubernetes 社区所使用的容器 registry 一开始是由 Google 提供的 k8s.gcr.io
,后来社区在逐步的进行迁移, 拥有了最新的 registry.k8s.io
。
现在 registry.k8s.io 已经基本稳定,所以社区决定将旧的 registry 进行冻结,从 4 月份开始生效。
未来新的镜像都将直接推送到新的 registry 中,不再往旧的 registry 中推送镜像。
所以如果有在使用旧 registry ,或者在进行镜像同步的小伙伴请注意,是时候更新你的配置了。 另外也可以参考我之前文章突破 DockerHub 限制,全镜像加速服务 | MoeLove中的思路,进行镜像的加速。
Helm v3.11.1 发布
这是一个 CVE patch 版本,主要是为了解决 CVE-2023-25165 getHostByName Function Information Disclosure · Advisory · helm/helm 漏洞。
getHostByName
是 Helm v3 中引入的一个模板函数。该函数能够接受主机名,并返回该主机名的 IP 地址。 为了获取 IP 地址,该函数执行 DNS 查询。DNS 查询在使用 helm install|upgrade|template 或 Helm SDK 渲染 chart 时发生。
传递到 chart 中的信息可能会被用于查询 IP 地址的 DNS 服务器披露。 例如,恶意图表可能会在 chart 中注入 getHostByName
,以便向恶意 DNS 服务器披露一些具体信息。
本次修复中是增加了一个 --enable-dns
的参数,默认是 false, 如果用户需要该能力的话,可以自行打开,否则会自动跳过 DNS 查询的过程。
更多关于此版本的详细信息请查看其 ReleaseNote
cert-manager v1.12.0-alpha.0 发布
cert-manager 我在之前的文章中已经介绍过多次了,这里不再赘述。
在这个版本中,主要变更如下:
- Added the ability to set volumes and volumeMounts to all pods via helm by waterfoul · Pull Request #5668 · cert-manager/cert-manager
允许通过 Helm chart 为所有 Pod 注入 volumes 和 volumeMounts;
- The vault issuer can now be given a serviceAccountRef instead of relying on static service account tokens by maelvls · Pull Request #5502 · cert-manager/cert-manager
简单来说,在这个 PR 中增加了一个 serviceAccountRef
的配置项,允许 Vault issuer 通过该配置项直接引用一个 serviceAccount。在之前的版本中这里有个类似的配置项是 secretRef
。
这样比之前使用 secretRef 的好处在于,可以不用再依赖 secretRef 中配置的静态 token 了,可以更加安全。
- 在 Helm chart 中增加了
--dns01-recursive-nameservers
,--enable-certificate-owner-ref
, 和--dns01-recursive-nameservers-only
的配置项;
更多关于此版本的详细信息请查看其 ReleaseNote
Trivy v0.37.2 发布
这里有一个破坏性变更需要注意。 在使用 v0.37 或 0.37.1 版本的用户,如果在使用 Trivy 扫描 Java 的话,需要删除本地的 Java DB cache,可以执行 trivy image --reset
并升级到 v0.37.2 。
更多关于此版本的详细信息请查看其 ReleaseNote
上游进展
- make CEL admission controller code consumable by maxsmythe · Pull Request #115412 · kubernetes/kubernetes
这个 PR 让 CEL admission controller 的代码可以被非 API server client 使用,包括:
- 将验证查询返回的类型公开,以便调用者访问策略检查的结果;
- 将版本转换与验证分开,无需在 API 服务器特定功能不可用时模拟 API 服务器特定功能;
其他
主要都是一些常规更新,升级依赖等。
- Kyma Release 2.11.0 · kyma-project/kyma
- talos Release v1.3.4 · siderolabs/talos
- rook Release v1.10.11 · rook/rook
参考资料
[1]
k8s生态: https://zhuanlan.zhihu.com/container