使用 Backstage 模板和 Github Action在 GKE 上开启 Go 应用脚手架
2024-2-27
| 2024-2-27
0  |  Read Time 0 min
type
status
date
slug
summary
tags
category
icon
password

简介

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

先决条件

  1. 在本地搭建 Backstage
  1. 拥有一个具有足够信用额度来运行 GKE 的 GCP 帐户
  1. 集成 GitHub 身份验证与 Backstage
  1. 生成服务帐户密钥以从 Github Actions 部署到 GKE

深入研究

设置 GO 样板

  • 在 backstage 应用程序的根目录下创建一个样板文件夹,并创建如下文件:
notion image
  • 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

  1. 转到 Google Cloud 控制台。
  1. 浏览容器注册表,启用它并创建一个名为 backstage 的文件夹来存储 Docker 镜像。
  1. 浏览 Kubernetes Engine 并创建一个新集群 — 选择自动驾驶模式并使用 .github/workflows/deployment.yaml 中提到的相同设置进行配置。
  1. 为应用程序运行提供足够的资源和/或启用自动缩放。

测试

  1. 运行 yarn dev 以启动后台应用程序。
  1. 单击侧边栏上的创建,然后选择主页面上显示的 GO 模板。
notion image
3. 填写提示的信息并确认创建
notion image
4. 创建应用程序后,您可以在目录页面上查看应用程序,包括 ci/cd 状态。
notion image
5. 在新创建的存储库的 GitHub 操作机密中添加 SERVICE_ACCOUNT_KEY
6. 可以从 GitHub 操作视图触发 CD 管道。
notion image

摘要

该应用程序以允许您为贵公司创建符合最佳实践的 Go 样板代码的方式创建,从而无需担心设置 CI/CD 和架构。Backstage 会完全为您自动化此过程并处理所有必要的配置。
 
  • backstage
  • VCluster在Kubernetes上实现成本效益高的多租户免费试用 Red Hat Developer Hub 1.0 (Backstage)
    Catalog