在这里,我们要向大家高兴地宣布,Cilium 1.7版本正式发布了!在本轮更新周期当中,由141位开发者组成的项目社区共完成了1551项提交,而且很多朋友是第一次为Cilium项目提交贡献。
Hubble:自功能发布以来,很多朋友对于Hubble给出了积极的反馈。为了进一步简化集群连接的可视化与调试方式,我们以开源形式公布了新的Hubble UI,允许大家根据需求对其出调整及扩展!我们还一直在努力对Hubble的核心实现做出一系列改进,包括将网络流量数据同Kubernetes资源更好地关联起来。
Cilium全集群网络策略:1.7版本带来备有期待的集群内CNP功能。这意味着无论当前Pod处于哪个命名空间内,用户都可以使用面向整个集群中全部Pod的基准性网络策略。
利用Direct Server Return替代kube-proxy:正如我们在Kubecon US 2019与FSDEM 2020大会上所提到,此次最新版本完善了Direct Server Return(DSR)作为kube-proxy继任者的服务功能集,同时为前者带来更多支持选项。这将进一步改进DSR在Cilium中的延迟与性能表现。此外,我们的DSR也已经结束了beta测试阶段,将在具有较新内核版本的环境中自动启用。
通过TLS自省拓展L7策略:我们已经为Cilium添加了支持,可通过Kubernets资源或者本地文件配置Envoy TLS证书。这基功能使Cilium能够更透明地观察HTTP调用,同时在TLS加密会话上强制执行API感知策略。
各Pod的L7可见性注释:在之前的版本中,如果要在集群内实现对流量的L7可见性,用户需要编写网络策略以保证Pod处于默认拒绝的状态。现在,新的可见性注释功能允许用户首先实现L7网络流量可见性,再根据这些观察结论制定完整的网络策略。
纯Go eBPF库:此次发布的1.7版本,也是第一个使用由Cilium社区与CloudFlare联合编写的纯Go eBPF库的版本。这套简化库使Cilium得以摆脱CGo,在提高性能的同时降低二进制文件大小。
通过Kubernetes EndpointSlice支持与Cilium代理改进改善可扩展性,进一步发展上游Linux,在托管Kubernetes上运行我们的测试环境,通过Helm分发Cilium等等!
Cilium是什么?
Cilium是一款开源软件,负责以透明方式提供并保护由Linux容器管理平台(例如Kubernetes)部署完成的各应用程序服务间的网络与API连接。
Cilium的基础,是一种被称为eBPF的新型linux内核技术。该技术能够在Linux内部动态插入功能强大的安全性、可见性与网络控制逻辑机制。eBPF能够实现多种功能,包括多集群路由、负载均衡(用以替代kube-proxy的部分),透明加密以及网络与服务安全性等。除了提供传统的网络级安全性外,eBPF的出色灵活性也使其能够在应用程序协议以及DNS请求/响应等情境下为安全增添助力。Cilium与Envoy紧密集成,同时提供基于Go语言的扩展框架。由于eBPF运行在Linux内核当中,因此可以在应用全部Cilium功能的同时,避免对应用程序代码或者窗口配置产生任何干扰。
新的USERS.md文件:谁在使用Cilium?
* N: Adobe, Inc.
D: Adobe's Project Ethos uses Cilium for multi-tenant, multi-cloud clusters
U: L3/L4/L7 policies
L: https://youtu.be/39FLsSc2P-Y
* N: CENGN - Centre of Excellence in Next Generation Networks
D: CENGN is using Cilium in multiple clusters including production and development clusters (self-hosted k8s, On-premises)
U: L3/L4/L7 network policies, Monitoring via Prometheus metrics & Hubble
L: https://www.youtube.com/watch?v=yXm7yZE2rk4
Q: @rmaika @mohahmed13
* N: Datadog
D: Datadog is using Cilium in AWS (self-hosted k8s)
U: ENI Networking, Service load-balancing, Encryption
Q: @lbernail, @roboll
[...]
查看完整USERS.md文件[1]。
要提高项目水准,交流体验并向用户学习当然是不可或缺的一环。我们非常关注是哪些用户在就Cilium中的特定功能与其他用户开展讨论,也一直在跟进其中的经验与最佳实践。从结果来看,Cilium Slack社区非常活跃,而用户们抱怨的主要问题是很难快速在Cilium中找到特定功能。
如果您正在使用Cilium,可以将自己添加为用户、创建一条pull request、描述您如何使用Cilium,同时简要说明自己的使用场景。如果您希望在Slack上与其他Cilium用户联系,也可以在其中添加您自己的Slack昵称。
Hubble
作者:Sebastian Wicki与Sergey Generalov
Cilium 1.7的开发周期与Hubble的第一个预览版基本一致。Hubble是专门为Cilium设计的查看工具。通过使用Cilium的eBPF数据路径,Hubble能够深入了解Kubernetes应用与服务的网络流量。以此为基础,您可通过Hubble CLI及UI查询相关信息,并据此对DNS问题进行交互式故障排除。在监控过程中,Hubble将为您提供可扩展的指标框架,这套框架已经被良好集成至Prometheus与Grafana当中。关于更多相关信息,请参阅关于在Grafana中设置Hubble指标的教程资料[2]。
Cilium 1.7版本也针对Hubble推出多项新功能:首先是L7 Pod可见性注释,允许Hubble从DNS及HTTP流量中提取应用层信息。新版本还扩展了Cilium API,允许Hubble利用其他元数据标观察到的网络数据流,例如将Kubernetes ClusterIP与其对应的服务名称映射起来。
Hubble UI
Hubble UI能够全自动发现L3/L4甚至是L7中的Kubernetes集群服务依赖关系图,轻松帮助用户实现可视化,并将这些数据流以服务映射的形式加以过滤。在Hubble刚刚亮相时,我们就开始为用户提供包含其预览版的Docker镜像,确保每个人都能在Minikube中体验Hubble Service Map的功能,同时不会对原有源代码产生任何影响。
在这里我们高兴地宣布,Hubble UI代码现已开源,您可以通过以下链接从Cilium的GitHub项目中获取:https://github.com/cilium/hubble-ui。
在Cilium 1.7的开发过程中,我们还对Hubble UI做出了多项性能改进,希望它能够在小规模多节点集群中更好地运作。当然,目前的Hubble UI仍处于预览阶段,我们建议大家通过Hubble GitHub[3]页面或者Cilium Slack的#hubble频道[4]上提供反馈。
Cilium全集群网络策略
作者:Deepesh Pathak与André Martins
新版本带来Cilium全集群网络策略(CCNP)。在1.7版本之前,所有Cilium网络策略都包含对应的命名空间,因此用户无法以简单易行的方式配置适用于整个集群的基准性策略。集群范围内的策略允许集群维护者应用面向全部命名空间内各个Pod的策略要求,借此简化默认状态下的标准应用方式,而不必受限于特定命名空间内的现有策略。在各类使用场景下,全集群策略都显得非常重要,例如:
在创建任意命名空间时,自动应用默认拒绝策略以保障安全;
允许调用一组特定的基准性允许目标,例如kube-dns,确保所有应用程序都使用相同的DNS目标或者已知IP范围;
减少大规模环境中由网络策略带来的管理开销。