Table of Contents

稳定的发行

功能概述

透明地保护和保护API

基于身份的服务到服务通信的安全保护

安全访问外部服务

简单联网

负载均衡

监控和故障排除

整合方式

入门

什么是eBPF和XDP?

社区

松弛

特殊兴趣小组(SIG)

每周开发人员会议

执照

相关阅读


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 发行说明 一般公告

功能概述

透明地保护和保护API

能够保护现代应用程序协议(例如REST / HTTP,gRPC和Kafka)的能力。传统的防火墙运行在第3层和第4层。在特定端口上运行的协议是完全可信的或完全被阻止的。Cilium提供了对单个应用程序协议请求进行过滤的功能,例如:

  • 允许所有带有methodGET和path的HTTP请求/public/.*。拒绝所有其他请求。
  • 允许service1在Kafka主题上产生topic1service2消费topic1。拒绝所有其他Kafka消息。
  • 要求HTTP头X-Token: [0-9]+出现在所有REST调用中。

有关支持的协议的最新列表以及如何使用它的示例,请参阅我们文档中的第7层策略部分。

基于身份的服务到服务通信的安全保护

现代分布式应用程序依靠诸如应用程序容器之类的技术来促进部署的敏捷性并按需扩展。这导致大量应用程序容器在短时间内启动。典型的容器防火墙通过过滤源IP地址和目标端口来保护工作负载。此概念要求在集群中任何位置启动容器时都必须操纵所有服务器上的防火墙。

为了避免这种限制规模的情况,Cilium将安全身份分配给共享相同安全策略的应用程序容器组。然后将身份与应用程序容器发出的所有网络数据包相关联,从而允许在接收节点处验证身份。安全身份管理是使用键值存储执行的。

安全访问外部服务

基于标签的安全性是群集内部访问控制的首选工具。为了保护进出外部服务的安全,支持基于传统CIDR的入口和出口安全策略。这样可以限制对应用程序容器的访问以及对特定IP范围的访问。

简单联网

一个简单的扁平第3层网络具有跨多个群集的能力,可以连接所有应用程序容器。通过使用主机作用域分配器,可以简化IP分配。这意味着每个主机可以分配IP,而主机之间无需任何协调。

支持以下多节点网络模型:

  • 覆盖:跨越所有主机的基于封装的虚拟网络。当前以VXLAN和Geneve进行烘焙,但是可以启用Linux支持的所有封装格式。

    何时使用此模式:此模式具有最低的基础结构和集成要求。它几乎可以在任何网络基础架构上工作,因为唯一的要求就是主机之间的IP连接(通常已经给出了)。

  • 本机路由:使用Linux主机的常规路由表。要求网络能够路由应用程序容器的IP地址。

    何时使用此模式:此模式适用于高级用户,需要对基础网络基础结构有所了解。此模式适用于:

    • 本地IPv6网络
    • 结合云网络路由器
    • 如果您已经在运行路由守护程序

负载均衡

用于应用程序容器之间和外部服务之间的流量的分布式负载平衡。使用有效哈希表的eBPF使用eBPF实现负载平衡,从而实现几乎无限的扩展,并且如果未在源主机上执行负载平衡操作,则支持直接服务器返回(DSR)。 注意:负载平衡需要启用连接跟踪。这是默认值。

监控和故障排除

获得可见性和解决问题的能力是任何分布式系统运行的基础。虽然我们学会了喜欢tcpdump和之类的工具 ping,而它们始终在我们心中占据特殊的位置,但我们努力为故障排除提供更好的工具。这包括提供以下功能的工具:

  • 使用元数据进行事件监视:丢弃数据包时,该工具不仅报告数据包的源IP和目标IP,该工具还提供了发送方和接收方的完整标签信息以及许多其他信息。
  • 策略决策跟踪:为什么丢弃数据包或拒绝请求。策略跟踪框架允许跟踪正在运行的工作负载并基于任意标签定义的策略决策过程。
  • 通过Prometheus导出指标:通过Prometheus导出关键指标以与您现有的仪表板集成。
  • 哈勃:专门为Cilium编写的可观察性平台。它基于流日志提供服务依赖关系图,操作监视和警报以及应用程序和安全可见性。

整合方式

  • 网络插件集成:CNI,libnetwork
  • 容器运行时事件:容器化
  • Kubernetes:NetworkPolicy,标签,入口,服务

入门

什么是eBPF和XDP?

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)

有关所有SIG及其开会时间的列表,请参阅特殊兴趣组。

每周开发人员会议

  • 开发者社区每周都在闲逛以聊天。欢迎大家。
  • CEST每周星期一,美国东部标准时间上午8:00,美国东部时间上午11:00,下午5:00
  • 加入变焦

执照

cilium用户空间组件已根据Apache许可2.0版获得 许可。BPF代码模板根据通用公共许可证版本2.0许可。

相关阅读


《深入理解 Cilium 的 eBPF(XDP)收发包路径:数据包在Linux网络协议栈中的路径》

《iptables详解(1):iptables概念》

《iptables详解(2):路由表》

《eBPF.io eBPF文档:扩展的数据包过滤器(BPF)》

《介绍Calico eBPF数据平面:Linux内核网络、安全性和跟踪(Kubernetes、kube-proxy)》

《Linux eBPF和XDP高速处理数据包;使用EBPF编写XDP网络过滤器;高性能ACL》

