Kubernetes 多集群管理平台 OCM v0.9.0 发布:进一步改善托管集群安全性问题

news/2024/4/18 18:16:31/文章来源:https://blog.csdn.net/alisystemsoftware/article/details/128102159

作者:Brae Troutman

随着 OpenClusterManagement(OCM)项目的持续发展,我们觉得有必要周期性向大家同步近期项目的一些进展了,包括我们我们下一步未来发展的方向以及作为贡献者如何参与进来我们的社区。2022 年的尾声即将到来,让我们来进一步看一下项目研发方面的新内容吧!

关于 Open Cluster Management

OCM 是一款 Kubernetes 多集群平台开源项目,它可以帮助你大大简化跨云/多云场景下的集群管理,无论这些集群是在云上托管,还是部署在自建数据中心,再或者是在边缘数据中心中。OCM 提供的基础模型可以帮助我们同时理解单集群内部的容量情况,也可以横跨多集群进行资源/工作负载的编排调度。与此同时,OCM 还提供了一系列强大的扩展性或者叫做插件框架(addon-framework)来帮助我们集成 CNCF 生态中的其他项目,这些扩展性也可以帮助我们无侵入地针对你的特定使用场景手工扩展特性。

OCM 目前是 CNCF 官方 Sandbox 级别项目,吸纳了来自超过 15 个不同组织的维护者横跨不同的云原生厂商和解决方案提供商。我们认为 OCM 是一种对于目前已经废弃的 Kubernetes 多集群工作小组下的 Kubefed 项目的可行的平行替代方案,同时我们也在致力于在 Kubefed 的正式下线后继承延续 Kubernetes 官方多集群管理的使命。

Website:

https://open-cluster-management.io/

GitHub:

https://github.com/open-cluster-management-io/OCM

新版本 v0.9.0 内容

我们很高兴在此宣布 OCM v0.9.0 版本的正式发布。在这个版本中,我们已经进一步提升了托管集群上的安全性相关问题并且可以提供了流畅的托管集群到主集群的服务暴露功能。你也可以根据这里的研发计划来看到这个版本中的新增特性等等,同时窥见社区整体正在朝哪个方向发展。

降级 Work 守护容器的安全权限

在之前的 OCM 迭代版本中,Work 守护容器通常在托管集群中是运行在管理员权限上的。这个发布版本中,为了实践“权限最小化”的原则,OCM 支持了以 ManifestWork 粒度单独定义非管理员的权限身份,这样以来就允许例如多集群应用运维的最终用户针对场景为不同的集群定义不同的权限。

支持多集群服务的暴露和路由

在最新版本的 OCM 的 Cluster-Proxy 插件里新增了在托管集群中暴露/开放一个 Service 以使得中枢集群内的客户端可以访问的特性,即使是横跨 VPC 可以流畅进行暴露。原本所有的流量是被定向路由到了各个托管集群的 Kube-Apiserver 上面,这一定程度上增加了运行 master 相关组件的节点的压力。现在 Cluster-Proxy 的插件守护容器支持了可以通过指定某个集群的某个目标服务,以使得流量的负载均衡得到了些优化,同时向中枢集群暴露服务的粒度调整也更加灵活。

支持通用化插件配置

对于某些希望可配置化的 OCM 插件,我们提供了一些新的插件 API 可扩展性来支持用户提供定制插件的配置引用信息,同时在插件框架中,我们也支持了在发现对应配置发生变化时,可以即时触发插件相关的资源的重新部署下发。

其他更新

除了以上三点的主要进展之外,这个版本也在 OCM 本身的多版本支持上取得了一些进展,同时我们也更新了 ClusterSet 以及 Placement API 的定义:

  • 升级 ManagedClusterSet API 到 v1beta2 版本:更新了 ClusterSet API 并且渐渐下线移除了一些历史的资源,同时我们也提供了存量数据到 v1beta2 版本的向后兼容性。

  • 提升了 Placement API 的状态反馈:为 Placement API 提供了更多状态类型和错误类型来描述场景,尤其是当用户需要诊断排查问题的时候。

  • 新增了用户场景指导在 OCM 的社区仓库中:分享了更多现实中的 OCM 使用场景以及进一步展示了如何横跨多个集群部署应用,以及如何操作 OCM 的核心功能。

