type
status
date
slug
summary
tags
category
icon
password
简介
Backstage 是一个用于构建内部开发者门户 (IDP) 的开源平台。内部开发者门户充当一站式商店,提供所有资源的统一视图。IDP 使我们能够从一个位置无缝创建、管理、监控和记录我们的软件资源。IDP 的主要目标是消除对 DevOps 与开发人员之间联系的依赖。
我想探索设置一个 GO 样板应用程序,并配备 CI/CD 管道和对 GKE 的部署,所有这些都可通过单击按钮来实现,以提高开发人员的效率。

先决条件
- 在本地搭建 Backstage
- 拥有一个具有足够信用额度来运行 GKE 的 GCP 帐户
- 集成 GitHub 身份验证与 Backstage
- 生成服务帐户密钥以从 Github Actions 部署到 GKE
深入研究
设置 GO 样板
- 在 backstage 应用程序的根目录下创建一个样板文件夹,并创建如下文件:

- catalog.info — 包含在通过模板创建的组件注册到目录后要显示的信息
- Dockerfile — 包含将应用程序容器化的脚本
- template.yaml — 包含在运行样板模板时要执行的工作流
用您自己的样板替换以下内容。
- main.go — 初始化和运行应用程序的示例代码。
- go.mod — 是运行 go mod init 和 go mod tidy 的结果。
- add.go — 包含一个示例 go 函数来添加 2 个数字。
- add_test.go — 包含用于测试单元测试管道的单元测试。
设置 Github Actions
- .github/workflows/unit-test.yaml — 每次将代码推送到 master 时运行单元测试。
- .github/workflows/deployment.yaml — 创建一个触发器,在 GKE 上部署应用程序。
- .github/manifests/deployment.yaml — kubernetes yaml 在 Kubernetes 上部署容器化应用程序。
在 Backstage 上链接 GO 应用模板
- 更新 app-config.yaml,使其在 catalog 部分包含以下内容。引用您创建的 templates 文件夹中的 template.yaml 文件。
设置 GKE 和Docker Registry
- 转到 Google Cloud 控制台。
- 浏览容器注册表,启用它并创建一个名为 backstage 的文件夹来存储 Docker 镜像。
- 浏览 Kubernetes Engine 并创建一个新集群 — 选择自动驾驶模式并使用 .github/workflows/deployment.yaml 中提到的相同设置进行配置。
- 为应用程序运行提供足够的资源和/或启用自动缩放。
测试
- 运行 yarn dev 以启动后台应用程序。
- 单击侧边栏上的创建,然后选择主页面上显示的 GO 模板。

3. 填写提示的信息并确认创建

4. 创建应用程序后,您可以在目录页面上查看应用程序,包括 ci/cd 状态。

5. 在新创建的存储库的 GitHub 操作机密中添加 SERVICE_ACCOUNT_KEY
6. 可以从 GitHub 操作视图触发 CD 管道。

摘要
该应用程序以允许您为贵公司创建符合最佳实践的 Go 样板代码的方式创建,从而无需担心设置 CI/CD 和架构。Backstage 会完全为您自动化此过程并处理所有必要的配置。