赞
踩
Table of Contents
https://github.com/cilium/cilium
Cilium是开源软件,用于提供并透明地保护应用程序工作负载(例如应用程序容器或进程)之间的网络连接和负载平衡。Cilium在第3/4层运行以提供传统的网络和安全服务,在第7层运行以保护和安全使用现代应用程序协议,例如HTTP,gRPC和Kafka。Cilium已集成到常见的业务流程框架中,例如Kubernetes和Mesos。
Cilium的基础是一种称为eBPF的新Linux内核技术。它支持将eBPF字节码动态插入Linux内核中的各种集成点,例如:网络IO,应用程序套接字和用于实现安全性,网络和可见性逻辑的跟踪点。eBPF高效且灵活。要了解更多关于eBPF,请访问eBPF.io。
对于最近三个主要的Cilium版本,Cilium社区都维持较小的稳定版本。从主要发行版开始的较早版本Cilium稳定版本被视为EOL。
有关新主要版本的升级,请查阅Cilium升级指南。
下面列出的是活跃维护的发行分支以及它们的最新次要发行版,相应的图像拉标签及其发行说明:
v1.8 | 2020-10-28 | docker.io/cilium/cilium:v1.8.5 | 发行说明 | 一般公告 |
v1.7 | 2020-10-27 | docker.io/cilium/cilium:v1.7.11 | 发行说明 | 一般公告 |
v1.6 | 2020-09-30 | docker.io/cilium/cilium:v1.6.12 | 发行说明 | 一般公告 |
能够保护现代应用程序协议(例如REST / HTTP,gRPC和Kafka)的能力。传统的防火墙运行在第3层和第4层。在特定端口上运行的协议是完全可信的或完全被阻止的。Cilium提供了对单个应用程序协议请求进行过滤的功能,例如:
GET
和path的HTTP请求/public/.*
。拒绝所有其他请求。service1
在Kafka主题上产生topic1
和service2
消费topic1
。拒绝所有其他Kafka消息。X-Token: [0-9]+
出现在所有REST调用中。有关支持的协议的最新列表以及如何使用它的示例,请参阅我们文档中的第7层策略部分。
现代分布式应用程序依靠诸如应用程序容器之类的技术来促进部署的敏捷性并按需扩展。这导致大量应用程序容器在短时间内启动。典型的容器防火墙通过过滤源IP地址和目标端口来保护工作负载。此概念要求在集群中任何位置启动容器时都必须操纵所有服务器上的防火墙。
为了避免这种限制规模的情况,Cilium将安全身份分配给共享相同安全策略的应用程序容器组。然后将身份与应用程序容器发出的所有网络数据包相关联,从而允许在接收节点处验证身份。安全身份管理是使用键值存储执行的。
基于标签的安全性是群集内部访问控制的首选工具。为了保护进出外部服务的安全,支持基于传统CIDR的入口和出口安全策略。这样可以限制对应用程序容器的访问以及对特定IP范围的访问。
一个简单的扁平第3层网络具有跨多个群集的能力,可以连接所有应用程序容器。通过使用主机作用域分配器,可以简化IP分配。这意味着每个主机可以分配IP,而主机之间无需任何协调。
支持以下多节点网络模型:
覆盖:跨越所有主机的基于封装的虚拟网络。当前以VXLAN和Geneve进行烘焙,但是可以启用Linux支持的所有封装格式。
何时使用此模式:此模式具有最低的基础结构和集成要求。它几乎可以在任何网络基础架构上工作,因为唯一的要求就是主机之间的IP连接(通常已经给出了)。
本机路由:使用Linux主机的常规路由表。要求网络能够路由应用程序容器的IP地址。
何时使用此模式:此模式适用于高级用户,需要对基础网络基础结构有所了解。此模式适用于:
用于应用程序容器之间和外部服务之间的流量的分布式负载平衡。使用有效哈希表的eBPF使用eBPF实现负载平衡,从而实现几乎无限的扩展,并且如果未在源主机上执行负载平衡操作,则支持直接服务器返回(DSR)。 注意:负载平衡需要启用连接跟踪。这是默认值。
获得可见性和解决问题的能力是任何分布式系统运行的基础。虽然我们学会了喜欢tcpdump
和之类的工具 ping
,而它们始终在我们心中占据特殊的位置,但我们努力为故障排除提供更好的工具。这包括提供以下功能的工具:
Berkeley数据包过滤器(BPF)是Linux内核字节码解释器,最初用于过滤网络数据包,例如用于tcpdump和套接字过滤器。最近,BPF指令集和周围的体系结构已与其他数据结构(例如用于保持状态的哈希表和数组)以及支持数据包处理,转发,封装等的其他动作进行了重大改进。此外,LLVM的编译器后端允许用于用C编写并编译为BPF指令的程序。内核验证程序可确保BPF程序安全运行,并且JIT编译器将BPF字节码转换为CPU架构特定的指令,以提高本机执行效率。BPF程序可以在内核的各个连接点运行,例如传入数据包,传出数据包,系统调用,kprobes,
BPF不断发展,并在每个新的Linux版本中获得更多功能。Cilium利用BPF来执行核心数据路径过滤,处理,监视和重定向,并且需要任何Linux内核版本4.8.0或更高版本中的BPF功能(当前最新的稳定Linux内核是4.14.x)。
许多Linux发行版,包括CoreOS,Debian,Docker的LinuxKit,Fedora,openSUSE和Ubuntu,都已经发布了内核版本> =4.8.x。您可以通过运行来检查Linux内核版本uname -a
。如果尚未运行足够新的内核,请查看Linux发行版的文档,以了解如何运行4.9.x或更高版本的Linux内核。
要阅读运行BPF运行时所需的内核版本,请参阅前提条件一节。
XDP是演进的又一步,它可以通过直接访问数据包的DMA缓冲区,从网络驱动程序运行特定类型的BPF程序。根据定义,这是软件堆栈中最早的点,可以在其中附加程序,以便在Linux内核联网数据路径中使用可编程的高性能分组处理器。
有关面向开发人员的BPF和XDP的更多信息,请参见《BPF和XDP参考指南》。
要了解有关Cilium的更多信息,它是Cilium和BPF的扩展和用例,请查看“进一步阅读”部分。
加入Cilium Slack频道,与Cilium开发人员和其他Cilium用户聊天。这是学习Cilium,提问和分享经验的好地方。
有关所有SIG及其开会时间的列表,请参阅特殊兴趣组。
cilium用户空间组件已根据Apache许可2.0版获得 许可。BPF代码模板根据通用公共许可证版本2.0许可。
《深入理解 Cilium 的 eBPF(XDP)收发包路径:数据包在Linux网络协议栈中的路径》
《eBPF.io eBPF文档:扩展的数据包过滤器(BPF)》
《介绍Calico eBPF数据平面:Linux内核网络、安全性和跟踪(Kubernetes、kube-proxy)》
《Linux eBPF和XDP高速处理数据包;使用EBPF编写XDP网络过滤器;高性能ACL》
《Understanding (and Troubleshooting) the eBPF Datapath in Cilium》
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。