尋求啟用自動(dòng)駕駛汽車涉及許多移動(dòng)部件和大量軟件。通用汽車的Cruise Automation部門使用的軟件組件包括開源Kubernetes云原生平臺(tái)。
Cruise不僅僅是將Kubernetes作為一個(gè)項(xiàng)目使用,它還在擴(kuò)展它,并通過一個(gè)名為RBACSync的項(xiàng)目幫助改進(jìn)安全策略控制。RBAC或基于角色的訪問控制是Kubernetes的一個(gè)關(guān)鍵安全組件,默認(rèn)情況下它并不像Cruise需要它那樣工作。以真正的開源方式,Cruise工程師構(gòu)建了RBACSync項(xiàng)目并開源,實(shí)現(xiàn)更廣泛的使用和參與。
“Kubernetes用于在Cruise運(yùn)行大多數(shù)服務(wù)器端工作負(fù)載,”Cruise基礎(chǔ)設(shè)施工程團(tuán)隊(duì)的高級軟件工程師Stephen Day告訴eWEEK。“這包括乘車調(diào)度,測繪,數(shù)據(jù)處理和車隊(duì)管理。”
Kubernetes是一個(gè)開源平臺(tái),最初由Google開發(fā),自該組織于2015年7月成立以來一直是云原生計(jì)算基金會(huì)(CNCF)的核心.Kubernetes是一個(gè)容器編排系統(tǒng),使組織能夠提供,管理,跨分布式系統(tǒng)部署和運(yùn)行容器。Kubernetes受益于各種采用者和貢獻(xiàn)組織,并得到所有主要公共云提供商的支持。3月25日,Kubernetes 1.14平臺(tái)發(fā)布,集成了對Windows節(jié)點(diǎn)的支持。
克魯斯的Kubernetes
雖然Kubernetes是Cruise開發(fā)和基礎(chǔ)設(shè)施堆棧的一部分,但它實(shí)際上并沒有進(jìn)入自動(dòng)駕駛汽車。
“我們不會(huì)在車上使用Kubernetes,但車輛確實(shí)會(huì)與Kubernetes上運(yùn)行的服務(wù)進(jìn)行對話,”Day說。
Cruise利用Google Kubernetes Engine作為其平臺(tái)提供商,該提供商集成了核心Kubernetes RBAC功能,使運(yùn)營商能夠定義運(yùn)營角色。然后,角色以稱為“角色綁定”的方法連接到資源,該方法啟用基于策略的訪問控制。Cruise面臨的挑戰(zhàn)是,在定義Kubernetes RBAC方法中用戶如何屬于群體方面存在差距。Day表示雖然核心Kubernetes項(xiàng)目確實(shí)具有向群組添加個(gè)人的功能,但是存在一些限制導(dǎo)致Cruise出現(xiàn)問題。
“我們的方法允許我們將身份提供者和群體成員分離,使我們能夠改變他們的來源以及群體的形成方式,”Day解釋道。“只要我們有強(qiáng)大的身份進(jìn)入集群,我們就可以根據(jù)我們的要求對這些集團(tuán)進(jìn)行映射。”
RBACSync受益于Kubernetes中稱為控制器的核心功能,可以將新功能添加到平臺(tái)中。RBACSync控制器查看連接到Kubernetes的自定義資源定義(CRD)中的配置,以識(shí)別組和角色引用。每當(dāng)發(fā)生更改時(shí),系統(tǒng)都會(huì)為RBAC策略創(chuàng)建與組綁定的角色。
“通過遵循現(xiàn)有RBAC系統(tǒng)中的慣例,RBACSync適用于已經(jīng)存在的內(nèi)容,”Day說。“它可以無縫地使用現(xiàn)有角色,包括其他項(xiàng)目和Helm圖表定義的角色。我們的目標(biāo)是盡可能推動(dòng)RBAC,然后從那里開始工作。”
開源貢獻(xiàn)
在公開宣布RBACSync作為一項(xiàng)開源工作時(shí),Cruise正在尋求幫助自己和其他人。Day注意到Cruise剛剛發(fā)布了版本1.1的RBACSync,它有一些穩(wěn)定性修復(fù)和支持綁定到集群角色。
“我們的目標(biāo)是回饋可能對他人有用的東西,看看它帶給我們的地方,”他說。“我們希望其他人能夠在他們的基礎(chǔ)設(shè)施中獲取并增加對新上游或不同場景的支持。