《深入理解 Cilium 的 eBPF 收发包路径》

《Understanding (and Troubleshooting) the eBPF Datapath in Cilium》

《kubernetes(K8s):管理云平台中多个主机上的容器化的应用》

《Cilium提供并透明地保护应用程序工作负载之间的网络连接和负载平衡:什么是eBPF和XDP?》

Cilium提供并透明地保护应用程序工作负载之间的网络连接和负载平衡:什么是eBPF和XDP?相关推荐

  1. Cilium架构:提供并透明地保护应用程序工作负载之间的网络连接和负载平衡

    Table of Contents 数据路径 端点到端点 从端点出站 进入端点 基于veth与基于ipvlan的数据路径 规模 BPF映射限制 Kubernetes集成 参考阅读 本文档介绍了Cili ...

  2. C++实现网络连接检测程序,再也不用担心电脑连不上网了!

    有时程序需要保持和某个指定网络的连通,有人的情况下我们直接用ping命令查看即可,然而程序自身检测会稍微麻烦一点. 实现思路如下: 用程序打开控制台->运行ping命令,并指定控制台返回值写入到 ...

  3. Oracle 11g使用透明数据加密保护存储数据

    Oracle 11g使用透明数据加密保护存储数据 透明数据加密 (TDE) 使您能够加密存储在表和表空间中的敏感数据,例如信用卡号.对于有权访问数据的数据库用户或应用程序,加密数据将被透明地解密.TD ...

  4. X86汇编语言从实模式到保护模式13:保护模式程序的动态加载和执行

    目录 1. 引入保护模式对程序加载与执行的影响 1.1 对应用程序的影响 1.2 对操作系统的影响 1.3 本章程序总体结构 2. MBR加载内核过程分析 2.1 内核头部段分析 2.1.1 内核总长 ...

  5. 保护小程序,防止反编译:打造不怕反编译的小程序

    保护小程序,防止反编译 打造不怕反编译的小程序 这几年,小程序.小游戏,非常火. 业内人都知道,小程序或小游戏,就是H5应用,就是html+JS.这类应用,反编译很容易,网上就有很多方法教程. 对小程 ...

  6. 如何保护Java程序 防止Java反编译

    常用的保护技术 由于Java字节码的抽象级别较高,因此它们较容易被反编译.本节介绍了几种常用的方法,用于保护Java字节码不被反编译.通常,这些方法不能够绝对防止程序被反编译,而是加大反编译的难度而已 ...

  7. 华为云数据库mysql云灾备方案_华为云MySQL云灾备解决方案,为企业数据提供全方位的异地保护...

    华为云MySQL云灾备解决方案,为企业数据提供全方位的异地保护 2019年10月30日 17:30作者:黄页编辑:黄页 分享 随着数字化进程和企业上云的加快,越来越多企业数据库寻求高效稳定的云服务,数 ...

  8. “为物联网提供分散的隐私保护医疗区块链”外文翻译——2019年5月份

    原文链接:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6359727/ 翻译人:FJTCM区块链开发学习小组 时间:2019/05/31 为物联网提供分散 ...

  9. java反编译工具_如何保护Java程序 才能防止Java反编译

    简介:Java是一种跨平台的.解释型语言.Java 源代码编译中间"字节码"存储于class文件中.Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如 ...

最新文章

  1. 【Linux 经典面试题】
  2. python实现简单的api接口-Python实现简单的API接口
  3. 【组合数学】递推方程 ( 通解定义 | 无重根下递推方程通解结构定理 )
  4. 小康陪你学JAVA--------三大循环之Do-while循环
  5. java 多线程状态_总结Java中线程的状态及多线程的实现方式
  6. SAP CRM BOL attribute_ref的merge逻辑调试
  7. 华为cor—al10_cor al10是华为什么型号 cor al10是华为啥型号
  8. 【JAVA基础篇】面对对象的特征
  9. KeyMob具有手机广告优化的管理平台
  10. PHP7 pecl 安装 mongodb扩展 和 PHPLIB
  11. 深度学习自学(八):人脸识别主要场景与算法实现
  12. mysqli.php,PHP: MySQLi - Manual
  13. 不读取nan行_一个参数一个Excel表,让你玩转Pandas中read_excel()表格读取!
  14. Writeup for 0CTF2017 web
  15. JustinMind原型制作工具
  16. linux系统start x,linux的startx问题
  17. itext 生成pdf 化学表达式或者字符的上标,下标不显示
  18. Java中三种代理方式—— 静态代理与两种动态代理的实现机制
  19. PLA,FPGA 简介
  20. ssd测试遇到的问题

热门文章

  1. C#简介和异常类总结
  2. java 时间日期视频_40-日期和时间-JAVA和C#语法比较 - 视频教程 - 北盟网校 - 专注原创教学第一站...
  3. MySQL workbench创建用户与授权
  4. Gsview裁剪EPS文件
  5. vue-i18n和ElementUI国际化使用
  6. 前端开发必须说的那些事之——同源策略(same origin policy)
  7. Codeforces 384E-线段树+dfs序
  8. Spring基础——在 Spring Config 文件中基于 XML 的 Bean 的自动装配
  9. 在CentOS 6安装Mysql问题
  10. postgreSQL源码分析——索引的建立与使用——Hash索引(2)