backstage~将java服务添加到backstage

要将GitHub上的Java项目添加到Backstage平台管理,您需要完成两个主要步骤:创建catalog-info.yaml文件并在Backstage中注册该组件。

添加GitHub Java项目到Backstage的步骤

  1. 在Java项目中创建catalog-info.yaml文件

    • 在项目的根目录下创建名为catalog-info.yaml的文件
    • 按照Backstage的实体格式定义您的组件信息
  2. 在Backstage UI中注册组件

    • 登录Backstage平台
    • 点击左上角的"CREATE"按钮
    • 选择"REGISTER EXISTING COMPONENT"
    • 在表单中填入catalog-info.yaml文件的GitHub URL地址(例如:https://github.com/your-org/your-java-project/blob/main/catalog-info.yaml
    • 点击"ANALYZE"和"IMPORT"完成注册

catalog-info.yaml文件定义详解

基本结构

catalog-info.yaml文件使用YAML格式,遵循Backstage的实体描述规范。一个典型的Java项目组件定义如下:

apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: your-java-service  # 组件的唯一名称
  description: 处理用户认证和授权的Java微服务  # 组件描述
  annotations:
    github.com/project-slug: your-org/your-java-project  # GitHub仓库地址
  labels:
    business-unit: engineering  # 业务单元标签
  tags:
    - java
    - spring-boot
    - microservice
spec:
  type: service  # 组件类型:service、website、library等
  lifecycle: production  # 生命周期阶段:experimental、production、deprecated
  owner: team-backend  # 负责团队
  system: order-system  # 所属系统(可选)
  domain: ecommerce-domain  # 所属领域(可选)
  providesApis:
    - default/user-auth-api  # 提供的API
  dependsOn:
    - resource:default/user-database  # 依赖的资源
    - component:default/notification-service  # 依赖的其他组件

关键字段说明

字段 说明 示例
apiVersion Backstage实体规范版本 backstage.io/v1alpha1
kind 实体类型 Component(最常用)
metadata.name 组件唯一标识符 user-profile-service
metadata.description 组件功能描述 处理用户配置文件的Java服务
metadata.annotations 自定义注解 github.com/project-slug: org/repo
spec.type 组件类型 service(服务)、website(网站)、library(库)
spec.lifecycle 生命周期阶段 experimentalproductiondeprecated
spec.owner 负责团队 team-backend(需对应Group实体)
spec.system 所属系统 payment-system(可选)
spec.domain 所属领域 finance-domain(可选)

Java项目专用配置示例

对于Java项目,您可以添加技术栈相关的标签和注解:

apiVersion: backstage.io/v1alpha1
kind: Component
metadata:
  name: order-processing-service
  description: 基于Spring Boot的订单处理微服务
  annotations:
    github.com/project-slug: company/order-service
    backstage.io/techdocs-ref: dir:./docs  # 指向技术文档目录
    jenkins.io/job-url: https://jenkins.company.com/job/order-service
  labels:
    language: java
    framework: spring-boot
    database: postgresql
  tags:
    - java-17
    - spring-boot-3.x
    - postgresql
    - kafka
spec:
  type: service
  lifecycle: production
  owner: team-ecommerce
  system: order-management-system
  providesApis:
    - default/order-api
    - default/payment-api
  dependsOn:
    - component:default/product-catalog-service
    - resource:default/order-database
    - resource:default/redis-cache

相关说明文档定义

文档入口(docs/mkdocs.yml):

site_name: Keycloak Report System Documentation
site_description: Keycloak 扩展平台文档
site_author: Engineering Team

nav:
  - 首页: index.md
  - 系统概述: overview.md
  - 功能模块:
    - 客户端会话统计: features/clients-sessions.md
    - Infinispan 缓存管理: features/infinispan-cache.md
    - URL 访问排名: features/url-ranking.md
    - 风险账号管理: features/user-limit.md
    - 所需动作管理: features/required-action.md
  - API 文档: api.md
  - 部署指南: deployment.md
  - 开发指南: development.md

plugins:
  - techdocs-core

然后可以在相应目录中添加说明文件,如features目录

相关实体定义

为了让组件完整工作,您可能还需要定义相关的Group(团队)和System(系统)实体:

团队定义示例(teams/backend-team.yaml):

apiVersion: backstage.io/v1alpha1
kind: Group
metadata:
  name: team-backend
  description: 后端开发团队
spec:
  type: team
  profile:
    displayName: Backend Team
    email: backend-team@company.com
  parent: engineering-department

系统定义示例(systems/order-system.yaml):

apiVersion: backstage.io/v1alpha1
kind: System
metadata:
  name: order-management-system
  description: 订单管理系统
spec:
  owner: team-ecommerce
  domain: ecommerce-domain

最佳实践建议

  1. 文件位置:将catalog-info.yaml文件放在项目根目录,与pom.xml或build.gradle同级
  2. 命名规范:使用kebab-case命名(如user-profile-service
  3. 注解使用:充分利用注解集成其他系统(CI/CD、监控、文档等)
  4. 依赖声明:明确声明组件间的依赖关系,便于依赖分析
  5. 生命周期管理:根据项目实际状态设置正确的lifecycle值

完成catalog-info.yaml文件编写并提交到GitHub后,Backstage会自动扫描并加载该组件,您可以在Backstage UI中查看组件的详细信息、依赖关系、文档和运行状态等。

posted @ 2026-04-16 16:57  张占岭  阅读(10)  评论(0)    收藏  举报