K8S 生态周报| Helm 新版本发布增强对 OCI 的支持

2021-11-08 11:15:04 浏览数 (1)

“「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」[1]。 ”

Docker v20.10.10 发布

这个版本是 Docker v20.10 的第 10 个小版本,这个版本中没有什么太特别的共性问题,但是由于 Go 1.16 中 `net/http` 包对 `HTTP_PROXY` 行为的变化[2],所以当你为 Docker daemon 设置代理的时候,请确认你已经正确的设置了 HTTP_PROXY 和

此版本的其他变更,可参考其 ReleaseNote 。至于 Docker v21.x 短时间内还不会发布,不过里面确实增加了一些值得一提的特性,后续新版本快发布前再跟大家分享。

Helm v3.7 正式发布

Helm v3.7 是一个特性版本,我们一起来看看有哪些值得关注的变更吧。

对 OCI Chart 的支持相关的变更

  • helm chart export 已删除
  • helm chart list 已删除
  • helm chart pullhelm pull 代替
  • helm chart pushhelm push 代替
  • helm chart remove 已删除
  • helm chart savehelm package 代替

另外, 如果是通过旧版本创建的 OCI chart 需要使用 Helm v3.7 进行重新打包和上传才能使用。

一些新特性

  • 新增 helm uninstall --wait
  • 新增 helm show crds
  • helm dependency list 新增 --max-col-width 用于设置列宽
  • helm repo add 新增 --password-stdin 用于从 stdin 输入密码
  • helm repo update 可以指定 repo 名称进行更新了
  • Helm 模板引擎中新增 {{ .Chart.IsRoot }}

更多关于此版本的变更可以参考其 ReleaseNote

Notary v2 alpha1 发布

Notary v1,也称为 Docker Content Trust(DCT),主要是为当时的 Docker Hub 发布的。从那以后发生了很多变化,围绕首次使用信任 (TOFU)、密钥管理以及在注册中心内和跨注册中心缺乏内容推广的一些设计选择已成为 Docker Content Trust 和 Notary v1 的限制因素。

对 Notary 不了解的小伙伴,可以看下我两年前写的一篇 《K8S 生态周报| TUF 正式从 CNCF 毕业》在这篇文章中介绍了 TUF 还有 Notary 等内容。这里就不展开了。

Notary v2 支持对存储在基于 OCI 分发的注册表中的所有工件(容器镜像、软件材料清单、扫描结果)进行签名,并增强了 ORAS 工件规范。Notary v2 的一个关键原则是它支持在注册中心内和跨注册中心推广已签名的工件,包括私有网络环境。

它的工作过程如下图所示:

Notary v2

在 Notary v2 中最显著的变化就是易用性的提升,包括它发布了名为 notation 的 CLI 工具。可以创建证书,签名,校验等。

代码语言:javascript复制
(MoeLove) ➜  ~ notation
NAME:
   notation - Notation - Notary V2

USAGE:
   notation [global options] command [command options] [arguments...]

VERSION:
   0.7.0-alpha.1

AUTHOR:
   CNCF Notary Project

COMMANDS:
   sign               Signs artifacts
   verify             Verifies OCI Artifacts
   push               Push signature to remote
   pull               Pull signatures from remote
   list, ls           List signatures from remote
   certificate, cert  Manage certificates used for verification
   key                Manage keys used for signing
   cache              Manage signature cache
   help, h            Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help (default: false)
   --version, -v  print the version (default: false)

此版本中最显著的特性就是离线签名创建,以及对 OCI 分发规范的支持。后续的版本中将支持证书吊销,策略支持等能力。感兴趣的小伙伴可以参考其 ReleaseNote

Docker Hub Registry 公布对 IPv6 的支持

随着 IPv6 的逐步普及,世界范围内越来越多的用户开始在使用 IPv6 网络了,但是 Docker Hub 此前并不支持 IPv6 网络。在听取社区反馈意见后,正式加入了对 Docker Hub 的 IPv6 网络的支持。

Google IPv6 statistic

目前公布的测试版本的 IPv6 地址为 registry.ipv6.docker.com, 如果是纯 IPv6 或者双栈用户,可以使用如下命令进行登陆。

代码语言:javascript复制
docker login registry.ipv6.docker.com

也可以使用如下的命令进行镜像的拉取:

代码语言:javascript复制
docker pull registry.ipv6.docker.com/library/debian:latest

在后续对 IPv6 的支持达到稳定后,默认的 Docker Hub Registry 的地址也将支持 IPv6。这件事情对于 Docker Inc. 公司而言,比较大的挑战在与它需要处理它的限流限速相关的逻辑,不过目前也已经基本处理好了。

上游进展

  • #99557 · kubernetes/kubernetes 新增了一个实验性的 kubectl events 命令,这个 PR 中仅包含了最基本的实现,后续版本中将会按照 KEP #1440 继续实施。 增加此命令主要是由于在不修改 kubectl get 的前提下,查看 event 有一些限制,所以直接增加 kubectl events 命令可以更方便的去获取到需要的信息,尤其是 event 是在 Kubernetes 中经常需要查看的一个信息。kubectl get events 比较典型的一些问题, 比如排序(虽然可以通过加参数解决), watch,以及无法按照时间线方式去查看 events 等。 当然以上的这些问题也可以参考我之前的文章 《更优雅的 Kubernetes 集群事件度量方案》 来解决。 现在主要是增加了 --for 选项,可以直接按照对象进行过滤,在下个版本 v1.23 中就将正式和大家见面了。
  • #105908 · kubernetes/kubernetes 作为在 v1.21 中被废弃的 PSP(Pod Security Policy)的替代品,Pod Security Admission Control 在此版本中实现了很多内容。此 PR 中为被免于 Pod Security 的 Pod 添加了 annotation 用于解释如何/为什么。
  • #104909 · kubernetes/kubernetes 修正了获取 Pod QoS 时的逻辑。原先的逻辑中仅包含了 pod.Spec.Containers 的部分,而没有处理 pod.Spec.InitContainers 这些 InitContainer 的部分,此次修改将它们都加上了。
  • #104693 · kubernetes/kubernetes 在 PodSpec 中根据 KEP-2808 增加 OS 字段,以及一些校验,主要是为了区分是否为 Windows 节点等。

欢迎订阅我的文章公众号【MoeLove】

TheMoeLove

参考资料

[1]

k8s生态: https://zhuanlan.zhihu.com/container

[2]

Go 116 对 http_proxy 的处理行为: https://go-review.googlesource.com/c/net/ /249440/

0 人点赞