SIG-Networking: Kubernetes网络策略api即将在1.3中发布

编者按:本周我们的特色节目Kubernetes特殊利益集团;今天的帖子是由network - sig团队发布的,它描述了1.3中的网络策略api——安全、隔离和多租户策略。

Kubernetes网络团体从去年年底开始,我们定期举行会议,致力于将网络政策引入Kubernetes,我们已经开始看到这一努力的结果。

许多用户的一个问题是Kubernetes的开放访问网络策略不适合需要更精确控制访问POD或服务的流量的应用程序。今天,这可能是一个多层应用程序,其中仅允许从层邻居允许的流量。但随着通过编写微服务构建的新云本机应用程序,在这些服务之间流动时控制流量的能力变得更加重要。

在大多数IaaS环境(公共和私有)中,这种控制是通过允许虚拟机加入“安全组”来提供的,其中到组成员的流量由网络策略或访问控制列表(ACL)定义,并由网络数据包过滤器强制执行。

网络团体通过识别开始了这项工作特定的用例场景这就需要基本的网络隔离来增强安全性。为这些简单和常见的用例获得正确的API是很重要的,因为它们也是Kubernetes中多租户所必需的更复杂的网络策略的基础。

在这些场景中,我们考虑了几种可能的方法政策规范被定义。基本思想是,如果在每个名称空间基础上启用隔离,那么将在允许特定流量类型的地方选择特定的pod。

快速支持这个实验性API的最简单方法是以API服务器的ThirdPartyResource扩展的形式出现的,这在Kubernetes 1.2中已经成为可能。

如果您不熟悉Kubernetes API是如何工作的,那么可以通过定义ThirdPartyResources来扩展Kubernetes API,它在指定的URL上创建一个新的API端点。

third-party-res-def.yaml

kind: ThirdPartyResource apiVersion: extensions/v1beta1 metadata:  
$kubectl创建-f third-party res-def.yaml

这将创建一个API端点(每个命名空间一个):

/ne.alpha.www.amasoeur.com/v1alpha1/namespace/default/networkpolicys/

第三方网络控制器现在可以监听这些端点,并在创建、修改或删除资源时做出必要的反应。注意:随着Kubernetes 1.3即将发布,当网络策略API以beta版发布时,将不需要创建如上所示的第三方资源API端点。

默认情况下,网络隔离是关闭的,因此所有pod都可以正常通信。但是,重要的是要知道,一旦启用了网络隔离,所有名称空间中所有豆荚的所有流量都会被阻塞,这意味着启用隔离将改变豆荚的行为

属性可以启用网络隔离网络隔离命名空间的注释如下:

net.alpha.www.amasoeur.com/network-isolation:[上|离开]

一旦启用网络隔离,明确的网络策略必须应用开启吊舱通讯。

策略规范可以应用于命名空间,以定义策略的详细信息,如下所示:

POST / api / net.alpha.kubernetes。io / v1alpha1 /命名空间/租户/ networkpolicys /{“类型”:“NetworkPolicy”,“元数据”:{“名称”:“pol1”},“规范”:{" allowIncoming ":{“从”:[{“豆荚”:{“段”:“前端 " } } ], " toPorts”:[{“端口”:80年,“协议”:“TCP " } ] }, " podSelector”:{“段”:“后端”}}}

在这个例子中,'租户 - A.命名空间将获得策略pol1,如所示。具体来说,豆荚里有标签 '后边将允许TCP流量从80端口与标签 '前端“待接收。

今天,和平OpenShiftopencontrail.印花棉布的支持网络策略应用于命名空间和POD。思科和VMware也在实施实现。Romana和Calico均在Kubecon最近展示了Kubernetes 1.2的这些能力。您可以在此处观看他们的演示:和平幻灯片),印花棉布的幻灯片).

它是如何工作的?

每个解决方案都有自己的具体实现细节。现在,它们依赖于某种主机上的强制机制,但未来的实现也可以构建在hypervisor上应用策略,甚至直接通过网络本身。

外部策略控制软件(具体细节因实施而异)将监视新的API端点,以查看正在创建的POD和/或正在应用的新策略。当发生需要策略配置的事件时,侦听器将识别更改,控制器将通过配置接口和应用策略进行响应。下图显示了API侦听器和策略控制器通过主机代理在本地应用网络策略来响应更新。pods上的网络接口由主机上的CNI插件配置(未显示)。

controller.jpg

如果您一直因为网络隔离和/或安全问题而不愿意使用Kubernetes开发应用程序,那么这些新的网络策略将为您提供所需的控制。不需要等到Kubernetes 1.3,因为网络策略现在作为一个实验API可用,作为ThirdPartyResource启用。

如果你对Kubernetes和网络感兴趣,有几种方式可以参与-加入我们吧:

网络“特别兴趣小组”,每两周一次,太平洋时间下午3点(15点)SIG-Networking聚会

——Chris Marino, Pani Networks联合创始人