初探 Backstage:快速上手指南

这篇具有很好参考价值的文章主要介绍了初探 Backstage:快速上手指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

初探 Backstage:快速上手指南

坦白说,虽然我之前阅读过相关文档,但实际上从未亲自尝试运行 Backstage。我一直有种感觉,Backstage 不过是一个开发者门户而非开发者平台。上周在 分享我对平台工程的理解 后,朋友圈中有人提议我写一篇关于 Backstage 入门的文章。这激起了我的好奇心,我决定深入探究一下 Backstage 究竟是什么。

Backstage 简介

Backstage 是一个用于构建开发人员门户的开放平台,统一了所有基础设施工具、服务和文档,以创建端到端的简化开发环境,由 Spotify 开源并捐赠给 CNCF。Backstage 提供了开箱即用的几个核心功能:

软件目录

软件目录(Software Catalog)是一个集中式系统,用于跟踪生态系统中所有软件(服务、网站、库、数据管道等)的所有权和元数据。开发人员提供软件的实体信息,Backstage 根据实体的信息与已有实体建立关联,并生成最终版本的软件实体保存在目录中。

从 Backstage 仓库的软件目录示例中可以找到 多种类型的实体定义。

软件模板

软件模板 (Software Template)是一个可以帮助开发在 Backstage 中创建组件的工具。默认情况下,它能够加载代码骨架、带有变量中的模板,然后将模板发布到某些位置,例如 GitHub 或 GitLab。

技术文档

技术文档(TechDocs) 是 Spotify 自行开发的直接内置于 Backstage 中的类文档代码解决方案。开发人员在与代码一起存在的 Markdown 文件中编写文档 - 只需很少的配置即可在 Backstage 中获得一个漂亮的文档站点。

插件支持

插件支持(Plugins)Backstage 本身是一个由一组插件组成的单页面应用程序,通过插件平台开发人员可以将几乎任何类型的基础设施或软件开发工具作为 Backstage 中的功能公开。

我觉得插件是 Backstage 的最大亮点,通过 插件生态系统 极大增强的可定制性,目前 Backstage 有 5 个核心插件以及近 200 个第三方插件。

初探 Backstage:快速上手指南

要运行 Backstage 可以直接在本地运行,也可以进行容器化部署。

本地运行

为了在本地运行 Backstage,需要 NodeJS 18、yarn 1.22 和 npx 环境。以下是启动 Backstage 的步骤:

创建 Backstage App

执行下面的命令,并根据提示输入应用名创建 Backstage 应用。也可以使用 我创建的。

npx @backstage/create-app@latest

默认情况下,本地运行使用 better-sqlite3 来作为软件目录的存储。启动之前需要执行下面的命令

npm rebuild better-sqlite3

启动 Backstage

之后就可以执行 yarn dev 启动 Backstage,在浏览器中打开 http://localhost:3000 就能访问 Backstage 了。

初探 Backstage:快速上手指南

当然 Backstage 也支持数据库进行持久化,比如 PostgreSQL。可以在 app-config.yaml 中,将数据库配置为下面:

backend:
  database:
    # client: better-sqlite3
    # connection: ':memory:'  
    client: pg
    connection:
      host: ${POSTGRES_SERVICE_HOST}
      port: ${POSTGRES_SERVICE_PORT}
      user: ${POSTGRES_USER}
      password: ${POSTGRES_PASSWORD}

修改配置后,添加环境变量并重新执行命令。

export POSTGRES_SERVICE_HOST=127.0.0.1 
export POSTGRES_SERVICE_PORT=5432 
export POSTGRES_USER= backstage 
export POSTGRES_PASSWORD=backstage
yarn dev

添加软件实体

我在已有的一个 Java 项目中,添加了 catalog-info.yaml 并添加了软件实体信息。

初探 Backstage:快速上手指南

在软件目录的页面上依次点击 CREATEREGISTER EXISTING COMPONENT,在表单中填入上面的 catalog-info.yaml 的地址 https://github.com/addozhang/tekton-demo/blob/main/catalog-info.yaml,然后点击 ANALYZEIMPORT

此时就可以看到导入的实体信息以及根据信息创建的组件关系。

初探 Backstage:快速上手指南

除了展示软件的信息,我们希望对项目进行构建。我提前为其添加了一个 GitHub 工作流,接下来看看如何在 Backstage 上进行构建。

配置 CI/CD

此时如果打开 CI/CD 卡片,可以弹窗要求对 Backstage 进行授权允许其访问 GitHub 仓库。由于配置认证提供这,会看到如下错误。

初探 Backstage:快速上手指南

在 GitHub 开发者设置 中填入信息创建一个应用:

  • 应用程序名称:Backstage(或者其他名字)
  • 主页网址:http://localhost:3000
  • 授权回调 URL:http://localhost:7007/api/auth/github/handler/frame

