部署一个 Go Web 程序

着手应用部署前,请确认已完成 项目和应用创建

:::tip 提示

假设新建项目名为 base-project,新建应用名为 go-web。下文 Git 仓库地址将涉及这两个名称。

:::

准备示范代码

示范代码是一个 Golang 的简单 Web 服务,仅需输出 Hello, World! 即可。

新建文件夹并创建 main.go 文件,写入如下信息:

  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. )
  7. func handler(w http.ResponseWriter, r *http.Request) {
  8. fmt.Fprintf(w, "Hello World!")
  9. }
  10. func main() {
  11. http.HandleFunc("/", handler)
  12. log.Fatal(http.ListenAndServe(":8080", nil))
  13. }

初始化 Go 应用的包管理:

  1. go mod init github.com/erda/go-web

:::tip 提示

Erda 平台上可部署运行任意语言、任意框架开发的代码,并不局限于 Go、 Java 等。

:::

在本地初始化 Git 仓库并提交:

  1. git init
  2. git add .
  3. git commit -m "initialize"

平台基于标准的 Git 协议内置 Git 代码仓库,您无需依赖于外部仓库(例如 GitLab 等)即可完成从源码开发到部署的全流程。

进入 DevOps 平台 > 我的应用 > 选择应用 > 代码仓库 > 代码浏览 > 仓库地址,查看平台远程仓库服务器地址。

部署一个 Go Web 程序 - 图1

  1. git remote add erda https://erda-org.erda.cloud/wb/base-project/go-web
  2. git push -u erda --all
  3. git push -u erda --tags

定义流水线

为该示范代码工程添加平台配置文件 pipeline.yml 和 erda.yml。

pipeline.yml

pipeline.yml 是描述从代码编译构建到应用部署的流水线配置文件,一般可设为 4 个 Stage,按照书写顺序依次执行:

  1. 拉取 Git 源码。
  2. 基于源码编译、构建,制作 Docker 镜像。
  3. 生成版本产物。
  4. 基于版本产物完成部署。

4 个 Stage 可分别以下列 Action 执行:

  1. Git-Checkout
  2. Java
  3. Release
  4. Erda

该示例工程对应的 pipeline.yml 参考如下,更多信息请参见 pipeline.yml

  1. version: "1.1"
  2. stages:
  3. - stage:
  4. - git-checkout:
  5. alias: git-checkout
  6. - stage:
  7. - golang:
  8. alias: go-demo
  9. params:
  10. command: go build -o web-server main.go
  11. context: ${git-checkout}
  12. service: web-server
  13. - stage:
  14. - release:
  15. alias: release
  16. params:
  17. dice_yml: ${git-checkout}/dice.yml
  18. image:
  19. go-demo: ${go-demo:OUTPUT:image}
  20. - stage:
  21. - dice:
  22. alias: dice
  23. params:
  24. release_id: ${release:OUTPUT:releaseID}

erda.yml

erda.yml 用于描述应用所需的资源大小、副本数量等。

该示例工程对应的 erda.yml 参考如下,更多信息请参见 erda.yml

  1. version: "2.0"
  2. services:
  3. go-demo:
  4. ports:
  5. - port: 8080
  6. expose: true
  7. resources:
  8. cpu: 0.2
  9. mem: 512
  10. deployments:
  11. replicas: 1

提交文件

将新增的两个 YAML 文件提交至平台的代码仓库。

  1. git add .
  2. git commit -m "add pipeline.yml and dice.yml"
  3. git push erda

执行流水线

  1. 进入 流水线 页面,点击右上角 新建流水线
  2. 完成流水线任务分析后,流水线处于待执行状态。点击右上角执行图标,开始流水线构建。
  3. 流水线任务执行过程中,可实时查看流水线各步骤的执行状态,点击日志可查看对应节点执行状况的日志信息。

查看部署结果

通过流水线构建源码并完成部署后,可在部署中心查看已成功部署的应用实例 Runtime。

部署一个 Go Web 程序 - 图2

点击 master 进入应用管理,可进一步进行配置域名、服务实例扩缩容等操作。

部署一个 Go Web 程序 - 图3

复制实例 IP 地址至浏览器,加上应用服务的端口 8080 即可看到“Hello,World!”。