ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Meshery 目录设计详解:ZooKeeper Cluster 有状态工作负载的 Design 文件结构与导入实践

Meshery 目录设计详解:ZooKeeper Cluster 有状态工作负载的 Design 文件结构与导入实践 云原生微服务运维DevOps【免费下载链接】mesheryMeshery, the cloud native manager项目地址https://gitcode.com/GitHub_Trending/me/meshery点击查看免费下载本篇以 Meshery 官方目录Catalog中的 workloads 条目 ZooKeeper Cluster 为样本完整拆解一个 Meshery 设计条目从目录元数据到 design.yml 文件内容的组织方式它如何声明一个 3 副本的 ZooKeeper StatefulSet、组件Component与层级关系Relationships如何配合完成配置拼装以及该设计的 5 条官方注意事项Caveats。读完后你可以看懂任意 Meshery 目录条目的结构并使用mesheryctl design import -f将该设计导入自己的 Meshery 实例。目录条目元数据patternId 是贯穿全链路的锚点该设计的目录入口文件是 ZooKeeper Cluster 条目它本身是一个 Hugo frontmatter 文档字段含义与目录模板 catalog 默认模板 一致。关键字段如下字段值作用nameZooKeeper Cluster目录中展示的设计名称typeworkloads条目分类决定其在 Catalog 中归入 Workloads 一类compatibilitykubernetes声明该设计仅适配 Kubernetes 集群patternIdfde9c2da-e402-4f53-b7cd-02036ac65043设计的全局唯一标识与docs/data/catalog/下的目录名一一对应publishedVersion0.0.1目录发布版本userName/createdAtMohd Uzair Shaikh / 2023-11-10T04:31:17Z作者与创建时间downloadLinkfde9c2da-e402-4f53-b7cd-02036ac65043/design.yml指向实际设计文件相对docs/data/catalog/permalinkcatalog/workloads/zookeeper-cluster-fde9c2da-....html站点内固定访问路径其中patternInfo是该设计的官方说明原文为 URL 编码解码后内容如下这个 StatefulSet 将创建三个 Pod每个 Pod 运行一个 ZooKeeper 服务端容器分别命名为 my-zookeeper-cluster-0、my-zookeeper-cluster-1 和 my-zookeeper-cluster-2。spec 中的 volumeMounts 部分指示 Pod 将 PersistentVolumeClaim my-zookeeper-cluster-pvc 挂载到 /zookeeper/data 目录从而保证 ZooKeeper 数据持久化并在重启后保留。patternCaveats则携带了 5 条使用注意事项后文完整展开。设计文件本体一个 3 副本 ZooKeeper StatefulSet目录条目引用的真实设计文件位于 design.yml。虽然扩展名是.yml但其实际内容是一份单行 JSON 设计文档顶层schemaVersion为designs.meshery.io/v1beta1name为 ZooKeeper Cluster。组件清单components从 design.yml 的组件数组看该设计由以下组件构成全部来自 kubernetes 模型bba54c44-.../kubernetes与 meshery-core 模型组件 displayName组件 kind说明defaultNamespace (v1)目标命名空间样式为虚线边框矩形元数据标记isNamespaced: true、genealogy: parentmy-zookeeper-clusterStatefulSet (apps/v1)设计主体核心配置全部集中在此组件pod template-ulePodTemplate (v1)携带 Pod 模板 spec 与标签pod-zvbPod (v1)携带完整容器/卷配置的 Pod 组件pod-bfvPod (v1)仅携带metadata.namespace: default的 Pod 组件container-lkxContainer (meshery-core)元数据标记isAnnotation: true的注解型组件StatefulSet 组件my-zookeeper-cluster的configuration字段是整份设计的核心。将其转换为等价的 Kubernetes YAML由 design.yml 中的configuration.spec/configuration.metadata还原供理解结构非文件中逐字存储的文本apiVersion: apps/v1 kind: StatefulSet metadata: name: my-zookeeper-cluster namespace: default spec: replicas: 3 # 与 patternInfo 中三个 Pod对应 selector: matchLabels: app: my-zookeeper-cluster template: metadata: labels: app: my-zookeeper-cluster spec: volumes: - name: zookeeper-data persistentVolumeClaim: claimName: my-zookeeper-cluster-pvc # 需要预先准备/动态供应的 PVC containers: - name: my-zookeeper image: bitnami/zookeeper:latest # 浮动标签生产环境建议锁定具体版本 ports: - containerPort: 2181 # ZooKeeper 客户端端口 volumeMounts: - name: zookeeper-data mountPath: /zookeeper/data # 数据目录重启后数据保留这与目录条目中patternInfo的描述逐点对应3 个副本生成my-zookeeper-cluster-0/1/2三个 PodPVCmy-zookeeper-cluster-pvc挂载到/zookeeper/data。PodTemplate 组件pod template-ule的configuration.template中保存了同一份卷/容器定义及app: my-zookeeper-cluster标签体现了 Meshery 设计中同一配置在多个组件上分别落盘、再通过关系关系拼装的组织方式。层级关系relationships配置如何拼装进 StatefulSetdesign.yml 的relationships数组全部是kind: hierarchical、type: parent的关系patchStrategy均为replace。从源码结构看这些关系声明了父组件的哪个字段被哪个子组件的哪个字段替换关键关系如下引用文件内组件 ID 前缀以便对照关系from → to父侧落点子侧来源子类型PodTemplate6df1333c…→ StatefulSeta74d57b1…configuration.spec.templateconfiguration.templateinventoryPod pod-zvb0745a66c…→ StatefulSetconfiguration.spec.template.specconfiguration.specaliasStatefulSet → Namespace defaultNamespacedisplayNameconfiguration.metadata.namespaceinventoryPod pod-bfvd6671ba5…→ NamespaceNamespacedisplayNameconfiguration.metadata.namespaceinventorymeshery-core Containera34d4b33…→ Pod pod-zvbconfiguration.spec.containers[0]同路径alias此外还有一条status: deleted的关系cc38e0be…Pod → StatefulSetspec.template.spec说明该设计经过迭代删除态关系也保留在文件中。这种组件存配置、关系定拼装的模型正是理解任意 Meshery 目录设计文件的钥匙单看某个组件可能只是片段只有结合 relationships 才能得到最终下发到集群的完整对象。组件能力capabilitiesdesign.yml 中每个组件都携带一组capabilitiesschemaVersion: capability.meshery.io/v1alpha1版本 0.7.0包括Performance Test发起性能测试、Workload Configuration、Labels and Annotations Configuration、Relationships查看关系、Json Schema查看组件定义、Styling、Change Shape、Compound Drag And Drop拖拽组件进父组件。这些能力决定了在 Meshery UI 画布上选中该组件后可以执行哪些操作。patternCaveats官方注意事项逐条解读目录条目patternCaveats中的 5 条注意事项artifacthub 包文件 的readme字段以相同内容收录是该设计的正式交付内容逐条说明如下存储必须先行准备每个 Pod 的存储要么由 PersistentVolume Provisioner 根据请求的 StorageClass 动态供应要么由管理员预先配置。也就是说导入本设计后直接 apply若集群没有匹配的 PVC 供应能力my-zookeeper-cluster-pvc会一直处于 Pending。缩容/删除不会回收卷删除或缩容 StatefulSet 不会删除关联的 Volume。这是刻意为之——数据安全性通常比自动清理更有价值。需要 Headless Service 承载网络身份StatefulSet 要求一个 Headless Service 负责 Pod 的网络身份稳定的 DNS 命名。本设计文件不包含该 Service作者明确将创建责任交给使用者。删除时无有序终止保证StatefulSet 被删除时不保证 Pod 有序终止若需要有序、优雅地终止建议先把 StatefulSet 缩容到 0再删除资源。滚动更新可能进入坏状态在默认 Pod Management PolicyOrderedReady下使用 Rolling Updates 时可能陷入需要人工介入修复的中间状态。包元数据与导入方式artifacthub-pkg.yml 是该设计的包清单name: zookeeper-cluster、displayName: ZooKeeper Cluster、version: 0.0.1、license: Apache-2.0、createdAt: 2023-11-10T04:31:17Z其description与readme分别对应目录条目中的patternInfo与patternCaveats。最关键的一行是安装指引install: mesheryctl design import -f即通过 mesheryctl 的 design 子命令导入。该命令在仓库中的实现入口是 import.gomesheryctl design import对应的端到端用例见 01-design-import.bats。典型用法是mesheryctl design import -f 设计文件路径将-f指向 design.yml或从 Meshery 目录下载的等价文件即可完成导入导入后该设计会出现在 Meshery 的画布中组件与关系按上文所述结构呈现。使用前提与限制适用范围目录条目compatibility仅声明kubernetes该设计面向 Kubernetes 集群不适用于其他服务网格/编排目标。PVC 前置依赖设计引用了固定名称my-zookeeper-cluster-pvc导入并部署前必须确认集群能按目标 StorageClass 供应该 PVC或预先创建好同名 PVC。镜像标签设计中容器镜像为bitnami/zookeeper:latest属浮动标签从可复现性角度生产使用建议先评估并固定到具体版本。版本口径目录条目publishedVersion为 0.0.1与docs/data/catalog/.../0.0.1/目录一致而 design.yml 内部version字段为 0.0.157可理解为设计在画布上的迭代版本计数引用该设计时以目录条目版本号为准。集群上下文design.yml 的注册元数据中保留了作者当时所连集群的上下文集群名、Kubernetes 版本 v1.29.3 等从源码结构看这属于设计生成时的溯源信息不代表该设计对目标集群版本有硬性要求。小结ZooKeeper Cluster 是理解 Meshery 目录工作负载条目的完整样本目录 frontmatter条目文件负责展示元数据docs/data/catalog/patternId/version/下的 design.yml 负责以designs.meshery.io/v1beta1结构存储组件与层级关系artifacthub-pkg.yml 负责打包分发。掌握组件存配置、关系定拼装、Caveats 划边界这一结构后你可以按同样方式阅读乃至编写其他 Meshery 目录设计并用mesheryctl design import -f导入验证。赞分享云原生微服务运维DevOps【免费下载链接】mesheryMeshery, the cloud native manager项目地址https://gitcode.com/GitHub_Trending/me/meshery点击查看免费下载相关推荐Meshery 设计目录实战解构并导入一个 Kubernetes ReplicationController 工作负载设计Meshery 设计目录实战解构并导入一个 Kubernetes ReplicationController 工作负载设计 本文围绕 Meshery 设计目录云原生微服务运维DevOps解读 Meshery Catalog 中的 Terraform 架构设计Architectural-Design-Terraform 设计文件剖析与导入实战解读 Meshery Catalog 中的 Terraform 架构设计Architectural Design Terraform 设计文件剖析与导入实战云原生微服务运维DevOpsMeshery 目录详解Kubeflow Katib 部署模式katib-2.4.2设计文件的结构与实操解析Meshery 目录详解Kubeflow Katib 部署模式katib 2.4.2设计文件的结构与实操解析 本文以 Meshery 官方文档站目录中的部云原生微服务运维DevOps上一篇在电脑上畅玩任天堂3DS游戏Citra模拟器完整使用指南下一篇MCP Python SDK 客户端订阅实战用 client.listen 流式监听工具与资源变更创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表