Linkerd 2.2 發佈,引入自動請求重試,支持自動注入

2月12日Linkerd 2.2版本正式發佈。這個版本主要引入了自動請求重試和超時,以及完全支持(非實驗)的自動注入功能。它添加了一些新的CLI 命令(包括logs 和endpoints),爲Linkerd 的控制平面提供診斷可見性。最後,它帶來了兩個令人興奮的實驗性功能:加密安全的客戶端標識頭和CNI 插件,該插件可以避免在部署時需要NET_ADMIN 內核功能。

此版本包括Attest、Buoyant、Mesosphere、Microsoft、Nordstrom 等人的貢獻。特別感謝所有提交問題、提交PR、測試功能的人!

通過我們的周體驗版本跟蹤2.x 分支的那些人已經看到了這些功能的實際應用。無論哪種方式,你都可以通過運行以下命令下載穩定的2.2版本:

curl https://run.linkerd.io/install | sh

通過這種方式,體驗所有的功能!

重試和超時

Linkerd 2.2 現在可以自動重試失敗的請求,在應用程序出現部分故障時提高整體成功率。基於2.1 版本中引入的服務配置文件模型,Linkerd 允許你爲每個路由的基礎配置此行爲。

linkerd routes 的輸出包括ACTUAL_SUCCESS,線上請求的成功率,以及EFFECTIVE_SUCCESS,調用者請求成功率,即在Linkerd 完成重試之後。

當然,控制何時可以進行重試是安全使用重試的關鍵組成部分。Linkerd 2.2允許你標記哪些路由是冪等(isRetryable),限制重試單個請求所花費的最長時間(timeout),以及配置可以重試的總體請求的百分比(retryBudget)。這些參數可以確保重試發生的安全性,並且不會在已經發生故障的系統中加重問題。

自動注入(取消注入和改進注入)

Linkerd 2.2 的自動注入是一個完全支持(非實驗)的功能。自動注入功能允許Kubernetes 集羣在部署時自動添加(“注入”)Linkerd 的數據平面代理到應用程序pods。將代理注入從客戶端移植到集羣上有助於確保所有pods 統一地運行代理,無論它們如何部署。

Linkerd 2.2還將自動注入的行爲切換爲選擇加入而不是選擇退出。這意味着,一旦啓用,只有具有linkerd.io/inject: enabled註釋的命名空間或pods 具有自動注入行爲。

最後,對於客戶端(非自動)注入,如果它們已在清單中指定,Linkerd 2.2改進了linkerd inject 命令來升級代理的版本(之前的行爲是完全跳過它們),並引入了linkerd uninject 命令用於從給定的Kubernetes 清單中刪除Linked 的代理。

使用CNI 插件更好地處理NET_ADMIN

Linkerd 2.2引入了一個新的實驗性CNI 插件,可在用戶部署的應用程序的安全上下文之外進行網絡配置。這使得Linkerd 更適合多租戶集羣,因爲管理員可能不希望向用戶授予內核功能(特別是NET_ADMIN)。

背景:將Linkerd 的數據平面代理注入到pod 中需要設置iptables 規則,以便進出pod 的所有TCP流量自動通過其代理,無需任何應用程序配置。通常,這是通過作爲部署者的服務賬號運行的Kubernetes Init Container 來完成的。在單租戶羣集中,這沒有問題,但在多租戶集羣中,這可能會產生問題:修改iptables 規則需要內核的NET_ADMIN 功能,但授予此功能會允許租戶控制整個主機的網絡配置。

使用Linkerd 的新CNI 插件,網絡配置在CNI 級別完成,有效地消除了用戶需要NET_ADMIN 內核功能的要求。這使得在多租戶、安全意識環境中運行Linkerd 變得更加實用。

這個插件由我們Nordstrom Engineering 的朋友們貢獻,並受到Istio 的CNI 插件的啓發。特別感謝Cody Vandermyn 的這個功能。

客戶端身份

Linkerd 2.2引入了一種新的安全機制,用於對進入請求提供客戶端身份。當啓用—tls=optional 時,Linkerd 現在爲每個請求增加了l5d-client-id 頭。應用程序代碼可以使用這個頭參數來實現授權,例如,要求對所有請求進行身份驗證或限制對特定服務的訪問。

這個頭參數目前標記爲實驗性,但是爲Linkerd 提供全面的身份驗證和授權機制邁出了關鍵的第一步。在未來幾周,我們將發佈Linked 的路線圖,用於在Kubernetes 集羣內安全地提供認證和通信加密。

Linkerd 的下一步計劃

Linkerd 2.2是來自全球各地貢獻者的數月工作的結晶,我們非常高興能夠發佈它!

在接下來的版本中,Linkerd 2.x將繼續完善可靠性、流量轉移和安全性的相關功能(特別是圍繞通信的身份和機密性)。從中期來看,我們也將努力減少Linkerd 對Kubernetes 的依賴。最後,Linkerd 1.x繼續積極開發,我們仍然致力於支持我們的1.x用戶。

Linkerd 是一個社區項目,由Cloud Native Computing Foundation 託管。如果你有功能請求、問題或評論,我們很樂意你能加入我們快速發展的社區!Linkerd 在GitHub 上託管,我們在SlackTwitter郵件列表上擁有一個蓬勃發展的社區。快來加入吧!

查看英文原文:Announcing Linkerd 2.2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章