OPA 从 CNCF 毕业

OPA 是一个开源的、通用的策略引擎,它支持跨整个堆栈执行统一的、上下文感知的策略。Open Policy Agent(OPA)为策略决策需求提供了一个统一的框架与服务。它将策略决策从软件业务逻辑中解耦剥离,将策略定义、决策过程抽象为通用模型,实现为一个通用策略引擎,可适用于广泛的业务场景。该项目于 2018 年 4 月进入 CNCF 沙箱,一年后进入孵化阶段。2 月 4 日,CNCF 正式宣布,OPA 成为第 15 个毕业项目。之前毕业的 14 个项目分别为 Kubernetes、Prometheus、Envoy、CoreDNS、containerd、TUF、Jaeger、Fluentd、Vitess、Helm、Harbor、TiKV、Rook、etcd。

详情见:《CNCF 宣布 Open Policy Agent 毕业》

Docker 捐赠 Distribution 项目

2 月 4 日,Docker 新任 CTO Justin Cormack 在公司博客宣布正式将 Docker Distribution 捐献给 CNCF。Docker Distribution 是容器注册表(Docker Hub 的一部分,可作为其他注册表的引用实现)的基础。作为容器生态的基础部分,Docker Distribution 有着极其广泛的采用。CNCF 接纳 Docker Distribution 为沙箱项目,为了以示区分现更名为 Distribution。Cormack 表示,许多公司已经基于该项目提供注册表,“很多人进行了小的分支和更改,但是没有贡献到上游版本。这个项目需要更多的 maintainer”。进入 CNCF 后,Distribution 将与 Docker、GitHub、GitLab、DigitalOcean、Mirantis 和 Harbor(CNCF 的另一个注册表项目)这些项目的 maintainer 进行“广泛的合作”。

详情见:https://www.docker.com/blog/donating-docker-distribution-to-the-cncf/

Grafana v7.4.0 发布

Grafana 是一个跨平台的开源度量分析和可视化工具,可以通过将采集的查询数据,进行可视化的展示,并及时通知。早几日,Grafana v7.4.0-beta1 发布近日,Grafana v7.4.0 正式发布,在可视化、转换、跟踪、安全性、审计等方面增加了许多新功能。仪表板突出显示了一些新的可视化功能。以下是该版本更新的部分重点内容:

  • CDN:增加了对 CDN 提供资产的支持。#30691
  • DashboardLinks:在工具提示中支持变量表达式。#30707
  • InfluxDB:选择 InfluxDB v2 时添加 http 配置。#30688
  • Loki:改善实时跟踪错误。#30517
  • Admin:修复了将用户添加到 org 时,整个 org 下拉列表可见的问题。#30481
详细内容详见:https://github.com/grafana/grafana/releases/tag/v7.4.0

2021 年云原生发布编排现状报告

Vamp.io 近期发布了 2021 年云原生发布编排现状研究报告。该调查聚焦于中小企业在使用 Kubernetes 和微服务进行云化转型的过程中所面临的严峻挑战。随着系统变得越来越复杂(众多依赖,高度分布式的架构,不同的发布频率),软件快速迭代对企业造成的压力越来越大,企业对发布自动化的需求也与日俱增。250 多位参与调查的开发者、SRE 和 DevOps 团队人员、架构师及产品经理表示:将微服务发布到生产环境是一件吃力的事情。对于软件团队来说,发布仍是一项繁重、容易出错且令人讨厌的任务。该调查报告对生产环境中发布和验证软件的挑战、趋势和可能的改进进行了深入探究,一些发现如下:

Kubernetes 和微服务已成为主流

调查样本中,72% 已在生产环境中使用 Kubernetes,还有 16% 正在评估或计划使用 Kubernetes。微服务则更受欢迎:81% 的受访者已在生产环境中使用微服务,还有 14% 的人计划使用微服务。

大多数受访者仍在使用高风险的发布策略

生产发布是指以可预测和可重复的方式获取正在运行的代码,使其生效,并且供用户访问的过程。生产发布过程尤其要注意确保发布新版本不会给用户带来更糟的体验。调查结果显示,86% 的受访者仍在使用高风险发布策略,比如滚动更新、蓝绿发布、大爆炸式发布等。金丝雀发布是风险更低的发布策略,该策略在将新版本推向所有用户之前,先逐步发布给一小部分有代表性的用户,这样可以减少不良发布影响的用户数(也叫做爆炸半径)。但目前该能力还比较缺乏,只有 9% 的受访者在使用金丝雀发布。