创建成功后,可以获取 CLIENT_IDCLIENT_SECRET

修改 Backstage 的配置文件 app-config.yaml,添加配置:

auth:
  environment: development
  providers:
    github:
      development:
        clientId: ${AUTH_GITHUB_CLIENT_ID}
        clientSecret: ${AUTH_GITHUB_CLIENT_SECRET}

其中

export POSTGRES_SERVICE_HOST=127.0.0.1 
export POSTGRES_SERVICE_PORT=5432 
export POSTGRES_USER= backstage 
export POSTGRES_PASSWORD=backstage
export AUTH_GITHUB_CLIENT_ID=e1c1fc80ec2014c91543
export AUTH_GITHUB_CLIENT_SECRET=0641e5e5af60c485a03f19f8bf63218d06ab7876
yarn dev

初探 Backstage:快速上手指南

Kubernetes 上运行

首先要有个 K8s 集群。在 Kubernetes 上我们这次使用 PostgreSQL 作为持久化存储。

kubectl create namespace backstage

部署 PostgreSQL

创建 Secret 用于配置 PostgreSQL 的认证信息。

kubectl apply -n backstage -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: postgres-secrets
type: Opaque
data:
  POSTGRES_USER: YmFja3N0YWdl
  POSTGRES_PASSWORD: YmFja3N0YWdl
EOF

使用本地磁盘创建 PVC 和 PVC。

kubectl apply -n backstage -f - <<EOF
apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgres-storage
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 2G
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: '/mnt/data'
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-storage-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2G
EOF

部署 PostgreSQL。

kubectl apply -n backstage -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: backstage
spec:
  replicas: 1
  selector:
    matchLabels:
      app: backstage
  template:
    metadata:
      labels:
        app: backstage
    spec:
      containers:
        - name: backstage
          image: addozhang/backstage
          imagePullPolicy: Always
          ports:
            - name: http
              containerPort: 7007
          envFrom:
            - secretRef:
                name: postgres-secrets
            - secretRef:
                name: github-oauth-secrets          
---
apiVersion: v1
kind: Service
metadata:
  name: backstage
spec:
  selector:
    app: backstage
  ports:
    - name: http
      port: 80
      targetPort: http
EOF

配置 GitHub OAuth 认证信息

kubectl apply -n backstage -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: github-oauth-secrets
type: Opaque
data:
  AUTH_GITHUB_CLIENT_ID: <CLIENT_ID base64>
  AUTH_GITHUB_CLIENT_SECRET: <CLIENT_SECRET base64>
EOF

部署 Backstage

kubectl apply -n backstage -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: backstage
spec:
  replicas: 1
  selector:
    matchLabels:
      app: backstage
  template:
    metadata:
      labels:
        app: backstage
    spec:
      volumes:
        - name: config-volume
          configMap:
            name: bs-app-config
            items:
              - key: "app-config.production.yaml"
                path: "app-config.production.yaml"
      containers:
        - name: backstage
          image: addozhang/backstage:latest
          imagePullPolicy: Always
          ports:
            - name: http
              containerPort: 7007
          envFrom:
            - secretRef:
                name: github-oauth-secrets
            - secretRef:
                name: postgres-secrets
---
apiVersion: v1
kind: Service
metadata:
  name: backstage
spec:
  selector:
    app: backstage
  ports:
    - name: http
      port: 80
      targetPort: http
EOF

访问 Backstage 页面 http://localhost:7077

kubectl port-forward --namespace=backstage svc/backstage 7007:80

总结

通过这篇文章,我们了解了 Backstage 的基本概念和如何在不同环境中运行它。

我认为,Backstage 更适合被定义为一个开发者门户而不是一个全面的开发者平台。它本质上是一个灵活的框架,而非一个即开即用的全套解决方案。为了充分发挥其潜力,平台团队需要深入了解开发人员的需求,并通过引入或开发专门的插件来定制 Backstage,从而实现真正的自服务能力。

此外,Backstage 并不意味着要取代 DevOps。事实上,DevOps 更多是一种文化和实践理念,而非具体的工具。Backstage 的框架加插件的组合方式,实际上是为了解决 DevOps 实践中遇到的具体挑战,尤其是在其落地实施的最后阶段。

总之,Backstage 为开发者提供了一个强大而灵活的工具集,通过集成多样的功能和服务,帮助团队更好地实现 DevOps 理念,提升开发效率和项目管理的效能。

关注"云原生指北"公众号
初探 Backstage:快速上手指南
(转载本站文章请注明作者和出处乱世浮生,请勿用于任何商业用途)文章来源地址https://www.toymoban.com/news/detail-825235.html

