- 云原生
- 微服务
- 运维
- DevOps
【免费下载链接】meshery
Meshery, the cloud native manager
本文围绕 Meshery 扩展文档 Cloudbees Previews 模型页 及其背后的模型定义数据,解析该集成模型在models/目录下的完整结构:模型清单(model.json)的元数据字段、5 个 CRD 组件(Environment、GitRepository、HierarchyConfiguration、HNCConfiguration、SubnamespaceAnchor)的 JSON Schema 字段详解,以及每个组件携带的通用能力(capabilities)列表。读完本文,你可以理解 Meshery 如何通过声明式模型把 CloudBees Previews 这类 CI/CD 组件建模为可视化设计对象,并能按 Schema 约束写出合法的 Environment / GitRepository 配置。
一、文档定位:一个集成模型的定义页
该文档页是 Meshery 官方文档中extensions/models/目录下的模型条目,其 frontmatter 声明了以下关键信息:
- 标题与副标题:Cloudbees Previews —— “Collaborative and visual infrastructure as design for Cloudbees Previews”(面向 Cloudbees Previews 的协作式、可视化基础设施即设计);
- 分类:
integrations-category: App Definition and Development,子分类integrations-subcategory: Continuous Integration & Delivery; - 注册方(registrant):Artifact Hub,即该模型是从 Artifact Hub 注册中心发现(discovered)而来;
- 功能列表(featureList):
- Automates preview environment creation(自动化创建预览环境);
- Enables isolated testing and development(支持隔离的测试与开发);
- Integrates with GitOps workflows(与 GitOps 工作流集成);
- 运作方式(howItWorks):“Integrates CloudBees Previews”,细节描述为 “Streamlined preview environment management for Kubernetes applications”(面向 Kubernetes 应用的简化预览环境管理);
- 组件计数:
components-count: 5,relationship-count: 0——共 5 个组件、0 条组件间关系。
frontmatter 中列出的 5 个组件名称(hierarchy-configuration、hnc-configuration、subnamespace-anchor、environment、git-repository)与仓库中 models/cloudbees-previews/1.2.0/v1.0.0/components/ 目录下的 5 个 JSON 文件一一对应,components-count: 5与文件数量相互印证。
二、目录结构与模型清单 model.json
模型数据按 “模型名 / 模型版本 / 组件版本” 的三级目录组织:
models/cloudbees-previews/ └── 1.2.0/ # model.version = 1.2.0 └── v1.0.0/ # 组件版本 ├── model.json # 模型清单 └── components/ ├── Environment.json ├── GitRepository.json ├── HNCConfiguration.json ├── HierarchyConfiguration.json └── SubnamespaceAnchor.jsonmodel.json 是模型清单,核心字段如下:
| 字段 | 值 | 说明 |
|---|---|---|
schemaVersion | models.meshery.io/v1beta2 | 模型清单遵循的 Schema 版本 |
version | v1.0.0 | 组件版本目录名来源 |
name/displayName | cloudbees-previews/Cloudbees Previews | 模型标识与展示名 |
status | enabled | 模型处于启用状态 |
registrant | Artifact Hub(typeregistry,kindartifacthub,statusdiscovered) | 来源注册中心信息 |
category/subCategory | App Definition and Development/Continuous Integration & Delivery | 与文档页 frontmatter 分类一致 |
metadata.primaryColor/shape | #1997b5/round-rectangle | 模型图元的主色与圆角矩形形状 |
model.version | 1.2.0 | 对应上层目录名 |
components_count/relationships_count | 0/0 | 清单中未内联组件与关系(详见下文第五节) |
值得注意的是,model.json中components与relationships字段均为null,组件定义全部落在同级components/目录的独立 JSON 文件中,清单只负责描述模型级元数据(分类、来源、视觉样式)。
三、组件定义详解:5 个 CRD 及其 JSON Schema
每个组件文件(schemaVersion: components.meshery.io/v1beta1)都包含四部分:模型上下文(内嵌模型元数据)、styles(视觉样式)、capabilities(能力列表)、component(K8s 资源类型 + JSON Schema)。其中metadata.isNamespaced标明该 CRD 是命名空间级还是集群级,metadata.source_uri统一指向 CloudBees 制品仓库中的cloudbees-previews-0.30.3.tgzHelm 图包,说明这些 CRD Schema 提取自 0.30.3 版本图表。
3.1 Environment(environment.cloudbees.com/v1alpha1,命名空间级)
Environment.json 定义预览环境的声明式入口。spec下字段如下(必填项:source):
| 字段 | 类型 | 说明 |
|---|---|---|
spec.source.cloneURL | string | 仓库的 HTTPS Git 克隆地址 |
spec.source.sha | string | 基于哪个提交 SHA 创建环境 |
spec.source.secretRef.name | object | 读取仓库凭证的 Secret 名(可选) |
spec.ttl | int64 | 环境到期(TTL 秒数)后被删除 |
spec.context | string | 透传给 detector Job 的可选名称,用于区分同一来源下的多个 deployable |
spec.deployerServiceAccountName | string | (un)deploy 操作使用的 ServiceAccount |
spec.detector | object | 用于从源派生 generator/deployer 容器的检测容器;未指定时使用全局默认。含image、command、args、env |
spec.env | array | 提供给所有容器的环境变量(标准 K8sEnvVar:name必填,value/valueFrom支持 configMap/field/resource/secret 引用) |
从 Schema 结构看,detector的语义是“检测容器”:Meshery 将其建模后,用户可以在图形界面中声明检测镜像与启动命令,而无需手写完整 CRD YAML。
3.2 GitRepository(environment.cloudbees.com/v1alpha1,命名空间级)
GitRepository.json 描述接入预览管理的 Git 仓库。spec下字段(必填项:url):
| 字段 | 类型 | 说明 |
|---|---|---|
spec.url | string | 仓库 URL,Schema 用pattern: ^(http\|https)://强制 HTTP(S) 协议 |
spec.apiTokenSecretRef.name | object | 存放 Git 凭证的 Secret 名 |
spec.webhookSecretRef.name | object | 存放 webhook 密钥的 Secret 名 |
spec.autoCreateContexts | string[] | 创建 Pull Request 时直接创建环境配置的上下文列表 |
spec.autoUpdateContexts | string[] | 环境变化时自动同步更新的上下文列表 |
spec.imagePullSecretRefs | object[] | 该仓库环境使用的镜像拉取 Secret 列表 |
spec.ingressTLSSecretRef.name | object | 环境 Ingress 使用的 TLS Secret 名 |
spec.resources | object | 容器预览的默认资源需求,含requests/limits(x-kubernetes-int-or-string量化值) |
spec.secretRefs | array | 密钥映射定义:每项含name(本地名)、key(K8s Secret 名)、items[](本地字段名到 Secret key 的映射),三者均为必填 |
spec.env | array | 传递给预览管理流水线所有容器的环境变量 |
autoCreateContexts与autoUpdateContexts两个字段正是文档页 featureList 中 “Automates preview environment creation” 与 “Integrates with GitOps workflows” 两条特性的 Schema 级体现:PR 打开即自动建立预览环境,PR 变更即自动更新。
3.3 HierarchyConfiguration(hnc.x-k8s.io/v1alpha2,集群级)
HierarchyConfiguration.json 来自 Kubernetes HNC(Hierarchical Namespace Controller),注意其metadata.isNamespaced: false,是集群级配置。Schema 很精简:
spec.parent(string):该命名空间的父命名空间;spec.allowCascadingDeletion(boolean):子命名空间是否允许级联删除。
3.4 HNCConfiguration(hnc.x-k8s.io/v1alpha2,集群级)
HNCConfiguration.json 同样是集群级(isNamespaced: false),用于全局配置 HNC 的资源同步行为:
spec.resources[]:每项含resource(必填)、group(核心资源可省略)、mode(枚举Propagate/Ignore/Remove,缺省按Propagate处理);- Schema 描述中明确:
roles与rolebindings已由 HNC 预配置为 Propagate 模式,不允许在 spec 中覆盖。
HNC 的两个配置组件与命名空间级组件组合,构成了预览环境的隔离边界:每个预览环境挂载在层级命名空间树下,资源沿层级同步或隔离——这解释了 featureList 中 “Enables isolated testing and development” 的底层机制。
3.5 SubnamespaceAnchor(hnc.x-k8s.io/v1alpha2,命名空间级)
SubnamespaceAnchor.json 的 Schema 几乎为空(properties: {})。它是一个标记型(marker)资源:在某个命名空间中创建 SubnamespaceAnchor 即声明“该命名空间允许在其下建立子命名空间”,是 HNC 自助创建子命名空间的入口。空 Schema 本身即是其建模价值——Meshery 将其纳入模型后,用户可在图形化设计中显式放置这个“锚点”对象。
四、组件通用能力(capabilities)列表
5 个组件文件携带了完全一致的 8 项能力(schemaVersion: capability.meshery.io/v1alpha1,version0.7.0),可对照 Environment.json 第 75–190 行的capabilities数组:
| displayName | kind / type | subType | 生效状态(entityState) | 含义 |
|---|---|---|---|---|
| Performance Test | action / operator | perf-test | instance | 发起性能测试:Meshery 执行负载生成、采集指标并呈现结果 |
| Workload Configuration | mutate / configuration | config | declaration | 配置组件的工作负载相关设置 |
| Labels and Annotations Configuration | mutate / configuration | labels-and-annotations | declaration | 配置组件的标签与注解 |
| Relationships | view / configuration | relationship | declaration + instance | 查看组件关系 |
| Json Schema | view / configuration | definition | declaration + instance | 查看组件定义(即本文第三节的 Schema) |
| Styling | mutate / style | — | declaration | 配置组件视觉样式 |
| Change Shape | mutate / style | shape | declaration | 更改组件图形形状 |
| Compound Drag And Drop | interaction / graph | compoundDnd | declaration | 在图形视图中将组件拖入父组件 |
从能力结构看,view类能力(Relationships、Json Schema)在声明态与实例态均可用,mutate类能力限定在声明态(declaration),Performance Test则限定在实例态(instance)——能力按实体生命周期状态分阶段开放。interaction类的 Compound Dnd 与 HNC 的层级命名空间建模天然契合:把预览环境的命名空间对象拖入父级锚点,即可在图上表达父子层级关系。
五、视觉样式与数据来源
文档页 frontmatter 中为每个组件声明了 color / white 两套图标路径(位于extensions/models/cloudbees-previews/文档资源目录下),与模型数据中的styles字段共同决定 Meshery 图形视图中的呈现:
- 模型级(model.json):
primaryColor: #1997b5,secondaryColor: #ffffff,shape: round-rectangle,并内嵌了 CloudBees 主题色的svgColor图标; - 组件级:5 个组件统一
primaryColor: #00B39F、secondaryColor: #00D3A9(Meshery 品牌青绿色系)、shape: circle,并附带meshery-logo-light主题的 SVG 作为占位图形。
styles与metadata中还存在svgColor/svgWhite/svgComplete三个内联 SVG 字段,其中svgWhite内嵌的是 Meshery logo 矢量,说明该模型在生成时使用了默认图标,尚未替换为 CloudBees 专属白底图标——结合文档页 frontmatter 中已声明的whiteIcon路径,可以推断文档侧的组件白图与模型数据内的占位 SVG 分属两套来源。
source_uri(CloudBees 公共制品仓库的cloudbees-previews-0.30.3.tgzHelm 图包)是全部 6 个文件的共同溯源字段,表明这套模型定义是从该版本 Helm 图表的 CRD 定义自动派生:CRD 的apiVersion(environment.cloudbees.com/v1alpha1与hnc.x-k8s.io/v1alpha2)与openAPIV3Schema被转写为模型 JSON 中的component.version/component.kind/component.schema。
六、关系、计数一致性与使用前提
- 零关系设计:文档页
relationship-count: 0与model.json中relationships: null一致。5 个组件之间没有声明显式关系,组件间的语义关联(GitRepository 驱动 Environment、SubnamespaceAnchor 约束命名空间层级)依赖使用者在图中以 Compound Drag And Drop 建立父子结构,而非模型内固化的 relationship 对象。 - 计数口径:
model.json的components_count: 0指清单文件内未内联组件对象;实际组件数以components/目录文件数(5 个)与文档页components-count: 5为准。 - Schema 版本:清单使用
models.meshery.io/v1beta2,而组件内嵌的模型引用仍为models.meshery.io/v1beta1(组件文件本身为components.meshery.io/v1beta1),属于模型清单升级过程中的版本混用,阅读数据时应以清单schemaVersion为准。 - 适用前提:该模型描述的是 CloudBees Previews 0.30.3 图表所暴露的 CRD 集合(2 个 environment.cloudbees.com/v1alpha1 类型 + 3 个 hnc.x-k8s.io/v1alpha2 类型);若图表升级改变了 CRD 字段,模型 JSON 中的 Schema 需同步更新。模型
status: enabled且注册中心状态为discovered,表示它是从 Artifact Hub 发现并纳入模型库的条目。
七、小结
Cloudbees Previews 集成模型展示了 Meshery 扩展体系的一种典型形态:以 Artifact Hub 为注册来源,从 Helm 图表(cloudbees-previews-0.30.3)自动派生 CRD 的 JSON Schema,将 GitRepository、Environment 与 HNC 三件套(HierarchyConfiguration / HNCConfiguration / SubnamespaceAnchor)统一建模为可拖拽、可配置、可测试的图形化设计对象。对使用者的实际价值在于:按第三节的字段表与 Schema 约束编写环境配置(如spec.source+spec.ttl+autoCreateContexts),即可在 Meshery 中完成预览环境的可视化声明,而不必记忆各 CRD 的原始字段细节。
- 云原生
- 微服务
- 运维
- DevOps
【免费下载链接】meshery
Meshery, the cloud native manager
相关推荐
Meshery 中的 Cilium 集成模型:18 个 eBPF 网络组件的可视化定义与源码级解析
Meshery 中的 Cilium 集成模型:18 个 eBPF 网络组件的可视化定义与源码级解析 本篇以 Meshery 文档站中 Cilium 集成模型页(
云原生微服务运维DevOpsMeshery 集成模型解析:Azure DB for MySQL 的组件建模与可视化设计实战
Meshery 集成模型解析:Azure DB for MySQL 的组件建模与可视化设计实战 本文围绕 Meshery 中 azure db for mysq
云原生微服务运维DevOps在 Meshery 中以可视化方式管理 APISIX Ingress Controller:模型组件与 CRD 配置深度解析
在 Meshery 中以可视化方式管理 APISIX Ingress Controller:模型组件与 CRD 配置深度解析 本篇技术指南围绕 Meshery
云原生微服务运维DevOps
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考