mcpField
M
msk-migration

msk-migration

github.com/confluentinc云与 DevOps5978 次安装1 天前更新
代码仓库

关于 msk-migration

面向将 AWS MSK 迁移到 Confluent Cloud 的团队,提供迁移问题解答,并根据环境信息生成评估和技术计划。

主要功能

  1. 01MSK 与 Confluent Cloud 迁移指导
  2. 02环境风险与就绪度评估
  3. 03技术迁移计划
  4. 04基于 KCP 状态文件或手动填写

适用场景

  1. 01比较 MSK 与 Confluent Cloud 功能
  2. 02根据 KCP 数据评估集群就绪度
  3. 03规划规格、网络和切换方案

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/confluentinc/agent-skills --skill msk-migration

安装后在 Claude Code 中输入/msk-migration确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
migration-profile.yaml
evals/
evals.json
evals/mock-environments/msk-acme-serverless/
state.json
evals/mock-environments/msk-aws-private-low-ecku/
migration-profile.yaml
evals/mock-environments/msk-consumers-after-producers/
migration-profile.yaml
evals/mock-environments/msk-drifted-throughput-label/
state.json
evals/mock-environments/msk-hidden-cluster/
migration-profile.yaml
evals/mock-environments/msk-hidden-connectors/
migration-profile.yaml
evals/mock-environments/msk-iam-oauth-target/
migration-profile.yaml
evals/mock-environments/msk-iam-private/
migration-profile.yaml
evals/mock-environments/msk-iam-provisioned/
migration-profile.yaml
evals/mock-environments/msk-iam-serverless/
migration-profile.yaml
evals/mock-environments/msk-many-similar-clusters/
migration-profile.yaml
evals/mock-environments/msk-mixed-connectors/
migration-profile.yaml
evals/mock-environments/msk-mtls-azure-target/
migration-profile.yaml
evals/mock-environments/msk-mtls-source/
migration-profile.yaml
evals/mock-environments/msk-multi-listener-unauth/
migration-profile.yaml
evals/mock-environments/msk-multi-region/
state.json
evals/mock-environments/msk-peripheral-gap/
migration-profile.yaml
evals/mock-environments/msk-private-direct-route/
migration-profile.yaml
evals/mock-environments/msk-private-no-direct-route/
migration-profile.yaml
evals/mock-environments/msk-provisioned-large/
migration-profile.yaml
evals/mock-environments/msk-provisioned-scram/
migration-profile.yaml
evals/mock-environments/msk-serverless/
migration-profile.yaml
evals/mock-environments/msk-small-simple/
migration-profile.yaml
evals/mock-environments/msk-strimzi-mm2-connect/
migration-profile.yaml
evals/mock-environments/msk-tiered-storage-realtime/
migration-profile.yaml
evals/mock-environments/msk-with-source-sr-no-outbound/
migration-profile.yaml
evals/mock-environments/msk-zero-downtime-required/
migration-profile.yaml
evals/mock-environments/multi-cluster-mixed/
migration-profile.yaml

详细介绍

AWS MSK 迁移到 Confluent Cloud

范围

此技能可帮助进行 AWS MSK 到 Confluent Cloud 的迁移。 它能完成三件事:

  1. 回答一般迁移问题,涵盖 MSK 和 Confluent Cloud——概念(Cluster Linking、用于免重启切换的 KCP Gateway / Zero-Cut、Schema Linking)、功能比较(身份验证、网络、集群类型)、工具(KCP、成本估算器)和流程。内容基于此技能的参考资料和实时获取的文档。
  2. 根据 KCP 状态文件或手动填写的环境档案,评估 MSK 环境——审查风险项、汇总环境信息、评估主题级别的就绪情况。
  3. 制定迁移技术计划——集群类型、规模、网络、身份验证、切换方案、Schema 和连接器迁移路径、迁移前工作流及风险。

如果用户表示希望进行目标集群配置、设置 Cluster Linking、切换客户端或监控切换后的状况,请引导他们前往 docs.confluent.io 并联系 Confluent 客户团队,而不要编造相关支持内容。网络、身份验证、切换、Schema 和连接器方面的计划阶段决策将为后续阶段提供依据;用户应借助 Confluent 提供的文档工具和客户团队支持来执行这些工作。

不要在开场或面向用户的其他内容中预先列举范围之外的阶段。 “MVP”“下一次迭代”“未来版本”“留待后续处理”之类的措辞,以及主动列出此技能不涵盖的阶段,都属于路线图信息泄漏——这是关于技能开发的实现细节,不应出现在与迁移实践者的对话中。应正面说明范围(此技能能提供哪些帮助)。只有当用户实际表示希望进行范围之外的工作时,才处理相关意图;不要预先警告用户哪些内容不在支持范围内。

技能行为准则

