K8S 生態週報| Helm 新版本釋出增強對 OCI 的支援

張晉濤發表於2021-12-24
「K8S 生態週報」內容主要包含我所接觸到的 K8S 生態相關的每週值得推薦的一些資訊。歡迎訂閱知乎專欄「k8s生態」

Docker v20.10.10 釋出

這個版本是 Docker v20.10 的第 10 個小版本,這個版本中沒有什麼太特別的共性問題,但是由於 Go 1.16 中 net/http 包對 $HTTP_PROXY 行為的變化,所以當你為 Docker daemon 設定代理的時候,請確認你已經正確的設定了 $HTTP_PROXY$HTTPS_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 工具。可以建立證書,簽名,校驗等。

(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 或者雙棧使用者,可以使用如下命令進行登陸。

docker login registry.ipv6.docker.com

也可以使用如下的命令進行映象的拉取:

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/kubernetesPodSpec 中根據 KEP-2808 增加 OS 欄位,以及一些校驗,主要是為了區分是否為 Windows 節點等。

歡迎訂閱我的文章公眾號【MoeLove】

TheMoeLove

相關文章