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

本文涉及的产品
应用实时监控服务-用户体验监控,每月100OCU免费额度
容器镜像服务 ACR,镜像仓库100个 不限时长
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 随着 OpenClusterManagement(OCM)项目的持续发展,我们觉得有必要周期性向大家同步近期项目的一些进展了,包括我们我们下一步未来发展的方向以及作为贡献者如何参与进来我们的社区。2022 年的尾声即将到来,让我们来进一步看一下项目研发方面的新内容吧!

作者: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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
8天前
|
存储 运维 Kubernetes
Kubernetes集群管理:从基础到进阶
Kubernetes集群管理:从基础到进阶
|
18天前
|
存储 运维 Kubernetes
云端迁移:备份中心助力企业跨云迁移K8s容器服务平台
本文将简要介绍阿里云容器服务ACK的备份中心,并以某科技公司在其实际的迁移过程中遇到具体挑战为例,阐述如何有效地利用备份中心来助力企业的容器服务平台迁移项目。
|
23天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
24天前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。
|
8天前
|
Kubernetes 负载均衡 调度
Kubernetes集群管理与编排实践
Kubernetes集群管理与编排实践
|
1月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
471 1
|
25天前
|
存储 Kubernetes 负载均衡
掌握Kubernetes:从零到一的集群管理之旅
【10月更文挑战第18天】掌握Kubernetes:从零到一的集群管理之旅
70 0
|
1月前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。
141 0
|
1月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
73 0
|
1月前
|
弹性计算 Kubernetes Linux
如何使用minikube搭建k8s集群
如何使用minikube搭建k8s集群

相关产品

  • 容器服务Kubernetes版