- 云原生
- 微服务
- 运维
- DevOps
【免费下载链接】meshery
Meshery, the cloud native manager
本文以 Meshery 官方文档docs/content/en/concepts/logical/_index.md为核心,系统讲解 Meshery 作为可扩展平台(extensible platform)所定义的“逻辑构造”(logical constructs)体系:先理解它如何抽象掉各系统的特定实现细节、让使用者专注于目标本身;再深入每个逻辑构造的 11 项基本属性与 Schema/Definition/Declaration/Instance 四种存在形态;最后结合 Meshery Server 源码与模型目录,看这些概念在代码中如何落地为可注册、可部署、可版本化的实体。读完后,你将掌握 Meshery 内部对象模型(object model)的完整脉络,并能按图索骥地继续深入 Components、Designs、Models、Registry 等子概念。
图:Model Construct Classification —— 逻辑构造(组件、关系、策略、连接、凭证)在 Model 中的分类,图源 Models 概念文档
一、为什么需要“逻辑构造”
Meshery 的自我定位是云原生管理器(cloud native manager),要管理从简单应用到复杂微服务架构及其基础设施,就必须有一组跨平台的统一抽象。原始文档给出的核心主张是:
As an extensible platform, Meshery empowers you with a wide range of logical constructs that provide support for the majority of the systems in the cloud and cloud native ecosystems. Meshery abstracts away the system specific requirements and help you focus on getting things done.
也就是说,Meshery 通过一系列逻辑构造覆盖了云与云原生生态中的绝大多数系统,把 Kubernetes、各云厂商、各服务网格平台各自的特定要求(system specific requirements)抽象掉,让用户专注于“把事情做完”,而不是纠缠于每个平台的语法与配置差异。这些逻辑构造共同构成了一组基础结构(foundational constructs),是理解 Meshery 全部功能(设计、部署、扩展、权限、生命周期管理)的公共语言。
二、逻辑构造的 11 项属性
原始文档明确列出了“每一个逻辑构造都具备以下特性”的清单。这一清单是理解 Meshery 设计哲学的关键,下面逐项展开,并给出对应文档与仓库内的佐证位置。
| 属性 | 原文含义 | 深入说明与文档/代码依据 |
|---|---|---|
| 1. Versioned(版本化) | 构造定义有版本 | 构造的 schema 由独立的 Meshery Schemas 仓库维护;仓库内server/models/下大量 Go 类型直接 importgithub.com/meshery/schemas/models/...包(如 meshery_pattern.go 中引入schemas/models/core与schemas/models/v1beta2/user),体现了“schema 有版本、实现引用版本”的做法 |
| 2. Extensible(可扩展) | 构造可以扩展 | 见 Extensibility 参考文档,其中列出 Adapters、Providers、Load generators、Models and Integrations、REST/GraphQL APIs、Schema annotations、UI 扩展点等多种扩展点 |
| 3. Composable(可组合) | 构造可组合复用 | 见 Patterns 文档:Pattern 是“模板化的 Design”,把复杂设计封装成单个组件,促进实践复用 |
| 4. Portable(可移植) | 构造可携带 | 体现为 Designs 的导出/导入,以及 Models 可以导出为 OCI 兼容镜像,跨环境搬运整套基础设施定义 |
| 5. Interoperable(互操作) | 构造跨平台互通 | 见 Compatibility Matrix 文档,记录 Meshery 与 Istio、Linkerd、Cilium、Kuma、Consul、OSM、Traefik Mesh 等的兼容结果 |
| 6. Configurable(可配置) | 构造生命周期可配置 | 见 Lifecycle Management 指南,覆盖部署、监控、性能等生命周期操作 |
| 7. Documented(有文档) | 构造有文档 | 即当前这篇 logical 概念文档本身及其子文档 |
| 8. Testable(可测试) | 构造可被测试 | 仓库中server/models/目录内含大量*_test.go单测文件(如 providers_test.go 对应的测试),对逻辑构造的存取与契约进行验证 |
| 9. Maintainable(可维护) | 构造易维护 | 从源码结构看,每个逻辑实体在server/models/中都有独立的持久化器(persister)与 API 响应类型文件,边界清晰、便于维护 |
| 10. Secure(安全) | 安全能力(标注 v0.9.0) | 原文档在此项后标注了版本 v0.9.0,属于文档中标记的版本相关能力说明 |
| 11. Observable(可观测) | 可观测能力(标注 v0.1.0) | 原文档在此项后标注了 v0.1.0,表明可观测是逻辑构造自始即考虑的属性 |
需要说明的是,原文档对第 10、11 项附带了版本号标注(v0.9.0 / v0.1.0),本文如实继承,具体版本能力以仓库当前实际文档与发布说明为准。
三、核心:每个构造的四种存在形态
这是logical/_index.md最核心的技术内容。原文档指出:每一个逻辑构造都以以下四种形态表示,前三种是静态的(static),最后一种是动态的(dynamic)。
| 形态 | 性质 | 定义(原文) | 原文示例 |
|---|---|---|---|
| Schema(模式) | 静态 | 表示构造的逻辑视图的大小、形状与特征特征的骨架结构(skeletal structure) | 组件(Component)schema,定义在 Meshery Schemas 仓库中 |
| Definition(定义) | 静态 | Schema 的一份实现,包含针对某个具体构造的特定配置 | 泛化地描述 Kubernetes Pod 的组件定义 |
| Declaration(声明) | 静态 | 一个已定义的构造,即 Definition 的一次具体化(a specific deployment of the Definition) | 以 Kubernetes Pod 形式配置 NGINX 容器的组件配置 |
| Instance(实例) | 动态 | 一个被实现的构造(已部署/已被发现,realized),即 Declaration 的一次实例化 | 集群中正在运行的NGINX-as234z2Pod |
这条从“骨架 → 实现 → 具体化 → 落地实例”的四级链路,是 Meshery 声明式(declarative)管理模型的根基:
- Schema 是静态契约:只描述“形状”,不含具体值。Meshery 的模型构造使用 Cue 这种 schema 语言定义(见 Models 文档 中 “Model constructs are defined using a schema language called Cue” 的说明),保证机器可读、可被自动化工具消费。
- Definition 是静态配置:对 Schema 的一次实现,给出该构造类型通用的配置。仓库根目录下的
models/目录就是海量静态 Model/Definition 的存放地,按提供方/技术划分(如 models/kubernetes、models/istio-base、models/meshery-operator 等),models/component_models.yaml 则登记了各模型的仓库、版本与发布者信息(如 name、repository、version、repo_url、verified_publisher、official、cncf 等字段),这正是“Definition 附带版本与来源信息”的实际体现。 - Declaration 是具体化:把 Definition 落到某一具体对象(如“NGINX 容器作为一个 Pod”)。在代码层面,用户可以导入多种声明形式,server/models/meshery_pattern.go 中的
GetDesignsTypes()明确列出了 Meshery 支持的声明/设计类型及其扩展名:Helm Chart(.tgz)、Docker Compose(.yaml/.yml)、Kubernetes Manifest(.yaml/.yml)、Design(.yaml/.yml),与 Designs 文档 中“Designs can be imported as Kubernetes Manifests, Docker Compose, Helm Charts, or Meshery Designs”的说明一一对应。 - Instance 是运行时实体:部署到集群或从集群被发现后的“活”的对象。从源码结构看,
server/models/k8s_components_registration.go、server/models/k8s_context.go 等文件负责 Meshery 连接 Kubernetes 上下文后注册/发现组件与实例,这正是静态声明被“实现”为动态实例的代码通道;Connections 概念文档 进一步解释了组件状态即 Meshery Server 与目标系统之间连接状态的归一化表示。
理解这条链路后,Meshery 所有实体(组件、设计、模型、策略等)都可以套用同样的四形态来分析:先问它的 Schema 长什么样,再问它的 Definition/Declaration 存在哪,最后看 Instance 在集群中的真实状态。
四、逻辑概念家族:围绕 logical 概念的 12 个子概念
原文档末尾的 “Logical Concepts” 章节把逻辑构造展开为一组子概念。这些子概念各有专门文档(均位于 docs/content/en/concepts/logical/ 目录),下面按仓库文档逐一说明,作为继续深入阅读的索引。
| 子概念 | 一句话定位(依据对应文档) | 文档路径 |
|---|---|---|
| Components(组件) | 表示被管基础设施的基本构建块;分为语义组件(映射真实资源,可被生命周期管理)与非语义组件(文本框、形状、连线等注释性元素);关键属性为 Model、Kind、Version、Spec、Status;kind+apiVersion+model.name相同即视为重复 | components.md |
| Designs(设计) | 像协作文档一样的基础设施共同创作工具;是 Meshery 的可部署单元(deployable unit),由 Components 与 Relationships 组成;可克隆、合并、导出 JSON/OCI、导入、快照、发布、校验、dry-run、审计、按 Technology/Type 打标签等 | designs.md |
| Models(模型) | 逻辑对象表示的“打包单位”(unit of packaging);每个 Model 有版本,捆绑若干组件、关系、策略、连接与凭证;可导出为 OCI 兼容镜像;name+version相同即视为重复;由 registrant 登记 | models/index.md |
| Patterns(模式) | 模板化的 Design,更高的抽象层级,把一个复杂设计表示为单个组件,促进最佳实践复用;文档中标注为路线图特性(planned for v0.9.0) | patterns.md |
| Relationships(关系) | 定义模型内组件间交互与依赖的性质,如分层、网络、默认等关系类型,带选择器(selectors)、元数据与可选参数 | relationships/index.md |
| Policies(策略) | 管理指标、定义动作、指定组件或设计的颜色属性等,约束组件与关系的行为 | policies/index.md |
| Credentials(凭证) | Meshery 认证到受管/非受管连接时使用的凭证,类型包括 API Key/Token、用户名密码、证书、云厂商凭证、ServiceAccount Token 等;静态加密、细粒度权限、不在日志/API 响应中暴露 | credentials.md |
| Connections(连接) | 组件状态被归一化为Connection对象——组件的状态本质上就是 Meshery Server 到该组件的“连接”,从而多个系统可共享同一组件而各自拥有独立状态 | connections/index.md |
| Registry(注册表) | Meshery 已知全部能力的中央数据库;区分静态模型(随发布预置,Server 启动时自动注册)与动态模型(连接 K8s/云平台时运行时生成并自动注册) | registry.md |
| Workspaces(工作区) | 设计按工作区分组、团队共享并部署到环境 | workspaces.md |
| Organizations(组织) | 组织级实体,支撑团队协作与治理 | organizations.md |
| Environments(环境) | 部署目标环境的抽象,设计部署到一到多个 Environment | environments.md |
其中 Registry 文档 还给出了关键术语对照,值得单独强调,因为它解释了逻辑构造“从哪来、由谁管”:
- Registry(注册表):包含已知能力数据库的 Meshery 组件;
- Registrar(登记者):负责管理与维护注册表的 Meshery Server 内部进程;
- Registrant(登记方/实体源):实体来源,可以是模型文件、Kubernetes 集群,也可以作为第三方实体源的代理进行登记;
- Entity / Registree(实体):注册表中的条目,如模型、组件、关系、策略,有时也称为 capability。
仓库中静态模型的实际来源可对照models/目录验证:每个提供方目录(如 models/meshery-operator、models/kyverno、models/cilium)存放若干 JSON 定义文件,配合 models/component_models.yaml 的版本清单,构成“随每个 Meshery 发布内置、启动时自动注册”的静态模型集合;而连接集群后由 server/models/k8s_components_registration.go 等逻辑生成的,则是动态模型——动态模型通常缺少静态模型中附带描述、标签、关系等元数据,这一差异在 Registry 文档中已被明确说明。
五、从源码看:逻辑构造在 Meshery Server 中的落地
为把上述概念落到可验证的代码事实,仓库中有一组与之一一对应的实现位置:
- 设计类型的统一入口。server/models/meshery_pattern.go 定义
GetDesignsTypes()与常量HelmChart、DockerCompose、K8sManifest、Design,说明服务端对“设计声明”的识别是类型化的,导入时按扩展名路由——这是三、四种形态中 Declaration 一层的直接体现。 - 持久化器(persister)模式。
server/models/下按实体划分文件:如meshery_pattern_persister.go、workspace_persister.go、organization_persistor.go、seed_models.go、providers.go等。从源码结构看,每个逻辑构造都拥有独立的读写路径与 API 响应结构(*_api_response.go),这支撑了原文档 “Maintainable” 这一属性的工程含义:概念边界即代码边界。 - 注册与发现的动态侧。server/models/k8s_components_registration.go、server/models/k8s_context.go 处理 Kubernetes 上下文连接后的组件注册,server/models/providers.go 处理 Remote Provider 的登记与跟踪;结合 Registry 文档 中 “模型的 registrant 不仅记录来源(provenance),部署时还决定由谁兑现该组件——Meshery Server 自身,还是网络上可达的 Adapter”(见 Deployment Engine 文档),可以推断:Instance 这一动态形态的“谁来兑现”问题,在注册期就已经被决定。
- 测试即契约。
server/models/中的单测(如meshery_pattern_test.go、remote_provider_patterns_test.go、provider_tracker_test.go、seed_models_logs_test.go等)对模式、提供程序、模型种子数据等逻辑构造的存取行为做了验证,对应原文档 “Testable” 属性。 - CLI 侧入口。逻辑构造也暴露给命令行:Registry 文档 说明可用
mesheryctl model import -f <path-to-model>注册模型、用mesheryctl registry generate从表格化清单生成模型,命令实现位于 mesheryctl/internal/cli 与 mesheryctl/pkg/utils 目录。
六、如何按这套概念继续深入(阅读路线)
- 先读 Components 文档:弄清语义/非语义组件与五属性(Model/Kind/Version/Spec/Status),这是所有可部署内容的最小单元;
- 再读 Designs 文档:掌握可部署单元的完整能力清单(克隆、合并、导出 OCI、快照、dry-run、审计、转换 Pattern 等)与设计约束(一个设计同一时间只属于一个 Workspace、Owner 权限模型、默认可见性为 public);
- 然后读 Models 文档 与 Registry 文档:理解打包单位、静态/动态模型、Registrant 与部署路径的决定关系,并对照仓库根目录的 models/ 目录查看真实模型内容;
- 配合 Extensibility 参考 的扩展点清单与 Compatibility Matrix,验证“可组合、互操作、可扩展”三项属性;
- 最后用 Lifecycle Management 指南 把概念映射到部署、监控、性能等实际操作。
小结
Meshery 的 logical 概念文档虽然篇幅不长,却给出了整个平台对象模型的元规则:一切构造都版本化、可扩展、可组合、可移植、可互操作、可配置、有文档、可测试、可维护、安全且可观测;一切构造都遵循 Schema → Definition → Declaration → Instance 的四形态演进。Schema 与 Definition 对应仓库中models/目录下的静态模型资产,Declaration 对应服务端类型化的设计导入(Helm Chart / Docker Compose / Kubernetes Manifest / Design),Instance 则对应连接集群后的注册与发现逻辑。掌握了这四形态与 11 属性,再阅读 Components、Designs、Models、Registry 等子文档与server/models/源码,就能完整读懂 Meshery 如何以一套统一的语言管理多云与云原生基础设施。
- 云原生
- 微服务
- 运维
- DevOps
【免费下载链接】meshery
Meshery, the cloud native manager
相关推荐
Meshery项目核心逻辑概念解析:云原生管理平面的设计哲学
Meshery项目核心逻辑概念解析:云原生管理平面的设计哲学 作为云原生管理平面领域的创新项目,Meshery通过一系列精心设计的逻辑概念构建了其技术架构的基础
云原生微服务运维DevOpsKedro 架构全景解析:项目、框架、库与扩展如何协同支撑生产级数据管线
Kedro 架构全景解析:项目、框架、库与扩展如何协同支撑生产级数据管线 本篇文章以 docs/getting started/architecture_ove
数据工程工作流自动化为什么选择Materialette?5大理由让它成为设计师必备工具 🎨
为什么选择Materialette?5大理由让它成为设计师必备工具 🎨 Materialette是一款基于Google Material Design颜色体系
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考