开发工具云原生CLI【免费下载链接】mirrordRun any process, on your machine or in an AI agents environment, as if it were a pod in your Kubernetes cluster: real env vars, DNS, network, traffic.项目地址https://gitcode.com/gh_mirrors/mi/mirrord点击查看免费下载Multi-cluster mirrord 让开发者无需切换 kube context、无需维护多个会话就能在同一个mirrord exec会话中拦截多个 Kubernetes 集群中同一目标 Pod 的流量。本文以官方文档 Seamless Multi-Cluster Development 为主体结合仓库中 CLI 与 operator 客户端的源码mirrord/cli/src/connection.rs、mirrord/operator/src/client.rs、mirrord/operator/src/crd.rs完整讲解其集群角色、操作路由、会话生命周期以及数据库分支、队列拆分、预览环境在多集群模式下的行为差异。什么是多集群 mirrord在多集群模式下mirrord 会同时拦截运行在多个 Kubernetes 集群中的 Pod 的流量。开发者侧的体验与单集群完全一致照常运行mirrord exec、使用同一份配置文件、走同一套工作流operator 在幕后完成跨集群的协调。典型适用场景多区域流量测试你的服务同时接收us-east-1、eu-west-1等多个区域的流量希望用本地改动一次性验证所有区域的真实流量而不是为每个集群分别跑一个 mirrord 会话。集中式访问Centralized access组织要求开发者只通过一个管理集群management cluster接入不直接访问工作负载集群。此时需要 mirrord 从被批准的入口点出发协调多个共享同一目标的工作负载集群间的流量拦截。跨集群的共享环境staging 环境横跨多个集群希望在单一会话中拦截其中所有集群的流量。该能力在文档中标注为alpha与enterprise特性特性成熟度可参考 Feature Support Matrix其中 Multi-cluster 一栏当前标注为Alpha。工作原理Primary 集群协调多个 Workload 集群单集群 mirrord 中CLI 连接到一个 operatoroperator 创建一个 agent 来拦截流量。多集群模式则引入两种集群角色Primary主集群负责跨会话协调Workload工作集群实际运行应用 Pod。流程如下开发者连接到 Primary 集群 → Primary operator 在每个 workload 集群上创建子会话child session→ 每个 workload 集群的 operator 在本地拉起 agent → 所有集群的流量汇聚回开发者本地应用的一条连接上。从源码结构看CLI 侧决定“走多集群还是单集群”的逻辑在 mirrord/cli/src/connection.rs只有当连接到的 operator 在supported_features中声明了MultiClusterPrimary能力、配置项multi_cluster未被显式设为false、且目标不是 label 目标时才会走多集群路径。相关的能力枚举定义在 mirrord/operator/src/crd.rs/// This operator can act as a primary and use envoy to connect to remote clusters. MultiClusterPrimary, /// This operator can be connected to by a primary. MultiClusterRemote,即“是否进入多集群模式”由 operator 的安装配置和能力声明决定开发者无需感知。如果你确实希望在 Primary 集群上只跑一个普通单集群会话可以通过配置项multi_cluster环境变量MIRRORD_MULTI_CLUSTER显式关闭其定义见 mirrord/config/src/lib.rs/// Controls multi-cluster session behavior when connecting to a multi-cluster Primary /// operator. When set to false, forces a single-cluster session on the Primary cluster /// instead of creating a multi-cluster session that spans all workload clusters. /// When true or unset, multi-cluster sessions are used when the operator supports them. #[config(env MIRRORD_MULTI_CLUSTER, plan Enterprise)] pub multi_cluster: Optionbool,集群角色详解多集群部署中的每个集群承担一个或多个角色同一集群可以同时拥有多个角色例如 Primary Workload Default。角色职责数量Primary开发者入口点。跨所有其他集群编排会话。恰好一个Workload运行应用 Pod。Agent 在这里拦截流量。一个或多个Default处理有状态操作环境变量、文件、DNS、出站连接、数据库分支等。恰好一个Primary 集群Primary 集群是开发者的入口。运行mirrord exec时CLI 与 Primary 集群的 operator 通信由 Primary 编排所有其他集群上的会话。Primary 既可以同时运行工作负载既当协调者又当 workload 集群也可以在它上面没有应用 Pod 时配置为纯管理模式management-only。Workload 集群Workload 集群是应用 Pod 实际运行的地方。每个 workload 集群有自己独立的 mirrord operator负责本地拉起 agent 和处理流量拦截——行为与单集群 mirrord 完全相同。Default 集群有些操作必须返回一致的数据例如环境变量、文件读取、出站连接和数据库分支这类操作被称为“有状态操作stateful operations”。Default 集群是唯一被指定处理所有这些操作的集群。举例来说当本地应用读取DATABASE_URL时请求只会发往 Default 集群得到唯一答案而不是不同集群给出不同答案。而流量类操作mirror/steal仍然发往所有 workload 集群。Default 集群在 Primary 集群的 operator 设置中指定。任意 workload 集群都可以被设为 Default包括 Primary 自身前提是它也是 workload 集群。Management-Only 模式如果 Primary 集群只负责编排、不运行任何应用工作负载将其设置为管理模式managementOnly: true。此时必须指定另一个集群作为 Default——因为没有应用 Pod 的集群无法执行有状态操作。操作如何被路由会话期间Primary operator 按操作类型逐一分发路由需要唯一一致答案的操作发往 Default 集群依赖流量落点流量落在哪个集群的操作发往每一个 workload 集群。操作路由目标入站流量mirror / steal所有workload 集群环境变量仅 Default 集群文件操作仅 Default 集群DNS 解析仅 Default 集群出站流量TCP / UDP仅 Default 集群数据库分支仅 Default 集群分支只创建一次队列拆分所有workload 集群——每个集群在本地过滤消息来自所有集群的响应会被合并进回本地应用的那一条连接中因此无论请求或消息落在哪个集群都会以相同方式抵达本地进程。从源码结构看CLI 在多集群路径下不会像单集群那样在本地解析目标mirrord/operator/src/client.rs 中prepare_multi_cluster_session的文档注释明确说明多集群模式下 CLI 直接把目标配置交给 operator“operator handles target resolution on the appropriate cluster”operator 在合适的集群上解析目标因此 CLI 会跳过assert_valid_mirrord_target等本地校验步骤。访问控制多集群模式下用户只需要能访问Primary 集群上的 operator API。Primary operator 使用它自己的凭证连接下游集群用户在下游集群上不需要任何 RBAC。单集群中的 per-target 权限检查在多集群模式不适用——只要用户能够触达 Primary operator就能指定任意已连接集群上的工作负载作为目标。如需按目标限制用户可执行的操作请在每个集群上使用 MirrordPolicy 资源。注意能访问 Primary operator API 就意味着可以指定所有已连接集群上的工作负载。请使用MirrordPolicy按目标限制可执行的操作。会话生命周期开发者运行mirrord execCLI 连接 Primary 集群创建一个父会话Primary operator 在每个 workload 集群上创建子会话。对每个 workload 集群而言子会话与普通的单集群会话毫无区别operator 解析目标、拉起 agent、处理流量拦截所有子会话就绪后CLI 与 Primary 集群建立统一的 WebSocket 连接后续消息按操作类型自动路由见操作路由。在源码中多集群会话的创建与连接由 mirrord/operator/src/client.rs 的connect_in_multi_cluster_session完成它先调用prepare_multi_cluster_session建会话再建立会话连接最终返回OperatorSessionConnection。Primary 侧的MirrordOperator状态中还会暴露跨集群的会话与集群健康信息对应 mirrord/operator/src/crd.rs 中的两个状态字段/// Status of connected remote clusters (only on primary with multi-cluster enabled). pub connected_clusters: OptionVecConnectedClusterStatus, /// Active multi-cluster sessions (only on primary with multi-cluster enabled). pub multi_cluster_sessions: OptionVecMultiClusterSessionInfo,其中MultiClusterSessionInfo记录了会话 ID、目标、命名空间、会话跨度的集群列表clusters: VecString和当前阶段——这些正是mirrord operator status展示多集群会话信息的来源。多集群下的数据库分支数据库分支Database branching在多集群模式下对开发者行为不变但内部可能在不同的集群上执行开发者连接的是 Primary 集群但分支在 Default 集群上创建。若 Primary 不是 Default 集群Primary 上会运行一个同步控制器DbBranchSyncController把分支资源镜像mirror到 Default 集群并把分支状态同步回 Primary。CLI 等待分支就绪后通过连接参数传递分支名来创建会话——流程与单集群相同。若 Primary 同时就是 Default 集群则无需同步分支控制器直接在 Primary 本地运行流程与单集群行为完全一致。源码印证mirrord/operator/src/client.rs 中创建多集群会话时对分支 CRD 的注释与文档描述一致// Create branch CRDs on the cluster CLI has access to: // - Single-cluster: CRDs created directly on target cluster, branching happens on the entry // cluster. // - Multi-cluster: CRDs created on primary cluster. If Primary Default, branching // happens locally. If Primary ! Default, a sync controller copies CRDs to Default where // actual branching happens, then syncs status back.多集群下的队列拆分Queue Splitting队列拆分在多集群模式下对所有受支持的队列服务可用——Amazon SQS、Kafka、RabbitMQ、Google Cloud Pub/Sub、Azure Service Bus、Redis Pub/Sub、Temporal 和 BullMQ。一个会话甚至可以在所有集群上同时拆分多个队列服务具体成熟度见 Feature Support Matrix。流程与单集群相同且在每个集群上分别应用一份配置同步到所有集群只需在Primary 集群上创建MirrordSplitConfig以及任何MirrordPropertyList客户端配置operator 会自动把它们同步到所有 Workload 集群。一份过滤器处处生效使用feature.split_queues启动会话时Primary 会把消息过滤器推送到每个子会话确保所有集群应用完全相同的过滤器。消息在落点集群就地过滤每个集群的 operator 像单集群一样在本地拆分队列——把已部署工作负载 patch 为从临时队列读取并对每条入站消息求值过滤器。命中者进入会话其余照常匹配过滤器的消息被路由到你的本地应用或预览环境读取的临时会话队列不匹配的消息继续流向已部署的消费者不受影响。关键性质消息不会跨集群传输来“找”你。消息落在哪个集群就由那个集群的 operator 捕获并路由到你的会话。提示请在Primary 集群上创建MirrordSplitConfig资源operator 会自动同步到所有 Workload 集群无需在每个集群手动创建。注意每个 Workload 集群需要各自持有队列服务的凭证例如带 SQS 权限的 AWS 凭证。这与多集群的鉴权方式相互独立——即使某集群通过 bearer token 接入其 operator 仍需队列服务凭证来创建临时队列。要监控所有集群上的活跃拆分在 Primary 集群上运行mirrord queues status -A或kubectl get queuesplits -A——Primary operator 会聚合所有已连接集群的视图远程集群上的 split 也会一并显示。分服务细节大多数服务在行为上完全一致只有临时资源创建位置上的细微差别Amazon SQS见 sqs.md每个 Workload 集群各自创建自己的临时队列并在本地 patch 目标工作负载。会话队列名在集群之间共享因此每个集群命中的消息都能到达你的会话。GCP Pub/Sub见 gcp-pubsub.md每个 Workload 集群各自创建自己的 fallback topic 与 subscription供已部署工作负载读取。每会话的 topic 和 subscription 只在 Default 集群上创建一次其名称共享给其他集群复用。多集群下的预览环境Preview Environmentsoperator.multiCluster.preview.mode决定预览环境的 Pod 运行在哪里default-cluster默认replicas预览 Pod 运行位置Default 集群每个 workload 集群HTTP 从哪触达预览仅 Default 集群所有集群队列消息从哪触达预览所有集群所有集群其余行为在两种模式下相同。使用replicas时每个集群各自服务并独立 idle 自己的流量且所有副本共享一个分支数据库——任何集群的写入对所有副本可见且没有任何数据落到源数据库。其他集群上的副本通过 operator 之间的隧道访问分支数据库该隧道由 Primary 发起。Workload 集群不需要到 Default 集群的网络路由集群凭证也永远不会出现在你的命名空间里。选择建议当预览流量经由横跨多个集群的负载均衡器进入或希望预览在某个集群故障时依然存活时使用replicas当流量本来就只从单一集群进入share links、steered 请求或队列拆分是主要功能时两种模式下其覆盖面完全相同保持默认的default-cluster即可。具体配置步骤见 Multi-Cluster Setup 中的Preview Environment Replicas一节。限制Targetless 模式在多集群会话中不受支持——必须有明确的目标operator 才能在每个 Workload 集群上解析它。多集群会话仅在连接到 Primary 集群时启动。直接连接下游集群只会在那个集群上启动一个普通的单集群会话。per-target 的 RBAC 检查不适用见访问控制请使用 MirrordPolicy 按目标限制操作。此外从源码可以看到更多约束mirrord/config/src/lib.rs 中的配置校验表明label 目标Target::Label也不支持多集群会话——CLI 会直接报错并提示设置multi_cluster false只在 Primary 集群上使用。后续步骤部署配置完整的搭建步骤各集群安装 operator、鉴权方式bearerToken/eks/aks/mtls、Helm values、RBAC、连接验证见 Multi-Cluster Setup 指南。验证连通性时可执行kubectl get mirrordoperators operator -o yaml并检查status.connected_clusters中每个集群是否带license_fingerprint与operator_version。功能成熟度各功能在多集群模式下的支持程度见 Feature Support Matrix。赞分享开发工具云原生CLI【免费下载链接】mirrordRun any process, on your machine or in an AI agents environment, as if it were a pod in your Kubernetes cluster: real env vars, DNS, network, traffic.项目地址https://gitcode.com/gh_mirrors/mi/mirrord点击查看免费下载相关推荐mirrord 多集群管理指南同时连接多个云环境的技巧mirrord 是一个革命性的开发工具它能让开发者在本地环境中无缝连接并操作多个云集群实现真正的多集群管理。通过流量重定向技术你可以让本地代码在云端环境中开发工具云原生CLI如何在 5 分钟跑通 Open Interpreter终端自然语言编程的完整指南如何在 5 分钟跑通 Open Interpreter终端自然语言编程的完整指南 Open Interpreter 是一个开源的 AI 代码解释器codin人工智能大模型AI Agent代码智能体AI 应用CLIEclipse Che多集群管理跨多个Kubernetes集群的开发环境终极指南Eclipse Che多集群管理跨多个Kubernetes集群的开发环境终极指南 Eclipse Che是一个基于Kubernetes的云原生开发环境平台为开发工具云原生上一篇免费文档下载脚本 kill-doc批量把百度文库、道客巴巴等33个平台的文档存成PDF或图片下一篇不写一行代码三分钟把整条抖音评论区变成 Excel——TikTokCommentScraper 上手指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考