<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>多集群管理 on 吾爱主机</title><link>https://blog.waihost.com/tags/%E5%A4%9A%E9%9B%86%E7%BE%A4%E7%AE%A1%E7%90%86/</link><description>Recent content in 多集群管理 on 吾爱主机</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 07 Jul 2026 09:06:20 +0800</lastBuildDate><atom:link href="https://blog.waihost.com/tags/%E5%A4%9A%E9%9B%86%E7%BE%A4%E7%AE%A1%E7%90%86/index.xml" rel="self" type="application/rss+xml"/><item><title>Headlamp Cluster API 插件发布：把多集群生命周期管理搬进 Kubernetes UI</title><link>https://blog.waihost.com/posts/headlamp-cluster-api-plugin-guide/</link><pubDate>Tue, 07 Jul 2026 09:06:20 +0800</pubDate><guid>https://blog.waihost.com/posts/headlamp-cluster-api-plugin-guide/</guid><description>&lt;img src="https://blog.waihost.com/images/covers/headlamp-cluster-api-plugin-guide.svg" alt="Featured image of post Headlamp Cluster API 插件发布：把多集群生命周期管理搬进 Kubernetes UI" /&gt;&lt;p&gt;6 月下旬 Kubernetes 官方博客介绍了 &lt;strong&gt;Headlamp Cluster API 插件&lt;/strong&gt;：它把 Cluster API（CAPI）的集群、机器、控制平面和拓扑关系搬到 Headlamp 的图形界面里。对平台工程团队来说，这不是“再做一个 Kubernetes Dashboard”，而是把原本需要在多个 &lt;code&gt;kubectl&lt;/code&gt; 命令、YAML、OwnerReference 和 Condition 之间来回切换的多集群排障流程，整理成更接近日常运维视角的可视化工作台。&lt;/p&gt;
&lt;p&gt;本文基于 Kubernetes 官方博客、Cluster API 官方文档、Headlamp 插件文档以及插件仓库 README 做多源核验，整理它解决的问题、核心能力、落地前的检查项，以及团队应该如何把它纳入现有的多集群运维流程。&lt;/p&gt;
&lt;h2 id="背景cluster-api-强在声明式弱在人工排障体验"&gt;&lt;a href="#%e8%83%8c%e6%99%afcluster-api-%e5%bc%ba%e5%9c%a8%e5%a3%b0%e6%98%8e%e5%bc%8f%e5%bc%b1%e5%9c%a8%e4%ba%ba%e5%b7%a5%e6%8e%92%e9%9a%9c%e4%bd%93%e9%aa%8c" class="header-anchor"&gt;&lt;/a&gt;背景：Cluster API 强在声明式，弱在人工排障体验
&lt;/h2&gt;&lt;p&gt;Cluster API 是 Kubernetes SIG Cluster Lifecycle 下的项目，目标是用 Kubernetes 风格的 API 和控制器来管理 Kubernetes 集群生命周期。简单说，平台团队可以把“创建集群、升级控制面、扩缩容节点、替换机器模板”等动作表达成 Kubernetes 资源，让管理集群里的控制器去持续调谐。&lt;/p&gt;
&lt;p&gt;典型资源包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Cluster&lt;/code&gt;：描述一个工作负载集群；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Machine&lt;/code&gt;、&lt;code&gt;MachineSet&lt;/code&gt;、&lt;code&gt;MachineDeployment&lt;/code&gt;：描述节点及其副本关系；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KubeadmControlPlane&lt;/code&gt;：描述基于 kubeadm 的控制平面；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KubeadmConfig&lt;/code&gt;：描述节点初始化或加入集群的 bootstrap 配置；&lt;/li&gt;
&lt;li&gt;各云厂商或虚拟化平台的 Infrastructure Provider 资源。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种模式的优点是自动化和可复现，但真实排障时仍然会遇到几个痛点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;关系链长&lt;/strong&gt;：一个集群问题可能同时涉及 Cluster、ControlPlane、MachineDeployment、MachineSet、Machine、BootstrapConfig、InfrastructureMachine 等资源。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;状态分散&lt;/strong&gt;：健康度通常藏在 &lt;code&gt;status.conditions&lt;/code&gt;、副本数字、事件、Provider 资源状态中。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;命令切换频繁&lt;/strong&gt;：排查时经常要反复执行 &lt;code&gt;kubectl get&lt;/code&gt;、&lt;code&gt;kubectl describe&lt;/code&gt;、&lt;code&gt;kubectl get -o yaml&lt;/code&gt;，再靠人工拼 OwnerReference。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;新成员学习成本高&lt;/strong&gt;：不了解 CAPI 资源层级的人，很难快速判断“是控制面问题、节点问题、模板问题，还是 Provider 问题”。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Headlamp Cluster API 插件瞄准的正是这个体验层缺口。&lt;/p&gt;
&lt;h2 id="这次插件带来了什么"&gt;&lt;a href="#%e8%bf%99%e6%ac%a1%e6%8f%92%e4%bb%b6%e5%b8%a6%e6%9d%a5%e4%ba%86%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;这次插件带来了什么
&lt;/h2&gt;&lt;p&gt;根据 Kubernetes 官方博客和插件 README，这个插件会在 Headlamp 中新增一个专门的 &lt;strong&gt;Cluster API&lt;/strong&gt; 区域，并围绕 CAPI 资源提供列表页、详情页、仪表盘和关系图。&lt;/p&gt;
&lt;h3 id="1-集群总览与健康仪表盘"&gt;&lt;a href="#1-%e9%9b%86%e7%be%a4%e6%80%bb%e8%a7%88%e4%b8%8e%e5%81%a5%e5%ba%b7%e4%bb%aa%e8%a1%a8%e7%9b%98" class="header-anchor"&gt;&lt;/a&gt;1. 集群总览与健康仪表盘
&lt;/h3&gt;&lt;p&gt;插件提供集中化的 Cluster API Dashboard，用于汇总：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cluster、Machine、MachineDeployment、MachinePool、MachineSet、ControlPlane 的状态；&lt;/li&gt;
&lt;li&gt;控制面与工作节点副本数；&lt;/li&gt;
&lt;li&gt;Provider、配置模板、资源健康情况；&lt;/li&gt;
&lt;li&gt;当前存在的 Condition 异常与修复提示。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对平台团队来说，仪表盘的价值不是取代告警系统，而是把“告警之后进入问题现场”的第一屏做得更清楚。过去你可能需要先列出所有资源，再逐层查看；现在可以先从 Dashboard 判断故障落在哪个层级。&lt;/p&gt;
&lt;h3 id="2-machine-体系的可视化"&gt;&lt;a href="#2-machine-%e4%bd%93%e7%b3%bb%e7%9a%84%e5%8f%af%e8%a7%86%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;2. Machine 体系的可视化
&lt;/h3&gt;&lt;p&gt;插件为 &lt;code&gt;MachineDeployment&lt;/code&gt;、&lt;code&gt;MachineSet&lt;/code&gt;、&lt;code&gt;Machine&lt;/code&gt; 和 &lt;code&gt;MachinePool&lt;/code&gt; 提供专门视图，展示副本、版本、Owner 关系、Provider ID、Condition 等信息。&lt;/p&gt;
&lt;p&gt;这对节点扩缩容和滚动升级尤其有用。例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get machinedeployments.cluster.x-k8s.io -A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get machines.cluster.x-k8s.io -A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl describe machine &amp;lt;machine-name&amp;gt; -n &amp;lt;namespace&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这些命令仍然是自动化和深度排障的基础，但图形界面能更快暴露：哪个 MachineDeployment 没有达到期望副本数，哪些 Machine 没 Ready，资源之间的归属关系是否符合预期。&lt;/p&gt;
&lt;h3 id="3-直接从-ui-扩缩容"&gt;&lt;a href="#3-%e7%9b%b4%e6%8e%a5%e4%bb%8e-ui-%e6%89%a9%e7%bc%a9%e5%ae%b9" class="header-anchor"&gt;&lt;/a&gt;3. 直接从 UI 扩缩容
&lt;/h3&gt;&lt;p&gt;官方博客提到，插件支持对 MachineDeployments 和 MachineSets 执行 Scale 操作。也就是说，日常节点池扩缩容可以在 Headlamp 中完成，而不必每次手写 &lt;code&gt;kubectl scale&lt;/code&gt; 或修改 YAML。&lt;/p&gt;
&lt;p&gt;但这里要注意两点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果集群是 ClusterClass / topology 管理的，扩缩容入口可能应当在更高层级，而不是直接改底层 MachineSet；&lt;/li&gt;
&lt;li&gt;UI 操作必须受 RBAC 控制，生产环境应限制谁能调整节点池规模。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;建议团队把 UI 操作视为“人工运维入口”，而不是绕过 GitOps 的捷径。如果集群资源已经由 GitOps 管理，仍应优先从 Git 仓库修改声明式配置，Headlamp 用于观察和紧急诊断。&lt;/p&gt;
&lt;h3 id="4-kubeadmconfig-结构化查看"&gt;&lt;a href="#4-kubeadmconfig-%e7%bb%93%e6%9e%84%e5%8c%96%e6%9f%a5%e7%9c%8b" class="header-anchor"&gt;&lt;/a&gt;4. KubeadmConfig 结构化查看
&lt;/h3&gt;&lt;p&gt;在 CAPI 排障中，bootstrap 配置经常决定节点能不能正确加入集群。插件提供了对 KubeadmConfig 的结构化视图，可以查看文件、kubelet 参数、join/init 设置等内容。&lt;/p&gt;
&lt;p&gt;这比直接阅读大段 YAML 更适合快速排查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;kubelet 参数是否和集群版本匹配；&lt;/li&gt;
&lt;li&gt;bootstrap 文件是否缺失；&lt;/li&gt;
&lt;li&gt;join 配置是否指向正确控制面；&lt;/li&gt;
&lt;li&gt;是否存在模板更新但 Machine 未滚动的情况。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不过，结构化 UI 只能提升阅读效率，不能代替对敏感字段的权限治理。涉及 kubeconfig、证书、Token 的资源仍要按最小权限原则配置访问范围。&lt;/p&gt;
&lt;h3 id="5-map-view把-ownerreference-变成关系图"&gt;&lt;a href="#5-map-view%e6%8a%8a-ownerreference-%e5%8f%98%e6%88%90%e5%85%b3%e7%b3%bb%e5%9b%be" class="header-anchor"&gt;&lt;/a&gt;5. Map View：把 OwnerReference 变成关系图
&lt;/h3&gt;&lt;p&gt;CAPI 的核心难点之一是资源关系。Headlamp 的 Map View 可以显示 Cluster、ControlPlane、Worker 等资源之间的关系，让平台工程师不必手工追踪 OwnerReference。&lt;/p&gt;
&lt;p&gt;在以下场景中，关系图特别有价值：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新集群创建卡住，需要定位卡在基础设施、控制面还是工作节点；&lt;/li&gt;
&lt;li&gt;节点池升级后副本数异常，需要确认 MachineDeployment → MachineSet → Machine 的链路；&lt;/li&gt;
&lt;li&gt;Provider 资源健康但 CAPI 资源未 Ready，需要确认引用关系是否断裂；&lt;/li&gt;
&lt;li&gt;新成员学习 CAPI 架构，需要直观看到对象层级。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="落地前的检查清单"&gt;&lt;a href="#%e8%90%bd%e5%9c%b0%e5%89%8d%e7%9a%84%e6%a3%80%e6%9f%a5%e6%b8%85%e5%8d%95" class="header-anchor"&gt;&lt;/a&gt;落地前的检查清单
&lt;/h2&gt;&lt;p&gt;如果你已经在用 Cluster API，可以按下面顺序评估是否引入该插件。&lt;/p&gt;
&lt;h3 id="1-确认-capi-crd-存在"&gt;&lt;a href="#1-%e7%a1%ae%e8%ae%a4-capi-crd-%e5%ad%98%e5%9c%a8" class="header-anchor"&gt;&lt;/a&gt;1. 确认 CAPI CRD 存在
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get crd &lt;span class="p"&gt;|&lt;/span&gt; grep cluster.x-k8s.io
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get clusters.cluster.x-k8s.io -A
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get machines.cluster.x-k8s.io -A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果这些资源不存在，说明当前集群并不是 CAPI 管理集群，安装插件也看不到核心数据。&lt;/p&gt;
&lt;h3 id="2-确认-headlamp-部署方式"&gt;&lt;a href="#2-%e7%a1%ae%e8%ae%a4-headlamp-%e9%83%a8%e7%bd%b2%e6%96%b9%e5%bc%8f" class="header-anchor"&gt;&lt;/a&gt;2. 确认 Headlamp 部署方式
&lt;/h3&gt;&lt;p&gt;Headlamp 可以以桌面应用、集群内服务或其他方式运行。对于生产环境，建议优先明确：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;访问入口是否经过认证；&lt;/li&gt;
&lt;li&gt;是否使用 OIDC 或企业身份系统；&lt;/li&gt;
&lt;li&gt;ServiceAccount 是否按角色区分；&lt;/li&gt;
&lt;li&gt;是否允许跨命名空间查看 CAPI 资源。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Headlamp 插件机制允许扩展侧边栏、资源详情页、仪表盘和业务逻辑，因此插件能力越强，越需要认真审计安装来源与权限边界。&lt;/p&gt;
&lt;h3 id="3-按-rbac-分层授权"&gt;&lt;a href="#3-%e6%8c%89-rbac-%e5%88%86%e5%b1%82%e6%8e%88%e6%9d%83" class="header-anchor"&gt;&lt;/a&gt;3. 按 RBAC 分层授权
&lt;/h3&gt;&lt;p&gt;不要把所有 Headlamp 用户都绑定成 cluster-admin。可以按角色拆分：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;角色&lt;/th&gt;
					&lt;th&gt;建议权限&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;观察者&lt;/td&gt;
					&lt;td&gt;只读查看 Cluster、Machine、Condition、事件&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;平台运维&lt;/td&gt;
					&lt;td&gt;可扩缩容 MachineDeployment / MachineSet&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;平台管理员&lt;/td&gt;
					&lt;td&gt;可安装插件、调整 Provider、执行升级相关动作&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;只读用户可以先验证 UI 的可观察性价值；有写权限的操作应纳入审计。&lt;/p&gt;
