如何构建面向用户的云管平台

embedded/2024/9/25 7:56:57/

为了解决业务用户到k8s-api之间的鸿沟,大致有两种直接的方式。第一种就是把业务变成k8s专家,这样业务方就可以直接使用k8s而不会出现不会用不好用的感受,但这会导致一个很大的问题,就是业务发开的认知负荷爆炸。

另外一个看起来也很直接的解决方式,就是由我们的k8s工程师和平台工程师,充分利用k8s的能力,去构建一套面向用户的应用管理平台。面向用户,意味着,我们的模型或API是业务侧熟悉和理解的。 具体的,可以在k8s上面,搭建一个上层的应用管理平台,对业务研发和运维暴露上层的API,这个API可以但不限于底层的pod,deployment之类,更多是业务易于理解的。比如对于研发暴露一个CICD流水线,或一个webservice应用。

对于运维,暴露一组诸如扩缩容、发布策略、流控等这样的经过抽象后的API。这样,研发和运维就会跟之前一直接触的devops流水线或用户体验有一个更好的结合点。

问题来了,如果我们在k8s上架起一个Paas平台,就会使得k8s的底层无限能力没法向最终用户透出。换句话说,如果在k8s繁荣多样的基础设施能力,和用户日益增长的应用管理诉求之间,存在一个传统paas,那paas就会成为一个瓶颈。

第一个,平台必须提供用户友好的API,这是最基础的要求。要做到用户友好,我们必须站在用户或业务的角度思考问题,或者说以应用为中心。 第二个,就是打破传统paas的瓶颈,做到高可扩展,而高可扩展的核心就是能无缝衔接k8s,从而用上k8s的无限扩展能力。综合起来看,我们其实要打造的是一个以应用为中心的k8s。

首先,最核心的地方一定是k8s, 也就是蓝色的这一条。 我们可以很容易的在k8s上定义一组crd和controller, 自然可以用crd做我们的用户侧API, 比如说pipeline就是一个api,同理,运维侧的扩缩容、流控等都都可以通过crd装起来。 这就解决了我们的第一个问题--应用层抽象。做应用层抽象,基本上等同于写crd+contoller

另一方面,k8s内置的controller或能力是有限的,绝大多数能力都是通过社区提供的。为了充分利用社区的这些能力或应用层驱动,我们必须有一个统一的插件管理能力。把支持的能力统一管理起来,使用户能够方便的查找和使用特定能力。

要构建这样一个应用管理平台,有没有开箱即用的方案呢?答案就是OAM,开放应用模型,OAM是一个 构建以应用为中心的管理平台的 标准和规范。OAM专注于三个层次 。第一个是应用层抽象,这层定义的第一个抽象是component,帮助用户定义应用的workload如deployment,statefuset等等。 第二个概念叫应用特征, 把运维侧的能力 通过一个叫trait的概念暴露给用户。然后我们需要把运维特征也就是trait关联到我们的组件, 比如我们的depoyment组件,可能需要某种扩容策略或发布策略 ,这个就是application的概念。 这些概念的背后都是crd, 当我们把application组装好,就交给OAM的runtime ,runtime会把这些component和trait进行解析,最后交给k8s运行起来。


http://www.ppmy.cn/embedded/87960.html

相关文章

mac中docker常用命令总结

在Mac中,Docker的常用命令可以总结如下表格: 命令用途docker run运行一个新的容器实例。可以指定镜像名来启动容器,并支持多种参数来调整容器的运行方式。docker ps列出当前正在运行的容器。可以通过添加-a参数来列出所有容器(包…

基于vue-onlyoffice实现企业office web在线应用

目录 1.背景... 1 2.Onlyoffice介绍... 2 3.Onlyoffice核心api介绍... 2 3.1 ApiDocument 2 3.2 ApiParagraph. 2 3.3 ApiTable. 2 3.4. ApiRange. 3 4.Onlyoffice插件介绍... 3 4.1 插件定义... 3 4.2 插件对象... 3 4.3 插件结构... 4 4.4 插件内嵌使用方式... 4…

前端常见场景、JS计算精度丢失问题(Decimal.js 介绍)

目录 一. Decimal.js 介绍 二. 常用方法 1. 创建 Decimal 实例 2.加法 add 或 plus 3.减法 sub 或 minus 4.乘法 times 或 mul 5.除法 div 或 dividedBy 6.取模 7.幂运算 8.平方根 9.保留小数位 toFixed方法(四舍五入) 三.项目应用 前端精度丢失问题通常由以下原因…

替换后端国外身份目录服务,宁盾身份域管接管FileNet助力国产化升级

IBM FileNet 是一款优秀的企业内容管理解决方案,为客户提供了领先的文档管理和流程管理集成环境,被大量企业所采用。FileNet 需要使用企业级的目录服务器(LDAP)作为其用户管理系统,满足其认证和授权的需求。对于 LDAP …

【React】详解样式控制:从基础到进阶应用的全面指南

文章目录 一、内联样式1. 什么是内联样式?2. 内联样式的定义3. 基本示例4. 动态内联样式 二、CSS模块1. 什么是CSS模块?2. CSS模块的定义3. 基本示例4. 动态应用样式 三、CSS-in-JS1. 什么是CSS-in-JS?2. styled-components的定义3. 基本示例…

数据结构-C语言-排序(4)

代码位置: test-c-2024: 对C语言习题代码的练习 (gitee.com) 一、前言: 1.1-排序定义: 排序就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来。(注:我们这里的排序采用的都为升序) 1.2-排…

typescript 数据类型

// 基础类型规定 let num: number 123; // 规定num必须是数字类型 let str: string "123"; // 规定str必须是字符串类型 let bl: boolean false; // 规定bl必须是布尔值类型 let nl: null null; // 规定nl必须是null类…

Laravel Eloquent资源更新全解析:优雅地处理数据更新

Laravel Eloquent资源更新全解析:优雅地处理数据更新 Laravel的Eloquent ORM不仅是一个对象关系映射工具,它还提供了一种优雅的方式来更新数据库资源。Eloquent的资源更新机制,以其简洁的API和强大的功能,让数据库操作变得简单而…