大家好!今天,我们将深入探讨Backstage强大功能之一——Kubernetes集成的核心组件,即Kubernetes后端插件。🚀
在云原生环境中,运营开发者门户(Backstage)时,能够一目了然地查看自己创建的服务在Kubernetes集群上如何运行(Pod状态、部署情况等)至关重要。现在,就让我们来认识一下负责这种神奇连接的主角吧!💡

🏗️ 答案就是:@backstage/plugin-kubernetes-backend ☸️
将Kubernetes资源数据集成到Backstage门户并提供API的核心后端插件就是@backstage/plugin-kubernetes-backend。
该插件在查询与每个服务(Entity)相关的实际Kubernetes资源(Pods、Deployments、Services、Ingress等)并将其传递给前端方面发挥着关键作用。
🌟 Kubernetes后端插件的核心作用
除了简单地获取数据,该插件还执行以下复杂任务:
1. 多集群数据收集 (Multi-cluster Support) 🌐
大多数企业都会运行多个Kubernetes集群,例如用于开发、预发布和生产。该插件负责连接所有配置的集群并收集相关数据。
2. 实体映射 (Service-to-Cluster Mapping) 🔗
这是最重要的功能!它将Backstage目录中注册的特定“服务”与Kubernetes上的相应“资源”进行匹配。通常,数据会根据YAML文件中设置的backstage.io/kubernetes-id标签进行过滤。
3. 认证与安全 (Authentication) 🔐
它处理Service Account令牌、集群证书或云提供商(AWS EKS、GCP GKE等)的认证方式,以安全地访问每个集群。
🛠️ 如何安装和配置?
在Backstage Monorepo结构中启用此插件的方法如下:
第一步:安装包 📦
在终端中将库添加到后端包。
Bash
yarn workspace backend add @backstage/plugin-kubernetes-backend
第二步:注册后端代码 ⚙️
根据最新的Backstage系统(New Backend System)标准,将以下内容添加到packages/backend/src/index.ts中。
TypeScript
backend.add(import('@backstage/plugin-kubernetes-backend/alpha'));
第三步:配置 app-config.yaml 📝
这是最关键的部分。您需要明确指定要连接哪些集群以及如何连接。
YAML
kubernetes:
serviceLocatorMethod:
type: 'multiTenant'
clusterLocatorMethods:
- type: 'config'
clusters:
- url: https://<apiserver-url>
name: my-cluster
authProvider: 'serviceAccount'
skipTLSVerify: false
# ... 其他认证设置
🔍 与前端的完美配合:plugin-kubernetes
如果后端插件负责获取数据,那么用户看到的华丽仪表板则由@backstage/plugin-kubernetes(前端插件)负责。🎨
- 后端: 与集群API通信以获取JSON数据。
- 前端: 根据获取的数据可视化Pod状态(运行中、错误等)并显示日志。
💡 实用技巧:为什么我的服务没有显示? 🤔
如果您安装了插件但看不到任何数据,请检查以下两点!
- 检查标签: 您的服务的Kubernetes资源(Deployment等)是否带有
backstage.io/kubernetes-id:标签? - 检查注解: Backstage
catalog-info.yaml文件中是否添加了backstage.io/kubernetes-id:注解?
这两个ID必须匹配,后端插件才能识别“啊!这个Pod属于这个服务!”✨
🏁 结论:完善基础设施可见性
@backstage/plugin-kubernetes-backend是整合碎片化基础设施信息到以开发者为中心的视图的关键工具。通过此插件,开发者无需联系基础设施部门,即可自行检查其服务状态,从而构建自助服务环境!🚀
发表回复