K8S 生态周报| Helm v3.3.0-rc.1 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Helm v3.3.0-rc.1 发布 这是 Helm v3.3.0 的预发布版本,在此次版本中,重点在修复 helm lint 相关的错误,以及提升整体的稳定性和其他一般性 bug 的修复。我主要介绍几个值得注意的内容: #8277 将 warning 信息从写入 stdout 修改为写入 stderr ,这样可大大方便将 helm 用于 pipeline 中。比如 helm template 与 kubectl 组合使用; #8220 修复了当 chart 数量很多时,helm chart list 可能报错的问题; #8158 修复了 --repository-cache 不能被 repo add 和 repo update 识别的问题, 现在可以通过 repository-cache 自行指定 cache 目录; #7875 增加了 --insecure-skip-tls-verify 参数,用于在 pull/install 等阶段,跳过证书校验; #8011 增加了 lint 规则,以便于检查资源名称是否符合 K8S 的要求。 以上便是我认为此版本中值得关注的内容,更多关于此版本的详细信息,请参考其 ReleaseNote

K8S 生态周报| runc v1.0.0-rc91 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 runc v1.0.0-rc91 发布 如果不出意外的话,这将会是 runc v1.0 正式发布前的倒数第二个 rc 版。 本次有很多值得关注的变更。 首先是期待已久的 hooks 的变更,这是少数与规范有关的变更,当然它也是一直没有发布 v1.0 的原因之一。现有的使用 hook 的用户不受影响,比如说 NVIDIA Docker 用户,但是 runc 提供了其他的 hook ,比如 createRuntime 等。 其次是对 cgroup v2 的支持(我已经多次介绍过); 修复了一个小的安全漏洞 很早之前 runc 中默认将所有的设备都设置成了允许,这意味着需要用户自己去设置要去拒绝哪个设备访问。在 runc 的众多用户,均已经很早就修复了此问题。所以此问题在 runc 中被忽略掉了,直到现在才修复。 更多关于此版本的信息,请参考其 ReleaseNote Envoy v1.14.3 发布 此次 v1.14.3 版本的主题是安全修复。本次修复了如下安全漏洞: CVE-2020-12603 CVE-2020-12604 CVE-2020-12605 CVE-2020-8663 CVE-2020-8663 这些安全漏洞基本都是通过发送特定数据包,引起服务端大量消耗资源。 同时,此次的这些安全修复,也都影响到了 Istio ,所以 Istio 在本周也发布了 v1.

