作者|郑成
起源|尔达 Erda 公众号
导读:最近在 Erda 上体验了一下构建并部署一个利用,深感其 DevOps 平台的弱小与麻利,不过为了大家可能疾速上手,我尽量简化应用程序,用一个简略的返回 “Hello, World!”go web 利用来进行阐释。
Erda DOP
置信有很多和我一样的开发人员,在实现利用新性能后,不心愿将很多注意力放在运维相干的工作上(如利用的打包,构建,部署等)。我心愿平台可能屏蔽底下基础设施的简单逻辑,让我像写代码一样“申明”利用的运行过程和后果,可能不便疾速地构建部署我的利用,使我无需关怀运维方面的工作。Erda DOP 便是以利用为核心,企业一站式的 DevOps 平台,上面让咱们写一个 go web 利用,看它是如何帮忙咱们疾速进行构建部署的。
部署前筹备
- 在创立部署咱们的 go 利用之前,咱们须要退出或创立一个组织,并为组织增加相应的集群用于资源的治理和服务的部署运行。
- 在组织里创立我的项目,我的项目 (Project) 是研发运维的次要对象。
- 在咱们刚刚创立的我的项目下新建利用,这个利用我认为相当于 Github Repo,用来寄存咱们的应用程序和构建部署所需的申明文件。
对于更多组织, 我的项目和利用相干的常识能够点击介绍查看
当初假如咱们曾经在组织下新建了一个叫 base-project 的我的项目,并在我的项目中创立了名为 go-web 的利用,下文 git 地址将会波及到这两个名字。
筹备 go web 代码
示例代码只是一个 golang 的简略 web 服务,只须要能输入 Hello, World! 就能够了,当初新建一个文件夹并创立一个 main.go 文件,在其中写入:
package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello World!")
}
func main() {http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
初始化 go 利用的包治理:
go mod init github.com/erda/go-web
当然了,这只是我为简化应用程序写的代码,你也能够写入本人的 Go 代码(Erda 平台能够部署运行任意语言、任意框架开发的代码,并不局限于 Go / Java 等)。
而后咱们先在本地初始化 git 仓库,并进行 commit:
git init
git add .
git commit -m "initialize"
推送示范代码到 Erda 平台
平台基于规范的 Git 协定内置实现了一个 git 代码仓库,用户不须要依赖内部仓库(比方:gitlab 等)就能够实现从源码开发到部署全流程。
平台近程仓库服务器地址查看入口位于:
DevOps 平台 -> 我的项目 -> 利用 -> 代码仓库 -> 代码浏览 -> 仓库地址
git remote add erda https://erda-org.erda.cloud/wb/base-project/go-web
git push -u erda --all
git push -u erda --tags
定义流水线
对于利用开发人员来说,咱们曾经实现了新性能的开发,并且推送了咱们的代码到 Git 仓库,而后咱们心愿通过一些申明式的文件来定义如何构建咱们的利用,以及咱们的利用所需的资源、依赖的基础设施。Erda DOP 提供了两种申明式文件来达到一键部署的目标。
pipeline.yml 形容一个从代码编译构建到利用部署的流水线的配置文件,语法较为简单, 整体只有 stage / action 两级。stage 就是阶段,它用于管制串行和并行;action 则是理论的执行单位。
dice.yml 则是一个利用部署的形容文件,由服务根本信息和服务编排关系两局部组成,具体蕴含了微服务的 Docker 镜像、资源需要(CPU 和 Memory 等)、微服务之间的依赖关系、环境变量以及 AddOn 等信息,特地是 AddOn,能够让利用开发者齐全不须要关怀诸如 mysql 等的搭建过程,只须要“申明”利用依赖哪些 AddOn,平台就会主动拉起。(不过因为本次的例子绝对简略,没有对 AddOn 进行展现,有趣味的能够查看官网文档)
给该示范代码工程增加平台配置文件 pipeline.yml 和 dice.yml。
pipeline.yml
简略的实现部署,个别能够设置 4 个 stage 来组成 pipeline.yml,4 个 stage 依照书写程序顺次执行,别离是:
- 拉取 Git 源码
- 基于源码编译、构建,制作 Docker 镜像
- 生成版本产物
- 基于版本产物实现部署
4 个 stage 别离可用如下 Action 来执行:
- git-checkout
- golang
- release
- dice
该示例的残缺 pipeline.yml:
version: "1.1"
stages:
- stage:
- git-checkout:
alias: git-checkout
- stage:
- golang:
alias: go-demo
params:
command: go build -o web-server main.go
context: ${git-checkout}
service: web-server
- stage:
- release:
alias: release
params:
dice_yml: ${git-checkout}/dice.yml
image:
go-demo: ${go-demo:OUTPUT:image}
- stage:
- dice:
alias: dice
params:
release_id: ${release:OUTPUT:releaseID}
dice.yml
dice.yml 来形容咱们的利用所需的资源大小,正本数量等。
该示例的残缺 dice.yml:
version: "2.0"
services:
go-demo:
ports:
- port: 8080
expose: true
resources:
cpu: 0.2
mem: 512
deployments:
replicas: 1
提交文件
将新增的两个 yaml 文件提交至平台的代码仓:
git add .
git commit -m "add pipeline.yml and dice.yml"
git push erda
执行流水线
- 进入
流水线
,右上角点击新建流水线
。 - 流水线任务分析实现后,处于待执行状态,右上角点击
立刻执行
,开始执行构建。 - 流水线工作执行过程中,能够实时查看流水线各步骤的执行状态,并点击
日志
查看对应节点执行情况的日志信息。
查看利用部署后果
通过流水线构建源码,并胜利实现部署动作后,可在部署核心看到曾经胜利部署的利用实例。
点击 master 进入利用治理,能够进一步进行配置域名、服务实例扩缩容等操作。
查看实例 IP 地址并复制到浏览器,加上咱们应用服务的端口 8080 能够看到曾经胜利打印出“Hello,World!”。
最初
本文中应用的示例代码间接托管在了 Github 上,可间接 clone 下来应用。
以上只是通过构建部署一个 go web 利用体验了一下 Erda – DOP 的几个外围性能,Erda 还有微服务治理、多云治理平台等其它弱小的性能,且 Erda 现已开源并公布 1.0 版本,通过下方链接即可下载并疾速开始。
- Erda Github 地址:https://github.com/erda-proje…
- Erda Cloud 官网:https://www.erda.cloud/