发布验证和回滚仍是繁重耗时的任务

发布验证是确保生产环境中已发布的软件在性能、质量、用户体验、业务 KPI 等方面都满足要求的过程。一般来说,发布验证过程平均耗时 2.2 小时,需要 4 个人参与。回滚是发布策略的重要部分。如果实施得当,回滚将在问题刚出现时最大程度减少对客户体验的影响,从而保护软件团队。53% 的回滚是手动完成的,平均回滚时间为 45 分钟。

微服务发布过程中最大的挑战是依赖管理

该报告显示,在生产环境中发布微服务时最大的挑战是依赖管理。20% 的受访者表示依赖管理很吃力,14% 的人表示内部流程和沟通很难,10% 的认为验证变更和测试微服务是一项挑战。

2021 年如何改进

结果很明显:30% 的受访者表示 2021 年将聚焦在自动化组织内的持续交付的发布流程。自动化将保证优质软件能以企业所需的速度发布,因此将保持企业自身竞争力。

详情见:https://blog.vamp.io/the-state-of-cloud-native-release-orchestration-2021/

K8s 联合创始人 Joe Beda 两个回答

近日,在 BrightTalk 的采访对话中,K8s 联合创始人兼 VMware 首席工程师 Joe Beda 认为,容器编排工具的学习仍然很棘手,社区应该努力让该技术像 Linux 内核一样 “boring”,以推动下一波的行业采用。另外,Beda 表示,Kubernetes 现在是更广泛的生态系统以及有关部署、管理应用程序的思维方式基础,这与 Kubernetes 起初并不一样,当初并没有预见到这一点。在此次对话中,Beda 回答了两个开源项目面临的关键问题。

Istio 为什么没有和 Kubernetes 进行更深入的集成?

Beda 表示,谷歌一直不愿意向 CNCF 公开捐赠 Istio,他们希望保持“Istio 的更高控制”。两个项目没有深入集成的另一个原因是,除了 Istio 外,还有其他实现服务网格的方法,例如 Linkerd 和 Microsoft 的 Open Service Mech。很多时候,甚至不需要部署带有 Kubernetes 的服务网格。

Kubernetes 难学习吗?

在抱怨 Kubernetes 难学的同时,YAML 配置文件通常会是个问题。Beda 承认,YAML 是权宜之计,除非我们找到正确的方法,但是没有唯一的正确方法。这就像在问什么是正确的编程语言,这完全取决于我们想做什么,以及我们所处的环境。

另外,Beda 还表示,对于很多人而言,在裸机上运行 Kubernetes 仍然是一个挑战。最简单的方法是使用可编程基础结构,例如 Terraform、Ansible 或 Cluster API。以这种方式转向基础设施即代码,开发人员可管理多个集群,以实现更自动化的构建和更好的延展性。

Beda 还反对普遍的观念,即降低其固有的灵活性来简化 Kubernetes,使其变得更简单。Kubernetes 的美丽之处在于没人可以告诉我们,我们可以用它干嘛或者不能干嘛,这是开源精神的一部分,这种灵活性也是 Kubernetes 的优势之一。

详情见:https://www.infoworld.com/article/3605728/kubernetes-co-creator-joe-beda-answers-2-key-questions.html

本周 K8s 开源项目推荐

kubenurse

  • 它可以监视 kubernetes 集群中的所有网络连接,并将采用的度量标准导出为 prometheus 端点。
  • github.com/postfinance/kubenurse

kubecolor

  • 它可以标亮 kubectl 语句。
  • github.com/dty1er/kubecolor

pvc-autoresizer

  • 当可用存储量低于阈值时,它能调整 PersistentVolumeClaims(PVC)的大小。
  • github.com/topolvm/pvc-autoresizer

kube-batch

  • 这是一种 Kubernetes 批处理调度程序。
  • github.com/kubernetes-sigs/kube-batch

k8s-In-30Mins

  • 这是一个 Kubernetes 的速查表,用于快速使用 Kubernetes 设置。
  • github.com/r0hi7/k8s-In-30Mins

crun

  • 这是一个由 C 语音编写的快速、低内存 OCI 容器运行时。
  • github.com/containers/crun

tobs

  • 它可以将可观察性堆栈简单地安装到 Kubernetes 集群中。
  • github.com/timescale/tobs