接下来还有什么?

接下来的 OCM 版本中会侧重于如何更好地和 Kubernetes 相关的官方社区标准集成,以使得从 Kubernetes 社区来到 OCM 社区贡献的体验更加友好,同时也我们也在致力于如何将 OCM 现有的功能使用到其他边缘场景中。

OCM 控制平面的独立部署

作为向 OCM 边缘场景落地的一部分投入,我们已经做出了一个初步版本的实现以支持将 OCM 整体编译成一个二进制文件简易运行(在这里由@ycyaoxdu展示)。在下一个版本中,我们计划进一步完善这些概念,包括在 OCM 的中枢集群中甚至屏蔽删除掉 Pod,Node 等主集群本身的资源相关API。

基于 Pull 模式的 ArgoCD 集成

在之前的 OCM 版本中,中枢集群上的 ArgoCD 的控制器负责直接与托管集群进行 API 交互以维持应用相关的资源达到预期的状态。但这绕过了 OCM 里中枢集群和托管集群之间的安全通信管道,同时将托管集群内部的状态检查以及更新等等的任务成本转移到了中枢集群上面。我们计划引入一个新的 MultiClusterApplicationSet API 资源,来聚合 ArgoCD 的应用模版并复用OCM的通信管道下发到各个托管集群中,之后部署在各个托管集群上的 ArgoCD 代理控制器就可以在集群内部进行状态维护了。

Placement 扩散策略 + 拓扑感知的调度

当我们横跨多云/异构集群管理应用时,有些用户的场景需要指定某种类型的 Kubernetes 集群来进行工作负载的下发。根据场景我们提炼出了三种多集群部署的调度语义:集群亲和性,集群反亲和性和扩散。这些功能可以帮助我们指定我们倾向于将某些资源部署到某些期望的集群上,哪些不期望的集群上等等。

感知代理的中枢和托管集群网络通信

在多集群的架构中,有些隔离托管集群只能通过一个代理进行访问,这往往需要我们除了证书之外进行大量的配置工作围绕网络代理。通过以注册令牌作为 CSR 的替代品,OCM 可以灵活接管并且维护更大范围的集群配置了。

感谢贡献者

开源社区软件的美好存在于体验的多样性和贡献者们对贡献的向往。OCM 招揽了超过 70 名贡献者来自超过 15 个不同的公司。像在我们的项目中,每个社区成员都可以扮演一个重要角色在软件的成长与发展中,不仅仅可以是在社区的构建中,也可以是在开源的参与过程中。

也就是说,我们很高兴欢迎新的贡献者在过去的 3 个月的开发周期里持续涌现新的贡献者:

  • Ian Miller 帮助社区启动了“Selective Policy Enforment”特性
  • TYTaO 通过使用哈希功能在 ManifestWork 中实现了如何辨别不同的 OCM 资源
  • IlonaShishov 为 OCM 实现了 VSCode 的插件,包括但并不限于:清理并添加更多的信息为 Webview UI 工具库,同时为 ManagedCluster 和 Klusterlet OCM 对象新增了可视化组件。

当然,一个社区项目离不开持续陪伴使用的人们,这里是一些用户的使用例子和他们所属的公司正在 OCM 社区中探索或者已经运用于他们的多集群应用管理中:

  • Endre Karlson (@ekarlso) 来自 TietoEvry 正在使用 OCM 管理多个集群。
  • Dan Gorst (@dgorst) 来自 Expedia Group 正在致力于强化 OCM 集群注册过程中第三方身份提供商的相关扩展功能。
  • Ivan Farinic 来自 ESET 将 OCM 作为他们的多集群中枢控制面。

了解更多

即将到来的活动

KubeCon (10/24 2022年 - 10/28 2022年)

  • Multicluster Kubernetes Management Made Easy WithOpen ClusterManagement

