作者 | 孙健波、汪萌海、陈有坤、李鹏
业界要闻
CNCF 宣布 TUF(The update Framework)项目正式毕业,成为继 Kubernetes、Premetheus、Envoy、CoreDNS、containerd、Fluentd Jaeger 以及 Vitess 之后,第九个正式毕业的项目。TUF 是一项用于保护软件更新系统的开源安全技术,也是从云原生计算基金会毕业的第一个以规范与安全性为重点的项目。与此同时,TUF 还是首个源自高校的 CNCF 毕业项目。
- CVE-2019-18801:该漏洞通过向下游发送 HTTP/2 大 header 请求影响 Envoy 的 HTTP/1 编解码器,利用此漏洞可能导致拒绝服务、权限逃逸或信息泄露;
- CVE-2019-18802:HTTP/1 编解码器没有修剪掉 header 值之后的空格,使攻击者可以绕开 Istio 的策略,最终导致信息泄露或特权升级;
- CVE-2019-18838:收到不带 "Host" header HTTP 请求后, Envoy 路由管理器会由于空指针导致 Envoy 进程异常终止。
解决方案
- 对于 Istio 1.2.x 版本:升级到 Istio 1.2.10 或以上;
- 对于 Istio 1.3.x 版本:升级到 Istio 1.3.6 或以上;
- 对于 Istio 1.4.x 版本:升级到 Istio 1.4.2 或以上。
- 随着 Kubernetes 的愈发普及和标准化,应用场景越来越复杂,服务网格的需求会快速增加;
- Istio 的先发优势会越来越明显,以至于它很难被击败,因为越来越多的软件供应商会提供 Istio 的解决方案;
- 更多的使用场景会出现,目前服务网格的使用场景主要在 "mTLS(统一鉴权解决方案)",“应用可观测性解决方案”,“流量管理解决方案”,2020 年会出现服务网格技术的杀手级解决方案。
上游重要进展
Kubenetes
增加用于 Node 协作的租约,该提案主要解决的是多个组件对 Node 均有操作,加锁独占的问题,比如在线 debug Node 问题的时候,又比如 Node 更新系统起作用的时候,不希望 Node 快照备份系统起作用。
- 一阶段是构建了新的调度框架,目标是把 scheduler 变成一个执行不同扩展插件的 callback 的引擎,可以注册 callback 函数,把一系列调度计算、预测相关的函数作为 plugin;
- 二阶段的主要目标是把原先内置在 K8s scheduler 里面的预测和调度算法移入对应的 plugin 中通过调度框架调用,许多 PR 围绕该目标在展开。
rktlet 是基于容器运行时 rkt 项目的 CRI(Container Runtime Interface) 实现,类似 kubelet,随着 rkt 项目退出 CNCF,rktlet 也无人维护,如今正式被移出。
Knative
在 Knative 中,RevisionTemplateSpec 像 PodSpec 的一个子集,只实现了部分功能。为了保持 Knative 的简易性,哪些字段需要加,哪些字段不需要加,文档中列出了一些条件。另外针对运维角色,有些字段不是面向开发的,但 K8s 都把字段暴露出来了,K8s 这样做不意味着 Knative 也需要这样做,可以把它作为一个 Configmap 的配置值或者新增运维的 CRD。
在事件系统中,事件生产者和消费者通常不直接通信。在许多情况下,都涉及充当事件总线的消息中间件。通过这种方式,可以对事件进行集中管理,消费者和生产者可以发出和订阅哪些内容,并且可以设置过滤器或策略。因此,引入了事件域的定义。
Istio
Istio CNI 竞争问题是指在通过使用 Istio CNI 插件配置容器网络安装 iptables 规则时,可能会遇到应用程序的 pod 在 Istio CNI 配置完成之前就启动,导致出现没有配置 iptables 规则的应用程序 pod 出现,这会导致安全问题,因为可以绕开所有的 Istio 策略检查。
社区讨论了可能在 Istio1.5 中提供的短期方案,并提出长期方案是希望 K8s 提供标准方法:在节点调度 Pod 之前,确保关键守护程序已经准备好;如果关键守护程序失败,请污染节点。后续将与 K8s 社区继续讨论。
开源项目推荐
基于OAM(开放应用模型)的 Go 语言 SDK,SDK 中包含了 OAM Spec 的解析和 Controller 框架,可以快速构建 OAM 的实现,快速对接标准应用模型。
Vault 是 HashiCorp公司(旗下还有Vagrant,Terraform,Consul 等知名产品)维护的开源软件,它的设计思想基于云原生背景下动态基础设施的特点,在云上的不同网络层以及不同的服务之间已经很难找到传统的信任边界,服务之间更加强调以身份(identity)为核心的认证和访问控制,而不是像传统静态基础设施中以 IP、主机地址作为信任凭证(与 K8s 对接)。
kube-score 是 K8s 对象静态检查工具,通过分析 K8s 对象的 Yaml 文件做一些推荐,以提升可靠性和安全性。
本周阅读推荐
InfoQ 国际总站发表文章《阿里巴巴视角下的开放应用模型》,详细讲述了 OAM 的由来以及阿里巴巴在 K8s 应用管理上的实践。
使用 Vault 在 Kubernetes 体系中提供动态数据库鉴权信息,文中针对云原生场景下 Pod 生命周期短、变化快等问题,Vault 提供了一系列 Policy 解决动态鉴权信息注入的问题。
在 Kubernetes 上 debug DNS 问题的指南。
本文介绍了蚂蚁金服和阿里巴巴集团场景下对 Sidecar 容器的各种使用方式。
从 2008 年基于内核 cgroup 的 LXC 诞生至今,现代 Linux 的容器化已逾 10 年,先后有基于 cgroup/namespace 的进程隔离容器技术、基于 CPU 硬件指令集的虚拟化技术,以及通过重写内核功能实现的用户空间内核容器技术纷纷登场,各有千秋。
StackRox 的联合创始人,首席技术官Ali Golshan 对 2020 年技术发展做了一些预测,这些预测涉及 Kubernetes 和服务网格技术的增长。
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”