寻求启用自动驾驶汽车涉及许多移动部件和大量软件。通用汽车的Cruise Automation部门使用的软件组件包括开源Kubernetes云原生平台。
Cruise不仅仅是将Kubernetes作为一个项目使用,它还在扩展它,并通过一个名为RBACSync的项目帮助改进安全策略控制。RBAC或基于角色的访问控制是Kubernetes的一个关键安全组件,默认情况下它并不像Cruise需要它那样工作。以真正的开源方式,Cruise工程师构建了RBACSync项目并开源,实现更广泛的使用和参与。
“Kubernetes用于在Cruise运行大多数服务器端工作负载,”Cruise基础设施工程团队的高级软件工程师Stephen Day告诉eWEEK。“这包括乘车调度,测绘,数据处理和车队管理。”
Kubernetes是一个开源平台,最初由Google开发,自该组织于2015年7月成立以来一直是云原生计算基金会(CNCF)的核心.Kubernetes是一个容器编排系统,使组织能够提供,管理,跨分布式系统部署和运行容器。Kubernetes受益于各种采用者和贡献组织,并得到所有主要公共云提供商的支持。3月25日,Kubernetes 1.14平台发布,集成了对Windows节点的支持。
克鲁斯的Kubernetes
虽然Kubernetes是Cruise开发和基础设施堆栈的一部分,但它实际上并没有进入自动驾驶汽车。
“我们不会在车上使用Kubernetes,但车辆确实会与Kubernetes上运行的服务进行对话,”Day说。
Cruise利用Google Kubernetes Engine作为其平台提供商,该提供商集成了核心Kubernetes RBAC功能,使运营商能够定义运营角色。然后,角色以称为“角色绑定”的方法连接到资源,该方法启用基于策略的访问控制。Cruise面临的挑战是,在定义Kubernetes RBAC方法中用户如何属于群体方面存在差距。Day表示虽然核心Kubernetes项目确实具有向群组添加个人的功能,但是存在一些限制导致Cruise出现问题。
“我们的方法允许我们将身份提供者和群体成员分离,使我们能够改变他们的来源以及群体的形成方式,”Day解释道。“只要我们有强大的身份进入集群,我们就可以根据我们的要求对这些集团进行映射。”
RBACSync受益于Kubernetes中称为控制器的核心功能,可以将新功能添加到平台中。RBACSync控制器查看连接到Kubernetes的自定义资源定义(CRD)中的配置,以识别组和角色引用。每当发生更改时,系统都会为RBAC策略创建与组绑定的角色。
“通过遵循现有RBAC系统中的惯例,RBACSync适用于已经存在的内容,”Day说。“它可以无缝地使用现有角色,包括其他项目和Helm图表定义的角色。我们的目标是尽可能推动RBAC,然后从那里开始工作。”
开源贡献
在公开宣布RBACSync作为一项开源工作时,Cruise正在寻求帮助自己和其他人。Day注意到Cruise刚刚发布了版本1.1的RBACSync,它有一些稳定性修复和支持绑定到集群角色。
“我们的目标是回馈可能对他人有用的东西,看看它带给我们的地方,”他说。“我们希望其他人能够在他们的基础设施中获取并增加对新上游或不同场景的支持。