到了这里,关于初探 Backstage:快速上手指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vite与Vue 3快速上手指南

    Vite是一个由Evan You(Vue的创始人)开发的快速开发工具,用于构建现代化的Web应用程序。它具有快速的冷启动时间和实时模块热重载功能,使得开发者能够更快地开发和调试应用程序。 Vue 3是Vue.js的最新版本,它引入了许多新的特性和改进。其中最重要的是Composition API,它允

    2024年04月26日
    浏览(21)
  • IntelliJ IDEA 快速上手与高效开发指南

    启动 IntelliJ IDEA 打开 IntelliJ IDEA,您将看到欢迎界面。这里您可以选择创建新项目、打开现有项目、从版本控制系统中导入项目等。 创建新项目 在欢迎界面选择 \\\"Create New Project\\\"。 选择项目类型(如 Maven、Gradle 等)。 选择 SDK(如 JDK)。 指定项目名称和位置。 根据需要配置

    2024年04月12日
    浏览(33)
  • 深入浅出Docker:Java开发者的快速上手指南

    在今天的软件开发环境中,Docker已经成为了一种常见的开发和部署工具。无论你是前端开发者、后端开发者,还是DevOps工程师,理解并掌握Docker都将成为你所必须的技能。对于Java开发者来说,使用Docker可以极大地提高你的生产力。那么,如何使用Docker来部署Java应用呢?本文

    2024年02月07日
    浏览(39)
  • 快速上手Webpack打包指南:用简单的步骤掌握Webpack的使用技巧

    Webpack的打包过程可以总结为以下几个步骤: 1.入口点配置:在Webpack的配置文件中,我们需要指定一个或多个入口点(entry points),这些入口点是我们应用程序的起点,Webpack会从这些入口点开始分析和构建依赖关系。 2.模块解析:Webpack会根据入口点的依赖关系图,递归地解析

    2024年02月15日
    浏览(45)
  • git入门指南:新手快速上手git(Linux环境如何使用git)

    目录  前言 1. 什么是git? 2. git版本控制器 3. git在Linux中的使用 安装git 4. git三板斧 第一招:add 第二招:commit 第三招:push 5. 执行状态 6. 删除 总结           Linux的基本开发工具介绍完毕,接下来介绍一下Linux环境下如何使用git,以及git到底是什么?它和gitee和github之间有

    2024年02月03日
    浏览(46)
  • Ficow 的 AI 平台快速上手指南(ChatGPT, NewBing, ChatGLM-6B, cursor.so)

      本文首发于 Ficow Shen\\\'s Blog,原文地址: Ficow 的 AI 平台快速上手指南(ChatGPT, NewBing, ChatGLM-6B, cursor.so)。   前言 OpenAI —— ChatGPT 微软 —— NewBing 智谱AI —— ChatGLM-6B AI生成代码 —— cursor.so 总结     现在各种AI工具大爆发,赶紧跟上大部队,看下这波浪潮是什么状况吧。 传

    2023年04月09日
    浏览(32)
  • 无需魔法!Slack能免费使用MidJourney啦;提示工程师最全求职手册;ChatGPT插件最新清单;MidJourney快速上手指南 | ShowMeAI日报

    👀 日报周刊合集 | 🎡 生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! MidJorney 是目前最受欢迎的AI绘图工具之一,可以根据用户输入的文本提示词,生成高质量图片。Slack 是一款企业内部通信工具,可以轻松集成很多第三项服务,比如 Notion、Claude、GitHub、Trello 等。

    2024年02月09日
    浏览(35)
  • 本地资源检测 自定义规则 零基础上手指南

    本地资源检测 是UWA推出的、面向于静态资源的全量分析。可以全面自动检测项目静态工程内各项资源、代码和设置,能够帮助项目组制定合理的资源与代码标准,及时发现潜在的性能问题和异常错误,建立有效的开发规范。 其中“自定义规则”功能特别获得了开发者的好感

    2024年02月13日
    浏览(34)
  • AnalyticDB for PostgreSQL 实时数据仓库上手指南

    2019-04-016601 版权 本文涉及的产品 云原生数据仓库 ADB PostgreSQL,4核16G 50GB 1个月 推荐场景: 构建的企业专属Chatbot 立即试用 简介:  AnalyticDB for PostgreSQL 提供企业级数据仓库云服务,基于开源Greenplum构建,采用MPP架构,支持1000+节点PB级数据的实时分析。 云数据库AnalyticDB for

    2024年02月01日
    浏览(29)
  • Linux下的编辑器——vim的简单上手指南

    前言: 本章主要内容有认识与学习 Linux 环境下常用的编辑器—— vim 的三种模式与常见指令,学会如何在 Linux 下完成 C 代码的编写等等 Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为

    2024年02月13日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包