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,实现云服务&云组件的完整生命周期管理
针对云服务&云组件的生命周期管理&#