https://kccncna2022.sched.com/event/182IA/multicluster-kubernetes-management-made-easy-with-open-cluster-management-joshua-packer-red-hat?iframe=yes&w=100%&sidebar=yes&bg=no

  • Open ClusterManagement (Workload distribution with Placement API)

https://kccncna2022.sched.com/event/1Banx/virtual-project-office-hours-open-cluster-management-workload-distribution-with-placement-api?iframe=yes&w=100%&sidebar=yes&bg=no

  • Work APIa Kubernetes SIGs project

https://kccncna2022.sched.com/event/1Baom/virtual-project-office-hours-work-api-a-kubernetes-sigs-project?iframe=yes&w=100%&sidebar=yes&bg=no

如何参与进来

如果对上述的内容感兴趣,或者希望进一步参与 OCM 社区的贡献建设的话,欢迎联系我们!

  • 如果有问题? -> Open Cluster Management 来到我们在 K8s Slack 的频道

https://kubernetes.slack.com/?redir=%2Farchives%2Fopen-cluster-mgmt

  • 提出 Issue 或者代码 -> 来到 OCM Organization on Github

https://github.com/open-cluster-management-io

  • 想看到定期的社区进展更新? -> 加入我们的 Gmail Group

https://groups.google.com/g/open-cluster-management

  • 想要在线的会议交流? -> 我们有每周的 Weekly Community Zoom Meetings

https://calendar.google.com/calendar/u/0/embed?src=openclustermanagement@gmail.com

如果你不知道从哪里开始的话,点击此处前往我们的官方网页来大体感受 OCM 的核心功能,包括它的用例,架构以及所有的信息!

相关链接

[1] 研发计划

https://github.com/orgs/open-cluster-management-io/projects/2/views/9

[ 2] 哈希功能

https://github.com/open-cluster-management-io/work/pull/151

[3] IlonaShishov

https://github.com/IlonaShishov

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_38886.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据容器——列表

目录 一.数据容器 二.数据容器——列表 基本语法 注意 三.列表的下标(索引) 嵌套列表的下标(索引) 四.列表的常用操作(方法) 1.查询元素下标 2.插入元素 3.删除元素 4.统计元素 说明 一.数据容器 1&a…

传奇出现黑屏卡屏不动是怎么回事

在写这篇文章之前,先给给大家说一下,这篇文章写的是出现黑屏、卡屏不动是我们玩传奇的时候出现的,而不是在架设传奇时候出现的,所以要特别是注意一下,架设和玩出现黑屏是完全不一样的,所以解决方案也不一样…

H3C opsf/rip/ftp/telent/nat/acl综合

实验拓扑 拓扑下载 https://sharewh2.xuexi365.com/share/84b85b32-acb7-4f62-a389-6188680a19f3?t3 图 1-1 注:如无特别说明,描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备,R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备…

【jmeter】windows下使用 (测试MQTT)

1. 添加线程组 二、添加如下请求 1. 添加创建连接请求-选中线程组, 点击右键,添加>取样器>MQTT Connect设置MQTT连接 本次使用本机开启的MQTT服务进行测试,默认ip为127.0.0.1,端口默认1883 2. 添加发布请求-选中线程组 …

软件测试之对于测试的反思及思考

1.针对一个页面,从页面的完整性(包括字段、输入框、功能点)出发 2.对于分页,考虑未在首页的时候的测试,末页的情况。 3.对条件的查询来说,要针对于单个输入框的测试、交叉输入框的测试 4.对于删除、修改等,要考虑你删除…

nablet Elements released处理视频的组件

nablet Elements released处理视频的组件 mediaEngine-一个转码工厂,为视频工作流从贡献到分发提供动力。 HeightScreen-AI驱动的工具,用于将视频转换为垂直屏幕,自动选择感兴趣的区域。 Shrynk-AI驱动的解决方案,可自动完成高亮编…

【站内题解】十六道csdn每日一练Python题解

文章目录题目一: 游乐园的门票1. 问题描述2. 输入描述3. 输出描述4. 示例4.1 输入4.2 输出5. 答案5.1 解法一5.2 解法二题目二:小桥流水人家1. 问题描述2. 输入描述3. 输出描述4. 示例4.1 输入4.2 输出5. 答案题目三:小艺读书1. 问题描述2. 输…