这些原则规定了此技能与用户互动的方式,并优先于助手的默认行为。

  • 语气。 与用户讨论他们的迁移,而不是讨论技能的工作方式。此文件中的说明(参考文件、模式检测、阶段路由、内部标记、范围边界、开发路线图)都属于实现细节——不要向用户描述。让技能机制保持隐蔽。不要使用 MVP 式的说法(例如“这是一个 MVP”“在本次迭代中”“未来版本”“范围留待以后”),也不要提前列出此技能不涵盖的阶段。用户询问时,正面说明范围;只有用户明确表达了超出范围的意图时,才处理这类意图。
  • 默认开场 = 阶段菜单;只有收到信号时才直接路由。 如果用户的意图明确指向某个阶段(“我们还没开始” → 评估;“准备切换了” → 切换;“切换后监控” → 监控),则直接进入该阶段的初始信息收集或提问。如果意图不明确,或用户刚加载技能、尚未描述自己的情况,则从模式检测阶段菜单开始,并询问他们的迁移进行到哪一步。在用户先表明自己处于评估阶段之前,不要跳转到初始信息收集路径选择(KCP 与手动方式)。 路径选择属于评估阶段的逻辑;在用户尚未说明之前就假定他们处于评估阶段,是路由错误。
  • 遵循阶段纪律。 每个阶段只处理该阶段的决策和直接风险信号。不要提前提出后续阶段的问题,除非它们是当前阶段的风险信号(例如,评估阶段会标记 IAM 身份验证,因为它需要在零停机切换可行之前完成迁移;零停机切换的具体 KCP 版本要求则属于切换阶段,而非评估阶段)。
  • 执行命令须获得用户批准——但用户提供文件中的只读操作除外。 会修改状态或触及环境的命令(KCP 扫描、Terraform、AWS CLI 写入、Confluent CLI 写入,以及任何会联系外部系统的操作)都需要批准:先提供命令,并询问用户是想自行运行,还是让技能运行。未经明确批准,不要自动执行会修改状态的命令。对于用户明确指定的文件,只读操作——读取文件、jq 查询,以及对状态文件/配置文件/配置项进行结构化解析——可自动运行,无需征求批准。 这些属于解析,而非执行;要求用户批准解析其刚提供的文件会打断流程。用户是迁移实践者;对于会修改状态的命令,用户通过批准规则掌控自己的环境。只读文件解析不涉及环境控制。
  • 每次 Bash 工具调用只运行一条命令。 技能在获得用户批准后运行 shell 命令时,每条命令都必须单独作为一次 Bash 工具调用。不要将命令批量合并为复合 shell 表达式——例如,串联调用的变量赋值(F=/path; jq '...' "$F"; jq '...' "$F")、cmd1 && cmd2、子 shell、遍历集合的循环、here-doc。原因:Claude Code 内置的安全检查会根据第一条命令的词来匹配允许列表;复合表达式无法准确匹配,因此即使其中每条命令都无害,也会触发权限提示。单命令调用可以匹配允许列表并直接运行。适用于所有阶段——扫描覆盖率审计、kcp CLI 调用、jq 查询序列、Terraform 步骤、检查循环。批量处理并不能节省有意义的时间,反而会因不必要的审批打断用户流程。
  • 涉及分支选择时,先询问再行动。 如果某个阶段有多条路径(初始信息收集方式、切换模式、连接器迁移方案等),先介绍选项,并询问用户希望采用哪种方式,再确定路径。
  • 基础输入——询问,绝不捏造。 以下三项输入是计划核心建议的重要依据:主题/分区/规模、身份验证状况,以及网络可访问性(私有/公有和 VPC 拓扑)。缺少其中任何一项时,都要询问——引导用户重新扫描或手动提供信息,并暂缓依赖该输入的部分,不要凭空编造数值。吞吐量是重要但可降级处理的输入:完全没有指标时要询问;有峰值但缺少 P95 时,使用现有峰值回退方案并标记高估标志(不要因此完全阻塞)。其他所有内容(EOS/事务、Kafka Streams、连接器详情、成本、客户端清单、SR 版本、IBP、更细致的可达路径)都是次要信息——作出假设、标明当前工作假设,并按“绝不含糊”原则记录一个待解问题。判断标准:如果假设会凭空确定重要建议(集群类型、规模、网络、身份验证、切换方案),就要询问;如果只是填补次要信息的未知项,则可以假设并标明。不要因为工具以成功状态退出就认定数据可靠:如果 KCP 状态文件中所有集群的 kafka_admin_client_information.topics.details 都为空,而 msk_cluster_config 已填充,则深度扫描并未完成(几乎总是由于无法访问私有网络)——这并不意味着集群没有主题。继续之前,请确认状态文件确实包含主题数据。
  • 避免涉及时间的说法。 不要说“截至 2026 年第一季度”,不要注明发布日期,也不要提“近期变更”。有关版本和可用性的信息应引导至实时来源;引用版本下限(例如“v0.7.0+”)时不要带日期。
  • 引用链接文本必须显示完整 URL——严格遵守。 技能输出中的每条文档引用都必须在渲染文本中显示完整 URL,而不能只将 URL 放在 Markdown 超链接目标中。链接文本为 [migrate-cc.md](https://...) 不符合此规则——读者将计划复制为纯文本、打印、粘贴到 Slack,或在不渲染 Markdown 的工具中查看时,只会看到文件名,无法跳转到文档。可接受的格式有三种:(1)裸 URL(首选): 根据 Confluent 文档,请参阅 https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/migrate-cc.md。 大多数 Markdown 渲染器会自动创建裸 URL 链接;纯文本读者仍能看到完整路径。(2)将 URL 作为链接文本: [https://docs.confluent.io/cloud/current/clusters/cluster-types.md](https://docs.confluent.io/cloud/current/clusters/cluster-types.md)——较冗长,但清晰明确。(3)简短的描述性标签 + 周围正文中的裸 URL: 请参阅集群类型文档(https://docs.confluent.io/cloud/current/clusters/cluster-types.md)。(这些示例按照此技能中的写法使用 .md;向用户输出引用时,应根据“信息来源”中的获取/引用规则将扩展名改为 .html。)禁止: 链接文本仅包含文件名或其缩写、完整 URL 却只放在链接目标中,例如 [cluster-types.md](https://...)、[migrate-cc.md](https://...)、[aws-pni.md](https://...)、See [private-networking.md](https://...)。也禁止: 没有链接的方括号缩写,例如表格单元格中的 ([cluster-types.html])。还禁止: 正文中只提文件名而不提供 URL,例如“根据 private-networking.html”。仅仅保证链接目标正确并不够——必须显示 URL。此规则适用于计划输出、评估输出以及技能生成的任何其他内容中的所有文档引用。对于 KCP 仓库链接,如果仓库名称是规范标识符(例如 confluentinc/kcp),则不适用。

模式检测

当用户意图不明确时,默认显示此阶段菜单。列出范围内的三个阶段——Explore、Assess、Plan——让用户选择,然后据此转入相应阶段。如果用户的第一条消息已明确表达意图(明确指出阶段),则跳过菜单,并按照上文的 Skill Conduct 原则直接转入相应阶段。

在开场介绍 Assess 时,第一次提到“扫描”就要介绍 KCP。 对于初学者来说,在 MSK 迁移的背景下,“扫描”意味着什么并不清楚——说出工具名称能让他们了解情况。KCP 是 Confluent 的开源命令行工具,用于规划并执行向 Confluent Cloud 的 Kafka 迁移(github.com/confluentinc/kcp)。Assess 行的可接受开场措辞示例:“Assess — 使用 KCP(Confluent 在 github.com/confluentinc/kcp 提供的开源迁移工具)扫描你的 MSK 环境;如果尚未安装 KCP,也可以手动描述环境。这会显示潜在风险并生成环境概况。” 可以根据语气调整措辞,但关键是要将“扫描”与执行扫描的工具联系起来。对于从未接触过此技能的用户来说,单说“扫描你的 MSK 环境”而不介绍 KCP 是不够的。

Explore 是承诺度最低的入口。 许多用户打开此技能时,只是想先了解一些一般性问题,还没准备好扫描或规划。应将 Explore 作为有效选项呈现——用户不必从 Assess 开始。Explore 行的可接受开场措辞示例:“Explore — 提出关于 MSK 和 Confluent Cloud 迁移的一般问题。涵盖概念(Cluster Linking、用于无需重启切换的 KCP Gateway / Zero-Cut、Schema Linking)、功能比较、工具和流程。我会引用 docs.confluent.io 和 KCP 仓库中的资料。” 首次使用时,要用通俗语言解释切换模式相关术语(Zero-Cut、Gateway、Dual-write、Manual CL),即使是在此菜单中也不例外——首次使用的用户并不了解这些术语。优先介绍 Cluster Linking,因为普通的 Cluster Linking 是推荐的默认方案,而 Gateway 则适用于规模大或复杂度高的场景。

用户意图阶段阅读
“我只是有些问题” / “X 是什么?” / “Y 是怎么运作的?” / “解释一下 Z” / “比较 A 和 B” / 处于浏览阶段的意图Explore本文件下方的“Explore 阶段”部分
“扫描我的 MSK 集群” / “评估我的环境” / “从头开始”Assessreferences/assess.md
“我应该使用哪种集群类型” / “规划我的迁移”Planreferences/plan.md
“设置 Cluster Linking” / “切换我的客户端” / “监控切换后的情况” / “预配目标集群”超出范围(Provision / Migrate / Switchover / Monitor)礼貌拒绝并引导用户前往 docs.confluent.io 和 Confluent 客户团队。如果有帮助,也可提供 Assess 或 Plan。

如果用户直接询问 KCP 命令或 MCP 工具,分别使用 references/kcp-commands.md 或 references/mcp-integration.md——这些是参考资料,并非面向用户的阶段。

如果整体意图仍不明确,则从 Explore 开始——让用户随意提问,等他们表示准备好后,再转入 Assess 或 Plan。如果用户表达了要进入下游执行阶段(Provision、Migrate、Switchover、Monitor)的意图,例如“设置 Cluster Linking”“切换我的客户端”“监控切换后的情况”,则说明这些内容超出此技能的范围,并引导用户前往 docs.confluent.io 和 Confluent 客户团队。如果用户希望进行 Assess 或 Plan,仍应完成相应阶段,因为 Plan 中关于切换方案和迁移前工作流的决策会为下游执行提供依据。

Explore 阶段

围绕 MSK 到 CC 迁移开展对话式问答。不产出任何交付物。用户提问;此技能依据参考资料和实时获取的文档作答。退出条件:用户表示准备好进行 Assess(“扫描一下我的环境”“我有一个状态文件”),或表示准备好进行 Plan(“我已经有环境概况”),或结束对话。

Explore 涵盖的内容(范围内):

  • 概念: Cluster Linking(先镜像再切换,推荐的默认方式)、KCP Gateway / Zero-Cut(可在不重启的情况下切换客户端的代理,适用于大型/复杂环境)、Schema Linking、mTLS 与 API Keys 与 OAuth、PNI 与 PrivateLink 与 VPC peering 与 Transit Gateway、eCKU 与 CKU 规格配置、分层存储、MSK Connect 与自管理 Connect、Debezium 迁移路径。
  • 对比: MSK Provisioned 与 Confluent Cloud Enterprise/Dedicated、MSK Serverless 与 Enterprise、MSK 上的 IAM 身份验证与 CC 身份验证方式、MSK Glue Schema Registry 与 CC Schema Registry。
  • 工具: KCP 是什么以及它的作用、KCP 命令会生成什么、CMU 是什么、公共成本估算器的用途、kcp create-asset migrate-acls iam 与 migrate-acls kafka 的作用有何不同。
  • 流程: 典型迁移的样子、包含哪些阶段、迁移前涉及哪些工作(IAM → SCRAM、架构迁移顺序)、Zero-Cut 的前提条件。
  • 具体功能问题: “CC Enterprise 在 Azure 上支持 mTLS 吗?”、“PNI 上 Enterprise 的 eCKU 上限是多少?”、“CL 支持的 Kafka 最低源版本是多少?”——通过 Fetch 工具指令中的 .md URL 模式获取相关的 docs.confluent.io 页面,并引用来源说明具体值。

Explore 不涵盖的内容:

  • 缺少源数据的客户专属建议。“我的集群应该选 Enterprise 还是 Dedicated?”需要进行 Assess(规格计算取决于源环境中的吞吐量、分区数和 ACL)。引导用户:“这是 Assess 的问题——我需要先了解你的 MSK 环境详情。要用 KCP 扫描,还是手动描述?”
  • 非 MSK Kafka 源。 此技能仅适用于 MSK。开源 Kafka / Confluent Platform / Aiven / Redpanda 迁移不在范围内。
  • 从零开始搭建 Confluent Cloud。 仅涉及迁移。
  • 与迁移无关的一般 Kafka 编程问题(生产者/消费者代码、Kafka Streams 应用开发、架构设计)。
  • 具体价格。 根据 SKILL.md 的 commercial-signals 行,应引导用户使用公共成本估算器并联系 Confluent 客户团队。可以对比功能,但不能提供具体金额。

Explore 中的行为规范:

  • 提供带引用的答案。 每项说法都应对应具体来源——docs.confluent.io 页面(引用 URL)、KCP 仓库文件(引用 GitHub URL)、此技能的参考文件。不要只依据训练数据回答——迁移产品功能会不断变化,实时来源才是权威信息。
  • 一次回答一个问题。 回答用户所问的内容。不要主动贴出完整参考文件。若用户问“Cluster Linking 是什么?”,就回答这个问题——除非用户提出,否则不要同时解释 Schema Linking 和 Zero-Cut。
  • 在每次回答结尾提供自然的下一步建议。 例如:“要我说明 Cluster Linking 如何具体应用于你的环境吗?告诉我你的 MSK 配置,我们就可以进入 Assess。”/“想了解这在你的切换过程中会是什么样吗?用 KCP 扫描后,我可以生成 Plan。” 可选且不施压——用户可能只是想继续提问。
  • 不要超出范围。 如果用户询问 MSK→CC 迁移以外的内容(例如“如何使用 Flink?”),简要说明并引导回迁移主题——除非用户明确想离开迁移场景,否则不要将话题带离迁移上下文。
  • 如实说明限制。 “我无法访问实时客户数据——Confluent 客户团队可以确认贵组织的具体情况”胜过编造针对客户的答案。

从 Explore 转出:

  • 用户表示已准备好评估(“我在 X 处有一个状态文件”/“我们来扫描吧”/“准备好评估了”)→ 加载 references/assess.md 并继续。
  • 用户表示已准备好规划(“我已经有环境配置文件了”/“我们用这些数据来制定计划吧”)→ 加载 references/plan.md 并继续。
  • 用户提出与 Assess 阶段相关的问题(集群类型建议、容量计算、针对其环境的网络选型)→ 说明这一点,并主动提出开始 Assess:“这取决于您的环境。想用 KCP 扫描,还是手动描述您的设置?”

Intake Path Selection

向用户介绍两种路径,并询问他们想选择哪一种。不要通过运行 bash 自动检测工具是否可用——根据命令执行原则,运行任何命令前都必须先获得用户批准。介绍这两个选项,让用户选择,然后再继续。

Path 1 — KCP deep scan. KCP 是 Confluent 开发的开源迁移工具(github.com/confluentinc/kcp),用于评估 AWS MSK 环境,并为 Confluent Cloud 生成迁移资产(Terraform、镜像主题配置、迁移编排)。如果您已安装 KCP,并拥有 MSK 账户的 AWS 凭证,它可以扫描您的环境并生成 kcp-state.json 文件,作为后续每个阶段的标准配置文件。具备该条件时,这是信息最丰富的路径。

Path 2 — Manual intake. 适用于尚未安装 KCP、没有可用 AWS 凭证,或处于受限 AWS 账户/项目启动前阶段的用户。我们将逐步梳理约 11 组问题,并填写 assets/migration-profile.yaml。该文件在后续阶段中与 KCP 状态文件作用相同,只是详细程度较低,但仍可用于后续工作。

如果用户已经有 KCP 状态文件,则视为已完成 KCP 路径的输出——直接跳到解析文件。

用户选择路径后,加载 references/assess.md,并按照该阶段的参考文档执行后续步骤。在用户做出选择前,不要提出辅助问题或运行任何命令。

**首次提及时的提醒:**每当在对话中首次提到 KCP(包括后续阶段),都要简要介绍它——由谁开发、它是开源的、GitHub URL,以及它在迁移中的用途。不要假定用户了解它。

Stage Workflow

每个阶段都有进入条件、退出产物和参考文件。各阶段在交接前都要验证自身工作。

StageEntryExit Artifact (validation for this stage)Reference
Explore用户对 MSK 到 CC 迁移的概念、比较、工具或流程有疑问无产物——依据技能参考资料和实时获取的文档进行对话式问答。用户表示准备好进入 Assess 或 Plan,或结束对话时,即可退出。SKILL.md “Explore stage” 部分
Assess用户开始迁移环境配置文件已填写所有必填字段;已指出风险标记;如果提供的 KCP 状态文件中已填充 topics.details[],则添加 Topic-Level Readiness 部分,将用户主题分为四类(跳过/手动处理/需要配置/可直接迁移)——参见 references/assess.md “Topic-Level Readiness” 部分references/assess.md
Plan已有环境配置文件技术计划输出以 references/plan.md 中的 “About this Technical Plan” 说明模板开头;记录架构决策;明确迁移前的要求references/plan.md

用户可以从任一三个阶段进入。对于仍在了解相关信息的用户,通常从 Explore 阶段开始;拥有 MSK 环境、需要扫描或描述环境的用户从 Assess 阶段开始;已有环境配置文件的用户从 Plan 阶段开始。Plan 阶段的退出产物将作为后续执行阶段(Provision、Migrate、Switchover、Monitor)的交接材料;用户将与 Confluent 客户团队一起执行这些阶段,并以 docs.confluent.io 作为参考。

Cross-Stage Decision Logic

集群类型:默认选择 Enterprise,仅在触及硬性限制时升级到 Dedicated

所有迁移都建议选择 Enterprise。它具有弹性,支持专用网络连接(AWS 上的 PrivateLink 和 PNI)、AWS 上的 mTLS、所有云上的 BYOK 和客户端配额,并且无需承担 CKU 容量规划的运维开销,即可覆盖绝大多数迁移场景。仅当源环境触及以下硬性限制之一时,才建议选择 Dedicated。

硬性限制表的使用方法:

  • ROUTE 行要求在回答前实时获取信息。 不要凭记忆回答升级问题。获取所引文档章节,提取相应值,并在回复中引用 URL。
  • HARDCODED 行协议。 HARDCODED 行表示该技能在设计时无法将某项事实关联到结构化实时来源。将缓存值视为工作假设,而不是已验证事实。分为两个子类别:
    • 有文档引用的 HARDCODED — 提供了文档 URL,但事实位于正文中,而非结构化行中。提出建议前,获取所引 URL,并检查现在是否存在结构化表示(表格行、项目列表、版本矩阵)。如果存在,使用文档中的值,并告知用户:“技能缓存的值是 X;文档现在显示 Y;将采用文档中的值。”如果不存在,则以缓存的假设为条件提出建议——表述为:“如果 [缓存的条件] 仍然成立(文档目前未发布可供确认的结构化矩阵,详见 [URL]),那么 [建议];否则 [备选方案]。”不要向用户标注缓存值的日期;所引 URL 就是实时验证信号。
    • 没有引用的 HARDCODED — 没有公开文档 URL 可供引用该事实(例如“未找到权威公开文档”)。这些行应保留“上次验证 YYYY-MM-DD”时间戳。由于没有可供用户核实的 URL,时间戳是用户唯一的过时信号。提出建议时仍应采用条件式表述。
  • 多项触发条件的配置。 如果有多行适用,应分别应用每一行并引用每项触发条件。不要在匹配第一项后就停止。
  • 没有引用的 HARDCODED 行的维护。 没有引用的行没有公开 URL 可供检查变更,因此时间戳是唯一的过时信号。每季度检查没有引用的 HARDCODED 行:向相关 Confluent 产品团队(Cluster Linking、Networking、Schema Registry 等)或内部产品文档确认缓存值。检查后同时更新缓存值和“上次验证 YYYY-MM-DD”时间戳。如果出现揭示该事实的结构化公开文档,将该行从 HARDCODED 改为 ROUTE。 | 触发类别 | 升级条件 | 来源 | |---|---|---| | 预计 eCKU 超出 Enterprise 上限 | 三项容量检查中任意一项未通过(见下方第 1 行子项目) | 路由: cluster-types.html — 从 Enterprise 列获取每 eCKU 入口速率、每 eCKU 出口速率、每 eCKU 分区速率、Enterprise eCKU 上限 | | ACL 数量超出 Enterprise 上限 | 源扫描的 ACL 数量 ≥ Enterprise 上限 | 路由: cluster-types.html — 获取相关集群类型(Enterprise / Dedicated)的对比表中的 ACL 行 | | 网络需要 VPC Peering 或 Transit Gateway | Hub-and-spoke 或直接对等连接拓扑 | 硬编码(文档引用) — 缓存的假设:Enterprise 仅支持 PrivateLink + PNI;VPC Peering 和 TGW 仅限 Dedicated。cluster-types.html 中仅有正文描述,没有结构化行。应用 HARDCODED 协议。 | | 需要代理端 schema ID 验证 | 源端设置了 confluent.value.schema.validation=true 或明确提出了此要求 | 路由: broker-side-schema-validation.md,Prerequisites 部分 | | 需要 mTLS,但目标集群类型在所选云上不支持 mTLS | 源端使用 mTLS,且目标集群类型 × 云的组合不支持 mTLS | 路由: cluster-types.md — 在建议升级之前,获取功能对比表中的 mTLS 行以验证支持情况。 | | 高吞吐量 Kafka REST Produce v3 | 基于 REST 的生产者具有不可忽略的吞吐量 | 路由: cluster-types.html,“Kafka REST Produce v3 - Max throughput”行 | | 需要 99.95% 单可用区 SLA | 明确的合同 SLA 要求 | 路由: cluster-types.html,“Uptime service level agreement options”表。法律 SLA PDF 无法通过程序路由。 |

第 1 行升级检查(复合容量计算):

  • 从 cluster-types 的 .md 版本获取四项数据:https://docs.confluent.io/cloud/current/clusters/cluster-types.md(.html 页面会截断对比表;.md 版本会返回干净的数据)。面向用户的输出中引用 .html 形式(根据 Sources of Truth 中的获取/引用规则,将 .md 扩展名替换为 .html)。从 Enterprise 列提取以下值:每 eCKU 入口速率(MBps)、每 eCKU 出口速率(MBps)、每 eCKU 分区速率(使用“Partitions (pre-replication)”行,而不是“Compactable partitions”)、Enterprise eCKU 上限。
  • 计算前先验证获取的数据。 根据 references/plan.md Capacity Sizing Procedure 第 5a 步中的验证协议:每个值都必须是具体数字,并且必须附有明确标示该维度的行标签(例如,“Ingress (MBps)”、“Partitions (pre-replication)”)。如果任何值缺失、无法解析,或从意外的行中提取,立即停止 — 不要给出集群类型判断。标记为因 cluster-types 获取失败而受阻,并请用户手动验证。不得回退使用训练数据中记忆的值 — 错误的每 eCKU 值会导致集群类型判断错误,下游读者无法察觉。
  • 根据用户配置计算以下三项除法:
    • 峰值入口速率 ÷ 每 eCKU 入口速率
    • 峰值出口速率 ÷ 每 eCKU 出口速率
    • 分区数量 ÷ 每 eCKU 分区速率
  • 如果三项中的任意一项超出 Enterprise eCKU 上限,则升级至 Dedicated,并注明触发升级的检查项。

软触发条件 — 技能会据此判断的运营和合规信号:

条件建议原因
对容量实施严格的变更控制DedicatedDedicated 容量仅通过明确的 CKU 变更进行调整。Enterprise 的弹性扩缩会自动发生,可能违反变更控制政策。
法规要求使用专用基础设施Dedicated某些合规制度要求提供弹性多租户产品无法提供的隔离保障。

商业信号 — 标记给 Sales,不作判断:

信号Skill 行为
客户偏好固定、可预测的计费方式保持 Enterprise 为默认选项。标记:“计费模式偏好属于商务决策。销售团队可以详细介绍 CKU 与 eCKU 定价的影响。”
稳定状态下工作负载极大且持续保持高利用率保持 Enterprise 为默认选项。标记:“对于这类工作负载,客户通常会评估 Dedicated,以提高大规模运行时的定价效率。值得与销售团队沟通。”
直接询问价格(“这要多少钱?”、“TCO”、“相比 MSK 能省多少?”)不要给出具体金额。首先引导用户使用公开的成本估算器,作为自助服务入口(用户输入自己的吞吐量、保留期和网络参数,获取标价范围)。说明:“定价问题按设计应由销售团队沟通——成本估算器是合适的起点。”如果客户需要的是报价而非标价计算,请升级至 Confluent 客户团队。不要根据扫描数据计算虚构的估算值。

源到目标映射:

源默认选项以下情况升级
MSK ServerlessEnterprise适用任何硬性限制(很少见——两者都具有弹性)
MSK Provisioned(任何规模)Enterprise适用任何硬性限制

此 Skill 不处理非 MSK Kafka 源。Freight 是有文档说明的集群类型选项(cluster-types.md);如果用户询问,请引导他们查看最新文档,不要直接给出指导。

Auth 迁移映射(MSK 支持的 Auth 类型)

Auth 迁移分两步决策:(1)处理源端迁移前的任何要求,然后(2)根据客户对身份模型的偏好选择目标 CC Auth 方法。源端步骤由源 MSK Auth 类型决定;目标端步骤根据 target_context.target_identity_model(Plan 阶段的客户输入)逐步确定。

按 MSK Auth 类型处理源端:

源 Auth(MSK)普通 Cluster Linking(默认)如果选择 Gateway(规模大/较复杂)
SASL/SCRAM-SHA-512无需更改——CL 使用 SCRAM 进行身份验证。支持(SCRAM 客户端/传输 Auth)。
mTLS无需更改——CL 使用 mTLS 进行身份验证。支持。
未经身份验证(明文)CL 链路无需更改,但这些客户端没有对应的 CC 方式,会在切换时中断——请在切换前将它们迁移到 CC 支持的方式(参见“红旗:未经身份验证的监听器”)。同样需要迁移客户端。
AWS IAM — MSK Provisioned无需更改客户端。仅为集群链路添加 SASL/SCRAM 监听器,或使用 KCP 跳转集群。Gateway 不接受 IAM——请先将客户端从 IAM 迁移到 SCRAM/mTLS。
AWS IAM — MSK Serverless只能使用 KCP 跳转集群(Serverless 仅支持 IAM;无法添加监听器)。不适用。

在 Plan 的 Auth Approach 源端处理说明中,始终引用 CL 安全文档(https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/security-cloud.md)——适用于每种源 Auth 类型(SCRAM、mTLS、IAM、未经身份验证),而不仅仅是 IAM。 该文档是有关 CC Cluster Linking 支持哪些源 Auth 方法的权威来源;请输出 URL,不要只写“在线确认”而不提供链接。请在线核实文档中的当前支持情况。SASL/SCRAM 是有效的 CL 源端 Auth 方法,也是有效的 Gateway 传输/客户端 Auth 方法,但不是 Confluent Cloud 目标端/客户端 Auth 方法——绝不要将 SCRAM 推荐为 CC 目标端方法。

MSK 集群可以同时运行多个监听器/Auth 方法;应综合考虑所有方法。未经身份验证的监听器没有对应的 CC 目标端方法——这些客户端必须在切换前迁移到 CC 支持的方法。 步骤 0 — 保留受 CC 支持的源端认证方式。 如果源端已使用 Confluent Cloud 支持的客户端认证方式(mTLS 或 OAuth/OIDC),则默认目标端采用相同方式,并注明“保留源端认证方式 — Confluent 已支持”。客户可以覆盖此设置。以下身份模型决策流程仅适用于源端方式在 CC 中没有对应方式(SASL/SCRAM、AWS IAM、未认证),或客户希望更改方式的情况。对于不可保留的源端方式和尚未决定的情况,默认使用 API Keys 作为后备选项,而非通用默认值。

目标端认证选项(根据 target_context.target_identity_model 依次选择):

target_identity_modelCC 目标端认证方式备注
oauthSASL/OAUTHBEARER与企业 IDP 集成。需要在 CC 端设置 IDP 集成。
api_keysSASL/PLAIN(服务账号上的 CC 托管 API keys)由 CC 管理的服务账号凭证。客户尚未决定时的默认选项。
mtls使用客户端证书的 SSL客户管理 PKI。根据 cluster-types.md 实时核实集群类型/云环境可用性。
undecided默认使用 API Keys(SASL/PLAIN);标记为开放问题,并在 Provision 前解决暂定假设可确保 Plan 不受阻;客户可以覆盖此设置。
other(仅 SAML、不适用于 OAuth/IDP 集成的联合断言、自定义身份代理)咨询 Confluent 客户团队CC 公布的身份模型并未涵盖所有企业场景。

权威来源: 使用 CC auth overview 了解 CC 认证方式和身份模型;使用 cluster-types.md 查看实时认证方式 × 集群类型矩阵(包括 mTLS 的云环境可用性 — 在建议将 mTLS 作为目标端认证方式前,先获取功能对比表中的 mTLS 行);使用 KCP zero-cut guide 查看 Gateway 认证切换矩阵。如果起始指导与实时来源不一致,以实时来源为准。

切换方案选择

对于大多数环境,Confluent 建议直接采用 Cluster Linking 迁移(镜像源端,然后切换客户端)——这是最简单的路径。Cluster Linking 按字节原样镜像源端并同步消费者偏移量;镜像追平后,将客户端切换到 Confluent Cloud。可以分批增量完成(按团队或关键程度分批提升镜像主题),也可以在单个窗口内完成。增量方式与单窗口方式是在纯 CL 方案中的范围选择,并非单独推荐的机制。

KCP Gateway(Zero-Cut)(通过代理切换客户端,无需重启)适用于确实规模很大或复杂的环境:此时,按组原子切换且无需重启客户端所带来的价值,足以抵消额外的 Gateway 基础设施和许可成本。当需要避免重启/最大限度减少停机时间、客户端协调负担很重,或影响范围很大而使协同客户端切换难以实施时,建议采用此方案。

方案推荐时机计划输出内容
Cluster Linking — 推荐(适用于大多数迁移)默认方案。适用于绝大多数环境的直接路径。由目标端发起 CL;先镜像,再切换;同步消费者偏移量;增量式(分批提升)或单窗口。参见 https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/migrate-cc.md。
Cluster Linking + KCP Gateway(零停机切换)对于大型或复杂环境,如果按组原子切换且无需重启客户端所带来的好处足以抵消 Gateway 的额外开销,则推荐使用。按所有权/关键程度对 KCP 分组;逐组检查延迟 + 执行 + 验证;逐组回滚。实时获取 Gateway 的前置条件。
双写(蓝绿部署)除非客户的架构本就需要,否则避免使用(验证期间同时向两个集群写入)。使用通用 CL 进行镜像;其余部分由客户负责。没有 Confluent 专用工具;基础设施成本翻倍;运维复杂。

切换机制选择——默认使用普通 CL;出现任一信号时推荐 Gateway。 这是一个独立于 Enterprise 与 Dedicated 容量规则的维度。两个主要信号都由接入信息驱动,因此触发条件不依赖可选的客户端清单扫描。默认假设“可以接受切换窗口/协调工作可控” → 使用普通 CL(符合大多数迁移的情况)。在计划中明确说明理由:“客户端较少,切换窗口可接受 → 使用普通 CL;如果需要避免重启客户端,或无法协调单个切换窗口,则适合使用 Gateway。”

信号级别来源触发 Gateway 的原因
不重启/尽可能减少停机的要求(客户端无法重启或无法接受切换窗口)主要接入信息(target_context.downtime_tolerance)这是 Gateway 的核心用途——原子切换,无需重启。
单个切换窗口内的客户端协调负担过重(不同客户端应用较多,和/或所属团队较多)主要接入信息(target_context.client_coordination_burden;如果运行了客户端清单扫描,则使用 discovered_clients 中的不同应用数量)在一个窗口内协调多个团队完成目标地址切换和重启并不现实。
影响范围较大(分区/主题数量极多——例如第 5 行中的 >10k 分区标记——或集群数量较多)次要状态文件一次性手动切换的风险无法接受;按组回滚有实际价值。

消费者连续性。 使用由目标端发起的 Cluster Link 时,消费者偏移量会从源端同步到目标端,因此消费者会从之前的位置继续消费。请在提升镜像主题之前迁移消费者(consumer.offset.sync.enable=true);提升后,源端消费者将无法继续同步偏移量。这是普通 CL 的默认行为。对于 Gateway 路径(大型/复杂环境),同一路由上的生产者和消费者会按组一起原子切换,因此无需管理先切换生产者、后切换消费者的时间窗口。这不是双向链路场景——MSK 源不支持双向 Cluster Linking(参见下文的 Cluster Linking 方向)。有意先切换生产者、很久以后再切换消费者,并且两者之间存在较长间隔的做法,不是有文档记录的 MSK 迁移模式——请咨询 Confluent 客户团队。

Gateway/零停机切换的前置条件——仅当计划推荐 Gateway 时才实时获取。 普通 Cluster Linking 不需要任何 Gateway 前置条件。当计划针对大型/复杂环境推荐 Gateway 时,其所需组件(Kubernetes 发行版、CP 许可、CL 状态、最低 KCP 版本、身份验证兼容性)会随着 Zero-Cut 的发展而变化——在告知用户 Gateway 是否适用之前,请从 KCP 零停机切换指南获取当前的前置条件列表。不要依赖缓存的前置条件。

集群链接方向

对于 MSK 源,集群链接只能由目标端发起(link.mode=DESTINATION)。 无需判断方向。SOURCE(源端发起)和 BIDIRECTIONAL 都要求源端存在集群链接对象——这是 Confluent Server / Confluent Cloud 的能力。MSK 是开源 Apache Kafka,而双向模式明确不支持它(https://docs.confluent.io/cloud/current/multi-cloud/cluster-linking/cluster-links-cc.md),因此这两种模式都不可用。始终使用目标端发起。

变化的不是方向,而是 Confluent Cloud 如何连接私有 MSK 源。这是一个网络问题。当 target_networking 为 PNI(AWS 到 AWS 的私有默认配置)时,询问 target_context.cc_reaches_source,以了解目标 VPC 是否有到 MSK VPC 的直接路由。无论答案是什么,最终都会使用目标端发起的链接——区别在于 Confluent Cloud 是否需要额外配置出站 PrivateLink 端点,以便连接回源端。

target_networkingCC 如何连接私有 MSK 源设置路径(始终由目标端发起)
VPC 对等连接现有对等连接提供路由建立连通性后,KCP 会生成集群链接资源。
Transit GatewayTGW 提供路由(假设 MSK 位于 TGW 上)建立连通性后,KCP 会生成集群链接资源。
公有网络 + MSK 公有网络CC 通过公有端点连接 MSK建立连通性后,KCP 会生成集群链接资源。
PNI,存在直接路由(cc_reaches_source: true)CC 网络 VPC 与 MSK VPC 之间存在现有对等连接 / TGW建立连通性后,KCP 会生成集群链接资源。
PNI,不存在直接路由(cc_reaches_source: false)添加一个出站 PrivateLink 端点——这是额外的、限定环境范围的资源。集群的入站连接仍使用 PNI。按照 https://docs.confluent.io/cloud/current/networking/aws-egress-privatelink-esku.md 设置出站端点;建立连通性后,KCP 会生成集群链接资源。

当需要 target_context.cc_reaches_source 但其值未知时,默认“假设存在直接路由”作为暂定假设,并将其标记为 Provision 前需要解决的开放问题。

KCP 不会配置网络(PNI 或出站 PrivateLink 端点)。出站端点应按照 docs.confluent.io 和 confluentinc/cc-terraform-module-clusterlinking-outbound-private 模块的说明进行设置,作为 Provision 阶段 / 账户团队的工作。在确定技术计划前,请根据 aws-egress-privatelink-esku.md 和 cluster-links-cc.md 核实当前要求。

网络连接方式选择

对于私有 AWS 到 AWS 迁移,PNI 是推荐的默认选项(满足前置条件时成本更优——PNI 只收取跨可用区流量费用,而 PrivateLink 还会产生数据处理费和每小时端点费用)。在所有私有 MSK 位于 AWS 的场景中,PNI 都是入口网络连接类型。只有在达到 PNI 网关上限(每个环境 ≥2 个)或目标云为 Azure/GCP(PNI 仅适用于 AWS)时,集群才会停用 PNI。两项额外需求不会导致集群停用 PNI:当 Confluent Cloud 无法直接路由到私有 MSK 源,或 target_context.cc_egress_required 为 true(CC 托管连接器需要访问客户托管的系统)时,Plan 会添加一个 Egress PrivateLink Endpoint,同时集群继续使用 PNI 作为入口连接类型。

请用通俗易懂的语言介绍这两个选项——大多数企业并不了解 PNI。 在推荐 PNI 的任何场景(技能回答和 Plan 的 Networking Decision 中),都要说明两者:

  • PNI(Private Network Interface,私有网络接口): Confluent 会在你的 VPC 中直接放置网络接口。仅适用于 AWS。稳定运行时成本最低,因为你只需支付跨可用区流量费用。需要客户侧配置 ENI。
  • PrivateLink: 通过端点服务提供 AWS 托管的私有连接。适用于 AWS、Azure 和 GCP。会产生每个端点的小时费用和数据处理费,因此稳定运行时通常成本更高。配置工作量较少。
  • 如何选择: AWS 到 AWS 且关注稳定运行成本时选择 PNI;目标为 Azure/GCP、达到 PNI 网关上限(每个环境 2 个),或客户更看重减少配置工作量而非降低稳定运行成本时选择 PrivateLink。

实际节省金额取决于工作负载,请与 Confluent 客户团队确认。不要引用百分比。

源可访问性目标云CC 网络连接集群类型
私有(VPC 内部),存在到 MSK 的直接路由AWSPNI(默认选项——满足前置条件时成本更优)Enterprise
私有(VPC 内部),不存在到 MSK 的直接路由(target_context.cc_reaches_source: false)AWSPNI 入口 + 为 CL 复制拉取操作额外添加 Egress PrivateLink EndpointEnterprise
私有(VPC 内部)+ 需要 CC 出站连接(target_context.cc_egress_required: true)AWSPNI 入口 + 为出站流量额外添加 Egress PrivateLink EndpointEnterprise
私有(VPC 内部)+ 达到 PNI 网关上限(环境中有 ≥2 个 PNI 网关)AWSPrivateLinkEnterprise
私有(VPC 内部)Azure / GCPPrivateLink(不支持 PNI)Enterprise
私有(多 VPC,中心辐射型)AWSTransit GatewayDedicated
私有(已存在直接 VPC 对等连接)AWS / Azure / GCPVPC PeeringDedicated
公有任意公有端点Enterprise(仅非生产环境)

PNI 前置条件和不支持出站连接的限制:有关当前客户侧配置要求(ENI 数量、网络接口权限),请参阅 aws-pni.md。PNI 不支持出站连接,因此当 Confluent Cloud 必须回连源端(无法直接路由到私有 MSK)或访问客户托管系统时,文档规定的替代方案是额外添加 Egress PrivateLink Endpoint——请参阅 aws-egress-privatelink-esku.md。该端点是额外添加的,作用范围为环境级别;它不会更改集群的 PNI 入口类型。PNI 容量上限和网关限制:aws-pni.html。按集群类型划分的网络功能可用性:networking/overview.md + cluster-types.md。

对于超出上述三个可引用例外范围的合规、组织政策、延迟敏感或底层平台限制场景,Confluent 文档中没有公布结构化说明——请咨询 Confluent 客户团队。

环境配置文件

在评估阶段生成,供所有后续阶段使用。

字段组关键字段用途阶段
源平台platform、cloud_provider、kafka_version规划(CL 兼容性),迁移(CL 设置)
集群brokers、topics、partitions、throughput、auth、networking规划(容量规划、集群类型、网络),配置(Terraform)
Schema Registrytype、subject_count规划(迁移路径),迁移(Schema Linking 与 REST API)
连接器managed_count、self_managed_count、types规划(CMU 范围),迁移(连接器迁移)
成本monthly_total、breakdown规划(业务论证)

完整架构:assets/migration-profile.yaml。字段详情:references/assess.md。

不变原则

无论用户输入如何,适用于每次迁移的不可妥协默认原则。

  1. 如果迁移范围包含架构,则必须先完成架构迁移,再进行数据迁移。 对于源集群有 SR 的迁移:按照 Plan 选定的路径(Schema Linking、REST API 等)迁移架构,然后再由 CL 镜像传输数据。对于源集群没有 SR、但用户选择在迁移期间采用 SR 的迁移:先配置 CC SR 并注册初始架构,再进行数据迁移。如果用户选择不迁移架构,明确记录这一选择并跳过架构步骤。
  2. 生产集群使用私有网络。绝不对生产环境使用公共端点。
  3. Cluster Linking 源集群必须达到 CL 源集群要求文档中 migration-use-case 的版本下限:Kafka 2.4.0+(或用于本地部署源集群的 Confluent Platform 5.4.0+),而非一般的 Kafka 3.0+ 下限。本技能仅适用于 MSK,且始终处于迁移例外路径,因此 Kafka 2.4–2.9 的 MSK 集群在产品版本方面符合迁移条件。源集群还必须达到 inter.broker.protocol(IBP)下限——这是**单独的一般要求,适用于非 Confluent Cloud 源集群,且独立于迁移例外规定。**迁移例外仅放宽 Kafka/CP 产品版本要求,**不放宽 IBP 要求。**实时获取这两个下限,不要缓存。提取要求时,migration-use-case 产品版本下限位于“Supported cluster types”下的脚注 [1] 中,而非醒目的表格里,因此要获取 index.md 版本并阅读脚注;IBP 要求在同一页面另行说明。不要假设 IBP 下限与 2.4.0 二进制版本下限相同(客户使用较新的 Kafka 二进制版本时,IBP 仍可能过旧而不满足要求;而 IBP 不能高于正在运行的二进制版本,因此二进制版本过旧、无法支持所需 IBP 的集群,必须先升级才能符合条件)。不要使用一般的 Kafka 3.0+ 产品版本下限。
  4. 按照当前 CL offset-sync 指南配置消费者偏移量同步。标志名称和默认值属于产品事实,必须实时核实。
  5. 在整个迁移期间保留源集群。Monitor 阶段的回滚窗口结束且获得利益相关者签字确认后,方可停用源集群。
  6. 对于 Zero-Cut:执行前确认 kcp migration lag-check 显示零延迟。对于手动 CL:切换前使用金丝雀消费者进行测试。
  7. 开始切换前记录回滚计划。Zero-Cut 在提升前可干净回滚;手动方式则在提升后回滚。
  8. AWS IAM 是 MSK/AWS 专有的身份验证方式,Confluent Cloud 没有对应方案。普通 Cluster Linking(默认方式)可以处理经过 IAM 身份验证的 MSK 源集群,无需更改客户端身份验证方式:对于 MSK Provisioned,可添加一个仅供集群链接使用的 SASL/SCRAM 监听器,或使用可桥接 IAM 的 KCP 跳转集群;对于 MSK Serverless(仅支持 IAM,且无法添加监听器),应使用 KCP 跳转集群。KCP Gateway 不接受 IAM——只有在选择 Gateway 路径时,才将客户端从 IAM 迁出。实时核实 CL 安全文档中当前支持的 CL 源身份验证方式。
  9. 绝不显示或记录凭据、API 密钥、引导服务器机密或 .env 文件内容。
  10. 绝不在用户审查计划前应用 Terraform(先运行 terraform plan,再运行 terraform apply)。
  11. 所有身份验证凭据都以服务账号而非用户账号创建。
  12. KCP Gateway(Zero-Cut)仅适用于大型或复杂环境,且有基础设施和许可前置要求。Plan 建议使用 Gateway 时,请从 KCP zero-cut 指南获取当前前置要求,不要缓存。普通 Cluster Linking 是默认方式,不需要满足 Gateway 的前置要求。

工具路由

操作首选方式备用方式
发现 MSK 集群KCP CLI kcp discover对话式信息收集
扫描集群详情KCP CLI kcp scan clusters对话式信息收集
扫描 Schema RegistryKCP CLI kcp scan schema-registry对话式信息收集
扫描客户端清单KCP CLI kcp scan client-inventory对话式信息收集
成本分析KCP CLI kcp report costs对话式信息收集
指标分析KCP CLI kcp report metrics对话式信息收集
验证 CC 环境本地 Confluent MCP(list-environments、list-clusters)Confluent CLI
验证 CC 主题/架构/连接器本地 Confluent MCP(list-topics、list-schemas、list-connectors)Confluent CLI
生成 TerraformKCP CLI kcp create-asset ...手动编写 Terraform
Zero-Cut 切换KCP CLI kcp migration {init,list,lag-check,execute}手动 CL + 客户端切换

MCP 写入操作(create-、alter-、delete-)根据 DTX destructiveHint 要求,必须获得用户明确确认。

信息来源

此技能承载的是判断逻辑,而非产品事实。决策框架、触发类别、阶段交接和路由逻辑都保留在此技能中。具体数值、版本界限、功能可用性、命令接口和映射矩阵则存放在外部来源中,并实时获取。

实时获取协议:

  • 推荐 KCP 命令、标志或操作流程之前,先获取 KCP 仓库信息。
  • 引用集群类型容量、版本界限或功能可用性状态之前,先获取 docs.confluent.io 上的信息。
  • 声称某个配置支持 Gateway 或 Zero-Cut **(仅当 Plan 为大型/复杂环境推荐 Gateway 时才相关)**之前,先获取 KCP zero-cut 指南。
  • 实时来源始终优先。 如果它与此技能中缓存的任何内容不一致,应采用实时值,并告知用户缓存值已过时。
  • 故障处理。 如果 ROUTE URL 返回 404,或页面结构发生重大变化,应向用户说明情况;如果有 HARDCODED 值,则使用该值并注明条件,同时标记该 URL 以便更新。

获取工具——使用 WebFetch,不要使用 shell。 对下方映射中的所有实时来源,只能使用 WebFetch。不要使用 curl、wget、python3 -c、python3 <<EOF 或任何基于 shell 的 HTML 清理方法。WebFetch 可在一次调用中处理 HTML→markdown 转换和定向提取。请传入聚焦的提示词(例如:“从 Enterprise 列中提取每 eCKU 的入口 MBps、出口 MBps、分区速率和 eCKU 上限”),而不是获取原始内容后再解析。对于托管在 GitHub 上的来源(KCP 仓库、zero-cut 指南),可对渲染后的 URL 使用 WebFetch;读取 KCP 仓库时也可以使用 gh CLI。没有任何 Confluent MCP 工具提供 fetch-docs 功能——WebFetch 是唯一的获取途径。

此技能中的 docs.confluent.io URL 使用 .md 扩展名。 Confluent 文档网站会在相同路径下提供适合大模型读取的 Markdown,只需将 .html 替换为 .md。.md 版本会返回结构清晰、行完整的数据;通过 WebFetch 获取 .html 渲染页面时,宽比较表(例如 cluster-types 中的 eCKU/CKU 比较表)会被截断,导致值缺失或被臆造。请按原样使用 WebFetch 获取这些 .md URL——机器提取时无需更改扩展名。

向用户展示文档链接时,将末尾的 .md 替换为 .html。 这适用于 Plan 或 Assessment 文档中的每一处引用,以及聊天回答中的每个链接。.html 页面适合人类在浏览器中查看;.md 版本提供的是原始 Markdown,在浏览器中阅读体验较差。因此:

  • 此技能中列出的 URL(获取用):https://docs.confluent.io/cloud/current/clusters/cluster-types.md
  • 向用户展示的相同 URL(引用用):路径完全相同,只将扩展名改为 .html 如果 .md URL 返回 404(该页面不存在 Markdown 版本),请改为获取 .html 版本,并在任何提取的值中说明截断风险。带查询字符串的变体(如 ?format=markdown)不起作用——它们返回的内容与 .html 一样,已被截断。

来源映射:

主题实时来源获取时机
KCP CLI 命令、标志、子命令行为KCP Command Reference(结构化 CLI 参考,由 Cobra 定义生成)+ github.com/confluentinc/kcp(README、仓库背景信息)。中心页说明:该页面会通过 meta-refresh 重定向;WebFetch 可能返回重定向消息——向用户展示,或按照故障处理协议导航至当前版本。推荐任何命令或标志之前
KCP 状态文件架构github.com/confluentinc/kcp(internal/types/state.go)解析状态文件时
Zero-Cut 前提条件、流程、身份验证支持KCP zero-cut guide切换;任何 Gateway 或 Zero-Cut 相关问题
Gateway 身份验证交换场景(源身份验证 × 目标身份验证矩阵)KCP Gateway Switchover hub — 8 种已记录场景(无身份验证/mTLS/SCRAM 源 × SASL-PLAIN/OAuth/mTLS 目标)。中心页说明:该页面会通过 meta-refresh 重定向;从中心页导航至具体场景页面。Plan 阶段推导目标身份验证;任何有关通过 Gateway 进行特定源 → 目标身份验证迁移的问题
集群类型、eCKU 上限、每 eCKU 吞吐量、分区速率、REST 吞吐量、SLAcluster-types.mdPlan 阶段;任何涉及容量、吞吐量或分区的问题
CC 每主题配置默认值和限制(retention.ms、retention.bytes、segment.bytes、max.message.bytes、min.insync.replicas、compression.type、复制因子)topics/manage.md — 按上述获取规则获取 .md 版本。通过 WebFetch 获取时,.html 配置表会在 num.partitions 后截断,导致缺少 retention.* 和 segment.bytes 行,因此这些阈值必须使用 .md 版本。cluster-types.html 不包含每主题配置默认值——不要从该页面查找主题配置。Assess 阶段的主题级就绪度分组;任何每主题配置阈值比较
Cluster Linking 源要求和兼容性cluster-linking index(获取 index.md 版本;迁移用例的最低版本要求位于“Supported cluster types”下方的脚注 [1])以及 cluster-types.md 上的“Cluster linking capabilities”子表,用于确定哪些集群类型可充当 CL 源或目标。为此技能获取 CL 源最低版本要求时,请提取迁移用例例外(Kafka 2.4.0+ / CP 5.4.0+)作为产品版本最低要求,并另行提取当前的 inter.broker.protocol(IBP)最低要求——实时获取 IBP 值;不要缓存,也不要假定它与产品版本最低要求相同。不要使用通用的 Kafka 3.0+ 产品版本最低要求——此技能仅适用于 MSK,在产品版本方面始终属于迁移例外路径。任何 CL 相关问题或版本兼容性检查,以及 Plan 提及特定目标集群类型的 CL 可用性时
Cluster Linking 方向配置(link.mode);双向模式不支持开源 Apache Kafka,因此 MSK 只能由目标端发起cluster-links-cc.md任何 CL 方向相关问题;确认 MSK 仅支持 link.mode=DESTINATION
CC Cluster Linking 源身份验证支持(支持的源 SASL 机制;不包括 IAM)security-cloud.md任何 IAM 源或 CL 源身份验证相关问题
用于 Cluster Linking 复制拉取的 Egress PrivateLink Endpoint(增量式、限定环境、Enterprise;当 PNI 必须回连私有源时,文档中说明的替代方案)aws-egress-privatelink-esku.mdPNI 集群上的 target_context.cc_reaches_source: false 或 cc_egress_required: true 时
基于 CL 的手动迁移流程(不满足 Zero-Cut 前提条件时的大爆炸式备用方案)migrate-cc.md切换;Plan 输出 Big-bang + Manual CL 单元格,或需要说明手动 CL 切换流程时
CC 身份验证选项和 CL 身份验证兼容性authenticate docs为每种源身份验证类型映射身份验证方式
各云的 mTLS 可用性mTLS overview 和 CC 发行说明mTLS 与 Azure/GCP 相关问题
代理端架构 ID 验证的可用性broker-side-schema-validation.md源使用架构 ID 验证时
Schema Linking 支持矩阵docs.confluent.io Schema Registry / Schema Linking 页面选择架构迁移路径
Schema Linking 版本最低要求和版本方案要求硬编码(文档注明来源) — 缓存值:源 SR 必须运行 Confluent Platform 7.0 或更高版本,且仅限 Enterprise 版本(Community 即使是 7.0+ 也不支持 Schema Linking)。漂移检查:获取 schema-linking-cp.md 的先决条件部分,确认页面仍将“Confluent Platform 7.0”列为最低版本。若不匹配(版本已提升或措辞已更改),请改为提示“实时验证”,并告知用户缓存值可能已过时。任何源 SR 为 Confluent SR 的 Plan——在推荐 Schema Linking 之前,确认版本达到最低要求且版本方案为 Enterprise
Schema Linking 导出器机制(单向源 → 目标推送;源 SR 能否出站连接 CC SR 是关键限制)schema-linking.mdB2 架构迁移路径选择流程;源 SR 为 Confluent SR、符合 SL 最低版本要求,且正在评估 target_context.source_sr_can_push_to_cc_sr 时
Kafka Headers 中架构 ID 的线缆格式(GA:2026 年 3 月——支持在现有主题上以非中断方式采用 SR)Confluent Cloud serdes wire format docs客户正在考虑针对现有无架构源采用“迁移期间引入 SR”路径时
Connector 目录(托管式 Connector 可用性)connectors docs决定 Connector 迁移路径
CMU 用法github.com/confluentinc/connect-migration-utility自托管或 MSK Connect Connector 迁移
CC 按集群类型划分的网络可用性docs.confluent.io networking + cluster-types.html网络方案选择
按云和集群类型划分的网络选项可用性(PNI / PrivateLink / Peering / TGW)networking/overview.md网络方案选择;B6 PNI 默认选择流程
PNI 详情(集群类型、客户侧 ENI 设置、出站限制、每个环境最多 2 个网关)aws-pni.md推荐 PNI 或评估 PrivateLink 例外情况时
Terraform 提供程序资源架构registry.terraform.io/providers/confluentinc/confluent生成或审查任何 Terraform 配置时
此技能中的硬编码值均已明确标注。硬性限制部分规定了 HARDCODED 协议:每次会话都要获取引用的源内容并检测变化;如果发现实时值,应优先使用实时值。

参考文件索引

每个参考文件的一句话说明,以及何时阅读:

  • references/assess.md — 工具选择逻辑和危险信号识别。开始迁移时阅读。
  • references/plan.md — 规模评估、架构和连接器的迁移路径选择、风险识别。评估后阅读。
  • references/kcp-commands.md — 何时使用各个 KCP 命令,以及需要在输出中关注什么。用户需要 KCP 指导时阅读。
  • references/mcp-integration.md — 何时优先使用 MCP 而不是 CLI,以及如何解读结果。有可用的 MCP 工具时阅读。

评论

支持 Markdown