&lt;h3 id="4-与-gitops-流程约定边界"&gt;&lt;a href="#4-%e4%b8%8e-gitops-%e6%b5%81%e7%a8%8b%e7%ba%a6%e5%ae%9a%e8%be%b9%e7%95%8c" class="header-anchor"&gt;&lt;/a&gt;4. 与 GitOps 流程约定边界
&lt;/h3&gt;&lt;p&gt;如果 CAPI 资源由 Argo CD、Flux 或内部平台生成，UI 修改可能被下一次 GitOps 同步覆盖。建议明确三条规则：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;常规变更走 Git；&lt;/li&gt;
&lt;li&gt;UI 只用于观察、诊断和经过授权的紧急操作；&lt;/li&gt;
&lt;li&gt;紧急操作后必须回写 Git，避免实际状态和声明状态长期漂移。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="一个实用排障流程示例"&gt;&lt;a href="#%e4%b8%80%e4%b8%aa%e5%ae%9e%e7%94%a8%e6%8e%92%e9%9a%9c%e6%b5%81%e7%a8%8b%e7%a4%ba%e4%be%8b" class="header-anchor"&gt;&lt;/a&gt;一个实用排障流程示例
&lt;/h2&gt;&lt;p&gt;假设某个工作负载集群扩容后节点迟迟未 Ready，可以这样组合使用 UI 与 CLI。&lt;/p&gt;
&lt;p&gt;先在 Headlamp 的 Cluster API Dashboard 查看该 Cluster 是否有异常 Condition，确认问题集中在 worker 侧还是 control plane 侧。接着打开 MachineDeployment，检查期望副本与当前副本是否一致，再进入相关 MachineSet 和 Machine 页面查看具体状态。&lt;/p&gt;
&lt;p&gt;如果 UI 显示某台 Machine 卡在 bootstrap 或 infrastructure 阶段，再回到 CLI 做深挖：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl describe machine &amp;lt;machine-name&amp;gt; -n &amp;lt;namespace&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get events -n &amp;lt;namespace&amp;gt; --sort-by&lt;span class="o"&gt;=&lt;/span&gt;.lastTimestamp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get kubeadmconfig -n &amp;lt;namespace&amp;gt; -o yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;kubectl get &amp;lt;provider-machine-resource&amp;gt; -n &amp;lt;namespace&amp;gt; -o yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样做的好处是：先用 UI 缩小范围，再用 CLI 获取完整细节。排障路径会比一开始就从所有 YAML 中搜索更短。&lt;/p&gt;
&lt;h2 id="对平台工程团队的影响"&gt;&lt;a href="#%e5%af%b9%e5%b9%b3%e5%8f%b0%e5%b7%a5%e7%a8%8b%e5%9b%a2%e9%98%9f%e7%9a%84%e5%bd%b1%e5%93%8d" class="header-anchor"&gt;&lt;/a&gt;对平台工程团队的影响
&lt;/h2&gt;&lt;p&gt;这类插件的意义不只是“好看”。它反映了 Kubernetes 平台工程的一个趋势：底层仍然保持声明式 API 和控制器模式，上层则需要更贴近人类操作习惯的可视化、关系图和上下文导航。&lt;/p&gt;
&lt;p&gt;对团队来说，可以预期三类收益：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;降低 CAPI 学习成本&lt;/strong&gt;：新成员更容易理解 Cluster、Machine、ControlPlane 的关系；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缩短人工排障路径&lt;/strong&gt;：状态聚合和 Map View 能减少重复命令；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提升操作一致性&lt;/strong&gt;：常见动作如扩缩容被封装在界面中，减少手写 YAML 出错。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同时，也要警惕两类风险：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;权限放大&lt;/strong&gt;：可视化工具一旦具备写操作，就必须严控 RBAC；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;流程分叉&lt;/strong&gt;：UI 操作和 GitOps 声明式配置可能产生漂移，需要制度约束。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="总结"&gt;&lt;a href="#%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;总结
&lt;/h2&gt;&lt;p&gt;Headlamp Cluster API 插件把 CAPI 的资源层级、健康状态、扩缩容动作和拓扑关系集中到 Kubernetes UI 中，适合已经使用 Cluster API 的平台团队试用。它不会替代 &lt;code&gt;kubectl&lt;/code&gt;、GitOps 或告警系统，但能成为告警之后的第一诊断入口，让多集群生命周期管理从“读 YAML 拼关系”逐步走向“看状态、看关系、再深入验证”。&lt;/p&gt;
&lt;p&gt;如果你的团队正在推进 CAPI、多云集群或自助式集群交付，建议先在测试环境启用该插件，以只读方式验证 Dashboard、资源详情页和 Map View 的价值，再逐步开放扩缩容等写操作。&lt;/p&gt;
&lt;h2 id="参考资料"&gt;&lt;a href="#%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99" class="header-anchor"&gt;&lt;/a&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Kubernetes 官方博客：Introducing the Cluster API plugin for Headlamp（2026-06-25） &lt;a class="link" href="https://kubernetes.io/blog/2026/06/25/headlamp-cluster-api-plugin/" target="_blank" rel="noopener"
 &gt;https://kubernetes.io/blog/2026/06/25/headlamp-cluster-api-plugin/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cluster API 官方文档：Introduction &lt;a class="link" href="https://cluster-api.sigs.k8s.io/introduction" target="_blank" rel="noopener"
 &gt;https://cluster-api.sigs.k8s.io/introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Headlamp 官方文档：Plugins &lt;a class="link" href="https://headlamp.dev/docs/latest/development/plugins/" target="_blank" rel="noopener"
 &gt;https://headlamp.dev/docs/latest/development/plugins/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Headlamp 插件仓库：Cluster API Plugin README &lt;a class="link" href="https://github.com/headlamp-k8s/plugins/blob/main/cluster-api/README.md" target="_blank" rel="noopener"
 &gt;https://github.com/headlamp-k8s/plugins/blob/main/cluster-api/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>