Backstage与Kubernetes的相遇:Kubernetes后端插件完整指南

大家好!今天,我们将深入探讨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状态(运行中、错误等)并显示日志。

💡 实用技巧:为什么我的服务没有显示? 🤔

如果您安装了插件但看不到任何数据,请检查以下两点!

  1. 检查标签: 您的服务的Kubernetes资源(Deployment等)是否带有backstage.io/kubernetes-id: 标签?
  2. 检查注解: Backstage catalog-info.yaml文件中是否添加了backstage.io/kubernetes-id: 注解?

这两个ID必须匹配,后端插件才能识别“啊!这个Pod属于这个服务!”✨


🏁 结论:完善基础设施可见性

@backstage/plugin-kubernetes-backend是整合碎片化基础设施信息到以开发者为中心的视图的关键工具。通过此插件,开发者无需联系基础设施部门,即可自行检查其服务状态,从而构建自助服务环境!🚀



Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注