K8S 生态周报| Docker v19.03.12 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Docker CE v19.03.12 发布 在 Docker v19.03.11 发布时,我在「K8S 生态周报| 几乎影响所有 k8s 集群的漏洞」 一文中曾介绍过,该版本主要是为了修复一个通过使用 IPv6 RA 消息进行地址欺骗的安全漏洞 CVE-2020-13401。 解决办法也很简单,直接将 /proc/sys/net/ipv6/conf/*/accept_ra 设置成 0 ,这样便可确保不接收 RA 消息,从而避免遭受攻击。 但是,在 v19.03.11 的修复中,当无法禁用 RA 消息时,会直接报错,导致 docker daemon 无法启动 (比如在容器内的只读文件系统上)。所以此次 v19.03.12 的一个最主要修复,就是无法禁用 RA 消息时,只是会记录一条日志,而不是直接报错。 - return fmt.Errorf("libnetwork: Unable to disable IPv6 router advertisement: %v", err) + logrus.WithError(err).Warn("unable to disable IPv6 router advertisement") 对此版本感兴趣的小伙伴,可以直接更新。 containerd v1.3.5 发布 此次 v1.3.5 版本,有可能是 v1.

K8S 生态周报| CoreDNS 发布 v1.7.0

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 CoreDNS v1.7.0 发布 CoreDNS 本周发布了 v1.7.0 版本, 这是一个向后不兼容的版本。 主要包含了以下几个方面: #3776更好的 metrics 名称,其修改了大量的 metrics 名称,Dashborad 之类的都需要修改了。 例如: coredns_request_block_count_total -> coredns_dns_blocked_requests_total #3794 federation 插件已经被移除 (v1 Kubernetes federation); 从 kubernetes 插件中删除了一些代码, 所以它不会作为外部插件构建; #3534 新的 dns64 插件,由外部转为内置插件,该插件提供了 DNS64 IPv6 地址转换机制; #3737 plugin/kubernetes: 移除了已经过期的 resyncperiod 和 upstream 选项; 以上便是此版本中值得注意的变更,更多详细内容请参看其 ReleaseNote Helm v3.2.4 发布 这是一个安全更新版本,主要是为了修正一个漏洞,该漏洞影响了 v3.2.4 之前所有 Helm v3 版本。漏洞号为 CVE-2020-4053 此漏洞的具体影响范围是,当通过 HTTP 的方式从远程来安装一个 Plugin 的时候,可能会发生文件目录的遍历攻击。攻击者可能会在恶意插件中包含相对路径,以此来将攻击文件复制到预期的文件目录之外。 这是一种很常见的攻击方法,在之前的「K8S 生态周报」文章中,我也介绍过类似的利用这种文件目录遍历的漏洞。

K8S 生态周报| Trivy 发布新版本

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Trivy 发布 v0.9.x 版本 Trivy 是一款由 Aqua Security 开源的镜像漏洞安全扫描程序,对 CI 友好。 在之前的「K8S 生态周报」中,我曾介绍过这款工具。本周其发布了 v0.9.x 系列版本,以下是一些值得注意的变更: 支持 GitHub Advisory 数据库了,相当于扩充了它的漏洞库,可以大幅提升 Trivy 的准确度; 支持文件系统扫描,可以直接在已启动的容器中,扫描容器的文件系统; 可内置在 Dockerfile 中,在构建镜像的过程中,直接进行漏洞扫描, 例如: $ cat Dockerfile FROM alpine:3.7 RUN apk add --no-cache curl \ && curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin \ && trivy filesystem --exit-code 1 --no-progress / \ && trivy --reset && rm -f /usr/loca/bin/trivy && apk del curl $ docker build -t vulnerable-image 支持直接扫描 Git 仓库(当前只允许扫描公开仓库);

K8S 生态周报| 几乎影响所有 k8s 集群的漏洞

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Docker v19.03.11 发布 距离 v19.03.10 发布仅一周时间,Docker 又发布了新版本 v19.03.11 。此版本是一个安全修复版本,通过禁用了 IPv6 路由地址广播(RA)从而防止地址欺骗,对应的漏洞为 CVE-2020-13401 。 在 Docker 的默认配置中,容器网络接口是指向主机(veth 接口)的虚拟以太网链接,在此配置下,如果一个攻击者可以在容器中以 root 身份运行进程的话,那么他是可以使用 CAP_NET_RAW 能力,向主机任意发送和接收数据包的。 例如: 在容器内使用 root 用户,可以正常执行 ping 命令 (MoeLove) ➜ ~ docker run --rm -it -u root redis:alpine sh /data # whoami root /data # ping -c 1 moelove.info PING moelove.info (185.199.108.153): 56 data bytes 64 bytes from 185.199.108.153: seq=0 ttl=49 time=54.389 ms --- moelove.

K8S 生态周报| Docker v19.03.10 正式发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Node Exporter v1.0.0 正式发布 Prometheus 是最早由 SoundCloud 开源的监控告警解决方案。并已经成长为继 Kubernetes 之后,第二个从 CNCF 毕业的项目。伴随着云原生理念的普及和 Kubernetes 等技术的发展, Prometheus 在监控领域也有了长足的发展。 其主要组件包括 Prometheus,Alertmanager,Node Exporter,Blackbox Exporter 和 Pushgateway 等。 Promethues 采取 Pull 的模式,所采集的 metrics 需要由对应的 Exporter 暴露出来。我们最常用的用于收集系统 metrics 的组件便是 Node Exporter 了。 本周,Node Exporter 终于迎来了 v1.0.0 版本,标志着它更加稳定,更加通用。 我在本周专门写了一篇文章来介绍它这个版本中我最关注的特性: 为 Prometheus Node Exporter 加上认证, 我们可以让监控变得更加安全。 当然这个版本中也包含了众多变更和 bugfix, 这里暂且跳过,有兴趣的小伙伴可直接参阅其 ReleaseNote Docker v19.03.10 发布 Docker 在本周发布了 v19.03.10 版本,距离上个版本 v19.03.9 仅过了两周的时间,如果在使用 Docker v19.03.x 版本的小伙伴,我个人还是建议你更新到此版本。

为 Prometheus Node Exporter 加上认证

这篇文章主要是为了庆祝 Node Exporter 终于迎来了 v1.0.0 版本。 Prometheus 是最早由 SoundCloud 开源的监控告警解决方案。并已经成长为继 Kubernetes 之后,第二个从 CNCF 毕业的项目。伴随着云原生理念的普及和 Kubernetes 等技术的发展, Prometheus 在监控领域也有了长足的发展。 其主要组件包括 Prometheus,Alertmanager,Node Exporter,Blackbox Exporter 和 Pushgateway 等。 本文主要是为了庆祝 Node Exporter 终于迎来了 v1.0.0 版本, 所以重点主要放在一直被人诟病的安全性相关上,具体而言就是利用 TLS 和 Basic Auth 提升其安全性。 背景 Node Exporter 是 Prometheus 官方发布的,用于采集节点的系统信息,比如 CPU,内存,磁盘和网络等信息。 通常情况下,如果我们在使用 Prometheus 作为监控方案,那 Node Exporter 基本都会用到的。 在 Promethues 的监控体系中,社区中一直存在的一个观点是,Metrics 不包含过于私密的信息。所以你可以看到,大多数的 /metrics 接口都是直接暴露出来的,没什么特别的安全措施。 但随着 Prometheus 在生产中的大量应用,安全问题变得更加重要。 大家最先想到的解决办法就是,为 Prometheus 与监控目标之间的连接启用 TLS。 但由于各类 exporter 并不原生支持 TLS 连接,所以通常情况下我们会选择配合反向代理来完成。

K8S 生态周报| Docker v19.03.9 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Docker v19.03.9 发布 Docker 在本周发布了 v19.03.9 版本,如果有在使用 Docker v19.03.x 版本的小伙伴,我个人强烈建议你更新到此版本。 在之前的「K8S 生态周报」中,我曾介绍过,自 Docker v19.03.7 开始,其 Backing Filesystem 的检查逻辑存在问题。 这会导致在执行 docker info 的时候,得到如下输出: (MoeLove) ➜ ~ docker info --format '{{ index .DriverStatus 0 }}' [Backing Filesystem ] 另外,由于不能正确识别 Backing Filesystem 也会导致设置 storage quota 时报错。这个问题我早已在上游进行了修复,原计划是在 v19.03.8 中发布,不过由于 v19.03.8 是为安全修复版本发布的, 所以延迟到本次 v19.03.9 中了。 除了上面提到的这个 bug 以外,本次版本中还有些重要的修复: #40780 修正了 BuildKit 中并发构建多个镜像时,可能引发的 panic; #2471 修正了 Docker CLI 使用单个数字作为卷时,可能引发的 panic, 举例而言就是: # 修正前 (MoeLove) ➜ ~ docker run -it --rm -v 1:/1 alpine panic: runtime error: index out of range .

K8S 生态周报| Helm v3.2.1 发布

「K8S 生态周报」内容主要包含我所接触到的 K8S 生态相关的每周值得推荐的一些信息。欢迎订阅知乎专栏「k8s生态」。 Helm v3.2.1 版本发布 本周 Helm 发布了 v3.2.1 版本,这是 v3.2 系列的第一个 patch 版本。此次包含一些值得关注的内容: #7959 修复了一个 Helm v3 从 3.0-rc 版一直存在的一个 bug ,详情见 #6899, 但 --reuse-values 这个参数用的人可能不多,实际上影响没那么大; #7653 修改了 helm upgrade 的行为,允许对一个失败的 Release 执行 helm upgrade 进行重新部署,而不需要先删除掉旧的 Release;(方便了很多!) 其实本周 Helm 还发布了 v2.16.7 ,虽然 Helm 2 已经进入了维护期,但不得不说,维护团队还是很靠谱的,一直在持续打 patch 中。 继续建议大家升级至 Helm v3 。 对此版本感兴趣的朋友可查看其完整的 ReleaseNote 。 Rancher v2.4.3 发布 Rancher v2.4 是个大版本,本次发布的 v2.