作者:刘裕惺
CNStack 相关阅览:
CNStack 多集群服务:依据OCM 打造完善的集群办理才能
CNStack 虚拟化服务:完结虚拟机和容器资源的共池办理
CNStack 云边协同渠道:完结原生边际竟能如此简略
01 前语
CNStack 2.0(以下简称 CNStack) 作为阿里云云原生最佳实践的输出载体,其方针是供给一个敞开、共享、标准化的云原生生态系统,使企业可以愈加轻松地构建和办理云原生运用。其间,在渠道侧才能扩展方面,CNStack 依据“云服务” 及 “云组件”标准标准及相应东西链,供给了敞开、标准、易用的才能。
现在,CNStack 已发布的云服务包括:多集群办理,分布式运用办理、分布式存储、虚拟化服务、云边协同、服务网格等,前面几篇文章中,也已陆陆续续的专文介绍了多集群、虚拟化、云边协平等云服务。后续也会有更多的云服务&云组件上架 CNStack 并专文介绍。
本文将针对云服务&云组件本身及其相关东西链进行一个系统的共享。
02 云服务&云组件简介
在详细介绍云服务&云组件之前,首先咱们需求论述一下云服务&云组件的定位以及其存在的含义。
在 CNStack 系统内,咱们希望每个面向用户供给的服务既彼此解耦又可无缝协作,一起还可以简略快速复用CNStack 渠道供给的根底才能。针对此方针与希望,咱们提出了云服务的概念,经过云服务:
-
依据 CNStack 渠道,可在其上不断的增长新的云服务,以完结才能的扩展。
-
各云服务之间的生命周期与发布可完全解耦,包括与 CNStack 渠道之间(实际上 CNStack 本身也是一个云服务)。
-
依据 CNStack 渠道,可快速简略运用渠道供给的用户、租户、鉴权、审计、许可证、多集群布置、UI 结构等根底才能,以及与渠道既有才能或其他云服务无缝的协作才能。
云服务作为一个全体供给特定的服务,而其背后真实的实体仍是由云组件组成。一起考虑到组件维度更细粒度的运用场景,在 CNStack 系统内,将云组件区分为如下几种类型:
- 云服务组件,作为云服务中组件的一员,其生命周期和云服务共同;云服务下的组件依据其布置特性又区分为控制面和数据面,其间:
-
- 控制面组件,即管控类组件,仅在主集群上布置。
- 数据面组件,即非管控类组件,可以在主集群/客用集群布置,其生命周期和健康状况,在集群之间彼此独立。
-
集群组件,由集群办理员独自保护,生命周期由集群办理员担任,其往往集群维度内全局唯一。
-
项目组件,由项目办理员在项目命名空间中布置,其可与用户自研软件一起编列完结业务流程,其生命周期由详细运用者担任。
特殊声明:云服务&云组件本身与社区已存在的 Helm Chart、OAM(Open Application Model)等运用界说并不抵触,而是将这些运用界说做为云服务&云组件的其间一种支撑方法(当时云服务&云组件仅支撑 Helm Chart)。
03 依据 cn-app-operator,完结云服务&云组件的完整生命周期办理
针对云服务&云组件的生命周期办理,CNStack 依据 cn-app-operator 组件以 Kubernetes CRD 模式进行办理,关于云服务方来说,只需将云服务/云组件的界说丢到集群里,接下来就交给 cn-app-operator 组件即可。
上述是 cn-app-operator 在用户提交一个云服务/云组件后,其针对云服务/云组件的生命周期的办理 (注:一切云服务&云组件的声明都是在主集群中) :
- 依据云服务&云组件声明主动到达终态
-
- 依据云服务+云服务装备声明,主动创建出对应的云组件(注:也可独自提交云组件)
- 针对云服务,允许供给独自的云服务装备,针对云组件部分参数进行掩盖(云组件默许参数与掩盖参数的 merge 由 cn-app-operator 主动完结),以完结界说和装备的解耦
- 针对集群组件(即集群范围内唯一的云组件),其生命周期独立于云服务。其布置行为为:假如集群内未布置该组件,则进行布置;假如集群内已布置该组件,则仅在更高版本被声明时,进行升级;否则不做任何行为改动
- 依据云组件声明,经过 helm install/upgrade/rollback 等方法,使其到达云组件界说的希望状况
- 详细 action 会执行 helm install/helm upgrade / helm rollback, 由 cn-app-operator 主动判别
- 监听云服务装备,多集群信息等触发上述行为的主动改变
-
针对云服务&云组件的每次改变,依据Kubernetes ControllerRevision记录前史改变
-
保护云服务&云组件的状况信息
-
- 经过 LabelMarker,将一切属于云服务/云组件的 workload 打标,workload 列表经过解析 helm manifest 获取
- 云服务&云组件 status 控制器,会依据云服务&云组件相关标签,获取并聚合 workload 的状况信息,作为云服务&云组件的真实状况
- 高扩展才能支撑,如经过扩展云组件布置器,支撑多集群,边际节点等复杂场景布置
-
- 依据OCM(open-cluster-management),扩展 cn-app-operator 组件布置器,将 helm release 下发到相应的集群中。其间决议云服务组件需求布置到哪些集群上,经过匹配云服务中组件的 ClusterLabelSelector 界说与多集群 ManagedCluster 目标的 Labels来决议。
- 云边协同云服务,经过扩展 cn-app-operator 组件布置器,支撑将 helm release 布置至边际节点上
一起为确保云服务服务质量,cn-app-operator 为云服务供给授权保护服务,主要为云服务供给 License 信息的加密保护以及根底布置控制(CNStack 本身的商务 License 也是依据该方法进行管控)。云服务供给方,需求针对授权环境,供给相应的服务质量确保。
-
云服务无需关怀 License 的生成、校验等根底才能,会由 cn-app-operator 一致供给
-
可经过 ServiceMonitor 暴露当时运用用量,cn-app-operator 会主动与 License 中授权用量做比照,假如超出用量,则回绝云服务的布置/改变
-
云服务也可经过 cn-app-operator 供给的接口获取授权信息并完结云服务本身的授权保护逻辑
04 依据Sealer,完结云服务&云组件的 build,share,run
Sealer[silr] 是云原生 PaaS 团队贡献给 CNCF 基金会的开源项目,其间心方针在于完结分布式软件的 Build、Share、Run 才能,探索分布式软件更好的协作与交给方法。其运用相似 Docker Image 的方法,将分布式软件布置所需的一切依赖一致在 Build 阶段打包在 Sealer Image 中, 并在 Run 节点可经过 Clusterfile 装备来描述/掩盖发动 Sealer Image 中的分布式软件的默许装备,其间 Sealer Image 本身是契合 OCI 标准的,其可依据已有 Docker Registry/OCI Registry 进行存储&分发。
云服务&云组件的发布包标准遵循 Sealer 项目,经过 Sealer Image,将云服务/云组件(包括界说、附件等)、cn-app-operator 乃至是 K8s 集群本身以及布置依赖一切的 container images 等一致构建打包,在布置阶段经过 sealer run 指令可完结一键布置 K8s 集群 + 一切云服务以及一键增量布置云服务&云组件,使 CNStack 本身(包括 K8s 集群)与云服务云组件的交给方法一致且简略。
05 依据CNStack才能中心,完结云服务&云组件的白屏化办理
依据 CNStack 渠道布置的云服务&云组件,便可无缝对接 CNStack 渠道供给的的才能中心(白屏化办理),IAM(账号办理,身份认证,访问控制,操作审计等),UI 结构等根底才能。其间,IAM 和 UI 结构等会在后续专文介绍。
在白屏化办理方面,经过 CNStack 才能中心,办理员将云服务/云组件交给包(即前面说到的打包了云服务/云组件的 Sealer Image )导入才能中心,即可完结云服务/云组件的布置,升级,变配,卸载等一系列生命周期办理才能及日志监控告警等运维才能。其间:
-
除经过交给包(即 Sealer Image)导入外,云组件交给包也可以依据一个标准的 Helm Chart 包,经过才能中心白屏直接导入并运用
-
云组件的日志接入,无需额定装备即可直接运用,其间相关 Pod 的 stdout 会默许被采集
-
云服务&云组件的监控告警也只需做简略的装备,就可快速接入,详细接入方法及运用后续会有专文介绍
云服务列表&云服务运维:
云组件列表&云组件运维:
如上所述,在客户局点中,一切的云服务&云组件当时都需求经过手动导入包的方法进行导入,而假如在满意单向出网络的局点中,可以打通外部云服务&云组件商场,从而完结在线装置,更新等服务,将会使云服务&云组件的运用愈加快捷。才能中心现在也已经正在规划该项才能,敬请期待。
别的在白屏才能上值得一提的便是云服务的多集群布置才能,前文说到,经过匹配云服务中组件的 ClusterLabelSelector 界说与多集群 ManagedCluster 目标的 Labels 来决议云服务组件布置到的集群。这就需求操作人员来手动保护 ManagedCluster 目标的 Label 使其满意云服务组件 ClusterLabelSelector 的声明,而经过才能中心, 无需关怀上述声明,仅需经过才能中心操作布置/卸载即可,才能中心会主动完结 ManagedCluster 相应 Label 的改变操作。
06 总结
经过云服务&云组件,使 CNStack 作为输出载体,可在其之上不断的丰富其生态系统。围绕云服务&云组件,咱们:
- 结合 Sealer,完结了模型标准,并在支撑 Helm Chart 的根底上,保留了其未来支撑 OAM 等运用界说的扩展性。
- 构建了生命周期办理东西,cn-app-operator,其完整的支撑云服务&云组件的全生命周期办理,并在未来会扩展支撑如多集群灰度等更高阶的才能。
- CNStack 渠道内置了白屏化办理渠道, CNStack 才能中心,使云服务&云组件的操作&办理&运维本钱大幅降低,并可无缝对接 UI 结构,身份&访问办理等根底才能。
- 乃至打造了阿里云公有云产品 -云原生运用交给渠道(Application Delivery Platform,简称 ADP)(完结了云服务&云组件的 CI/CD,常用中间件云组件的支撑,依据公有云环境在线验证,一键产出云服务&云组件 Sealer 交给包,License 授权办理等才能),方便云服务&云组件的集成,测验和发布。
别的除了由阿里云官方来供给云服务&云组件外,咱们也希望将这个扩展才能交给用户以及社区。现在一切用户皆可经过 ADP 平构建自己的云服务&云组件,一起咱们也正在着手预备将云服务&云组件模型的界说、生命周期办理东西 cn-app-operator 以及相关完整的东西链逐步在CNStack 社区进行开源。
相关链接:
-
CNStack 产品官网
www.aliyun.com/activity/mi… -
CNStack 社区版(免费下载运用)
github.com/alibaba/CNS… -
ADP(Application Delivery Platform) 产品官网
help.aliyun.com/product/191… -
CNCF Sealer 项目
github.com/sealerio/se… -
CNCF OCM 项目
open-cluster-management.io/ -
Helm
helm.sh/ -
OAM(Open Application Model)
oam.dev/ -
Kubernetes ControllerRevision
kubernetes.io/docs/refere…