关于 msk-migration
面向将 AWS MSK 迁移到 Confluent Cloud 的团队,提供迁移问题解答,并根据环境信息生成评估和技术计划。
主要功能
- 01MSK 与 Confluent Cloud 迁移指导
- 02环境风险与就绪度评估
- 03技术迁移计划
- 04基于 KCP 状态文件或手动填写
适用场景
- 01比较 MSK 与 Confluent Cloud 功能
- 02根据 KCP 数据评估集群就绪度
- 03规划规格、网络和切换方案
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ confluentinc/ agent-skills --skill msk-migration安装后在 Claude Code 中输入/msk-migration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/migration-profile.yamlevals/evals.jsonevals/mock-environments/msk-acme-serverless/state.jsonevals/mock-environments/msk-aws-private-low-ecku/migration-profile.yamlevals/mock-environments/msk-consumers-after-producers/migration-profile.yamlevals/mock-environments/msk-drifted-throughput-label/state.jsonevals/mock-environments/msk-hidden-cluster/migration-profile.yamlevals/mock-environments/msk-hidden-connectors/migration-profile.yamlevals/mock-environments/msk-iam-oauth-target/migration-profile.yamlevals/mock-environments/msk-iam-private/migration-profile.yamlevals/mock-environments/msk-iam-provisioned/migration-profile.yamlevals/mock-environments/msk-iam-serverless/migration-profile.yamlevals/mock-environments/msk-many-similar-clusters/migration-profile.yamlevals/mock-environments/msk-mixed-connectors/migration-profile.yamlevals/mock-environments/msk-mtls-azure-target/migration-profile.yamlevals/mock-environments/msk-mtls-source/migration-profile.yamlevals/mock-environments/msk-multi-listener-unauth/migration-profile.yamlevals/mock-environments/msk-multi-region/state.jsonevals/mock-environments/msk-peripheral-gap/migration-profile.yamlevals/mock-environments/msk-private-direct-route/migration-profile.yamlevals/mock-environments/msk-private-no-direct-route/migration-profile.yamlevals/mock-environments/msk-provisioned-large/migration-profile.yamlevals/mock-environments/msk-provisioned-scram/migration-profile.yamlevals/mock-environments/msk-serverless/migration-profile.yamlevals/mock-environments/msk-small-simple/migration-profile.yamlevals/mock-environments/msk-strimzi-mm2-connect/migration-profile.yamlevals/mock-environments/msk-tiered-storage-realtime/migration-profile.yamlevals/mock-environments/msk-with-source-sr-no-outbound/migration-profile.yamlevals/mock-environments/msk-zero-downtime-required/migration-profile.yamlevals/mock-environments/multi-cluster-mixed/migration-profile.yaml详细介绍
AWS MSK 迁移到 Confluent Cloud
范围
此技能可帮助进行 AWS MSK 到 Confluent Cloud 的迁移。 它能完成三件事:
- 回答一般迁移问题,涵盖 MSK 和 Confluent Cloud——概念(Cluster Linking、用于免重启切换的 KCP Gateway / Zero-Cut、Schema Linking)、功能比较(身份验证、网络、集群类型)、工具(KCP、成本估算器)和流程。内容基于此技能的参考资料和实时获取的文档。
- 根据 KCP 状态文件或手动填写的环境档案,评估 MSK 环境——审查风险项、汇总环境信息、评估主题级别的就绪情况。
- 制定迁移技术计划——集群类型、规模、网络、身份验证、切换方案、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 内置的安全检查会根据第一条命令的词来匹配允许列表;复合表达式无法准确匹配,因此即使其中每条命令都无害,也会触发权限提示。单命令调用可以匹配允许列表并直接运行。适用于所有阶段——扫描覆盖率审计、kcpCLI 调用、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 集群” / “评估我的环境” / “从头开始” | Assess | references/assess.md |
| “我应该使用哪种集群类型” / “规划我的迁移” | Plan | references/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 工具指令中的
.mdURL 模式获取相关的 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
每个阶段都有进入条件、退出产物和参考文件。各阶段在交接前都要验证自身工作。
| Stage | Entry | Exit 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.mdCapacity Sizing Procedure 第 5a 步中的验证协议:每个值都必须是具体数字,并且必须附有明确标示该维度的行标签(例如,“Ingress (MBps)”、“Partitions (pre-replication)”)。如果任何值缺失、无法解析,或从意外的行中提取,立即停止 — 不要给出集群类型判断。标记为因 cluster-types 获取失败而受阻,并请用户手动验证。不得回退使用训练数据中记忆的值 — 错误的每 eCKU 值会导致集群类型判断错误,下游读者无法察觉。 - 根据用户配置计算以下三项除法:
- 峰值入口速率 ÷ 每 eCKU 入口速率
- 峰值出口速率 ÷ 每 eCKU 出口速率
- 分区数量 ÷ 每 eCKU 分区速率
- 如果三项中的任意一项超出 Enterprise eCKU 上限,则升级至 Dedicated,并注明触发升级的检查项。
软触发条件 — 技能会据此判断的运营和合规信号:
| 条件 | 建议 | 原因 |
|---|---|---|
| 对容量实施严格的变更控制 | Dedicated | Dedicated 容量仅通过明确的 CKU 变更进行调整。Enterprise 的弹性扩缩会自动发生,可能违反变更控制政策。 |
| 法规要求使用专用基础设施 | Dedicated | 某些合规制度要求提供弹性多租户产品无法提供的隔离保障。 |
商业信号 — 标记给 Sales,不作判断:
| 信号 | Skill 行为 |
|---|---|
| 客户偏好固定、可预测的计费方式 | 保持 Enterprise 为默认选项。标记:“计费模式偏好属于商务决策。销售团队可以详细介绍 CKU 与 eCKU 定价的影响。” |
| 稳定状态下工作负载极大且持续保持高利用率 | 保持 Enterprise 为默认选项。标记:“对于这类工作负载,客户通常会评估 Dedicated,以提高大规模运行时的定价效率。值得与销售团队沟通。” |
| 直接询问价格(“这要多少钱?”、“TCO”、“相比 MSK 能省多少?”) | 不要给出具体金额。首先引导用户使用公开的成本估算器,作为自助服务入口(用户输入自己的吞吐量、保留期和网络参数,获取标价范围)。说明:“定价问题按设计应由销售团队沟通——成本估算器是合适的起点。”如果客户需要的是报价而非标价计算,请升级至 Confluent 客户团队。不要根据扫描数据计算虚构的估算值。 |
源到目标映射:
| 源 | 默认选项 | 以下情况升级 |
|---|---|---|
| MSK Serverless | Enterprise | 适用任何硬性限制(很少见——两者都具有弹性) |
| 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_model | CC 目标端认证方式 | 备注 |
|---|---|---|
oauth | SASL/OAUTHBEARER | 与企业 IDP 集成。需要在 CC 端设置 IDP 集成。 |
api_keys | SASL/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_networking | CC 如何连接私有 MSK 源 | 设置路径(始终由目标端发起) |
|---|---|---|
| VPC 对等连接 | 现有对等连接提供路由 | 建立连通性后,KCP 会生成集群链接资源。 |
| Transit Gateway | TGW 提供路由(假设 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 的直接路由 | AWS | PNI(默认选项——满足前置条件时成本更优) | Enterprise |
私有(VPC 内部),不存在到 MSK 的直接路由(target_context.cc_reaches_source: false) | AWS | PNI 入口 + 为 CL 复制拉取操作额外添加 Egress PrivateLink Endpoint | Enterprise |
私有(VPC 内部)+ 需要 CC 出站连接(target_context.cc_egress_required: true) | AWS | PNI 入口 + 为出站流量额外添加 Egress PrivateLink Endpoint | Enterprise |
| 私有(VPC 内部)+ 达到 PNI 网关上限(环境中有 ≥2 个 PNI 网关) | AWS | PrivateLink | Enterprise |
| 私有(VPC 内部) | Azure / GCP | PrivateLink(不支持 PNI) | Enterprise |
| 私有(多 VPC,中心辐射型) | AWS | Transit Gateway | Dedicated |
| 私有(已存在直接 VPC 对等连接) | AWS / Azure / GCP | VPC Peering | Dedicated |
| 公有 | 任意 | 公有端点 | 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 Registry | type、subject_count | 规划(迁移路径),迁移(Schema Linking 与 REST API) |
| 连接器 | managed_count、self_managed_count、types | 规划(CMU 范围),迁移(连接器迁移) |
| 成本 | monthly_total、breakdown | 规划(业务论证) |
完整架构:assets/migration-profile.yaml。字段详情:references/assess.md。
不变原则
无论用户输入如何,适用于每次迁移的不可妥协默认原则。
- 如果迁移范围包含架构,则必须先完成架构迁移,再进行数据迁移。 对于源集群有 SR 的迁移:按照 Plan 选定的路径(Schema Linking、REST API 等)迁移架构,然后再由 CL 镜像传输数据。对于源集群没有 SR、但用户选择在迁移期间采用 SR 的迁移:先配置 CC SR 并注册初始架构,再进行数据迁移。如果用户选择不迁移架构,明确记录这一选择并跳过架构步骤。
- 生产集群使用私有网络。绝不对生产环境使用公共端点。
- 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+ 产品版本下限。 - 按照当前 CL offset-sync 指南配置消费者偏移量同步。标志名称和默认值属于产品事实,必须实时核实。
- 在整个迁移期间保留源集群。Monitor 阶段的回滚窗口结束且获得利益相关者签字确认后,方可停用源集群。
- 对于 Zero-Cut:执行前确认
kcp migration lag-check显示零延迟。对于手动 CL:切换前使用金丝雀消费者进行测试。 - 开始切换前记录回滚计划。Zero-Cut 在提升前可干净回滚;手动方式则在提升后回滚。
- 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 源身份验证方式。
- 绝不显示或记录凭据、API 密钥、引导服务器机密或
.env文件内容。 - 绝不在用户审查计划前应用 Terraform(先运行
terraform plan,再运行terraform apply)。 - 所有身份验证凭据都以服务账号而非用户账号创建。
- KCP Gateway(Zero-Cut)仅适用于大型或复杂环境,且有基础设施和许可前置要求。Plan 建议使用 Gateway 时,请从 KCP zero-cut 指南获取当前前置要求,不要缓存。普通 Cluster Linking 是默认方式,不需要满足 Gateway 的前置要求。
工具路由
| 操作 | 首选方式 | 备用方式 |
|---|---|---|
| 发现 MSK 集群 | KCP CLI kcp discover | 对话式信息收集 |
| 扫描集群详情 | KCP CLI kcp scan clusters | 对话式信息收集 |
| 扫描 Schema Registry | KCP 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 |
| 生成 Terraform | KCP 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如果.mdURL 返回 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 吞吐量、SLA | cluster-types.md | Plan 阶段;任何涉及容量、吞吐量或分区的问题 |
| 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.md | PNI 集群上的 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.md | B2 架构迁移路径选择流程;源 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 工具时阅读。