Wordpress模板主题中functions.php常用功能代码与常用插件(持续收集整理)

用Wordpress建站的初学者一定会需要用到的Wordpress模板主题中functions.php常用功能代码与常用插件。慢慢持续收集整理....... 目录 一、Wordpress模板主题中functions文件常用的代码 二、Wordpress自定义字段的设定与调用代码(系统常规自定义字段) …

ESP32基础应用之LVGL基础

文章目录1 实验目的1.1 参考文章2 实验工具3 准备工作3.1 搭建ESP32开发环境3.2 克隆lv_port_esp32工程4 配置lv_port_esp32工程5 实验验证6 使用过程遇到的问题6.1 触摸功能点击屏幕位置不对1 实验目的 本实验为使用ESP32实现LVGL(轻量级的嵌入式图形库&#xff0…

消息队列概述与扩展

一、消息队列的特性 与业务解藕:一个具有普适性质的消息队列组件不需要考虑上层的业务模型,只做好消息的分发就可以了,上层业务的不同模块反而需要依赖消息队列所定义的规范进行通信。FIFO:先投递先到达的保证是一个消息队列和一…

计算机组成原理习题课第三章-2(唐朔飞)

计算机组成原理习题课第三章-2(唐朔飞) ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:&…

梦开始的地方——C语言柔性数组

文章目录柔性数组什么是柔性数组?柔性数组的使用柔性数组的优点柔性数组 什么是柔性数组? 在C99中,结构体最后一个元素它允许是一个未知大小的数组,这就叫做柔性数组成员。 这个概念听起来可能有点不可以思议,但它的…

第三十九篇 自定义指令 - directive

前面讲了关于在Vue中如何来进行封装swiper组件的内容,本篇内容讲到使自定义组件,讲这块内容也是同样为了后续再次回顾封装swiper组件变化做铺垫内容,那么什么是自定义指令,在前面的内容讲过了好些常用的指令,如 v-modl…

【linux】环境基础开发工具使用

1.vim编辑器 vim中最常用的是三种模式:命令模式,底行模式,插入模式。 命令模式(Normal mode)命令模式是我们第一次vim打开文件的样子(默认模式),这里控制屏幕光标的移动,字符、字或行的删除&…

考CISAW的N个理由!

随着信息科技的飞速发展,互联网的普及,面对信息安全的严峻局势,网络信息安全显得尤为重要,同时近些年来,国家也相继出台一些政策,并推出一些国家认证的资格证书,CISAW认证就是专门针对信息安全保…

DPDK代码目录结构

DPDK功能结构 DPDK工程目录内容 dpdk-stable-18.11.11]# ls app buildtools devtools drivers GNUmakefile lib MAINTAINERS meson.build mk README usertools build config doc examples kernel license Makefile meson_opt…

使用React.ts创建一个密码生成器的简单示例

目录密码生成器DemoFeature知识点React TypeScript —— Function Components为元素(::before/::after)绑定点击事件React如何正确定义对象数组在React中设置复选框check属性三目运算符实现React动态绑定class和style参考资料密码生成器Demo 使用密码生成器工具创建随机密码。P…

GIT技巧

目录 基础命令 commit 、branch merge rebase 高级特性 自由修改提交树 cherry-pick rebase 远程仓库命令 基础命令 commit 、branch Git Commit Git 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样…

流媒体传输 - HLS 协议

HLS 全称是 HTTP Live Streaming,是一个由 Apple 公司提出的基于 HTTP 的媒体流传输协议,用于实时音视频流的传输。目前 HLS 协议被广泛的应用于视频点播和直播领域。 概述 原理介绍 通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件&#xff…

Spirng 痛苦源码学习(二)——手写spring大致总框架(一)

文章目录前言一、总体步骤如下1、spring 文件夹2、myProject 文件夹二、主要coding1、配置文件2、容器3、一些spring中的重要的注解4、项目中的使用5.重要的bean定义信息6、postProcessor重要,前置通知和后置主要项目的截图前言 本文主要基于spring的注解的方式完成…