乐趣区

关于云原生:超好玩使用-Erda-构建部署应用是什么体验


作者|郑成
起源|尔达 Erda 公众号

导读:最近在 Erda 上体验了一下构建并部署一个利用,深感其 DevOps 平台的弱小与麻利,不过为了大家可能疾速上手,我尽量简化应用程序,用一个简略的返回 “Hello, World!”go web 利用来进行阐释。

Erda DOP

置信有很多和我一样的开发人员,在实现利用新性能后,不心愿将很多注意力放在运维相干的工作上(如利用的打包,构建,部署等)。我心愿平台可能屏蔽底下基础设施的简单逻辑,让我像写代码一样“申明”利用的运行过程和后果,可能不便疾速地构建部署我的利用,使我无需关怀运维方面的工作。Erda DOP 便是以利用为核心,企业一站式的 DevOps 平台,上面让咱们写一个 go web 利用,看它是如何帮忙咱们疾速进行构建部署的。

部署前筹备

  1. 在创立部署咱们的 go 利用之前,咱们须要退出或创立一个组织,并为组织增加相应的集群用于资源的治理和服务的部署运行。
  2. 在组织里创立我的项目,我的项目 (Project) 是研发运维的次要对象。
  3. 在咱们刚刚创立的我的项目下新建利用,这个利用我认为相当于 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 依照书写程序顺次执行,别离是:

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

4 个 stage 别离可用如下 Action 来执行:

  1. git-checkout
  2. golang
  3. release
  4. 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

执行流水线

  1. 进入 流水线 ,右上角点击 新建流水线
  2. 流水线任务分析实现后,处于待执行状态,右上角点击 立刻执行,开始执行构建。
  3. 流水线工作执行过程中,能够实时查看流水线各步骤的执行状态,并点击 日志 查看对应节点执行情况的日志信息。

查看利用部署后果

通过流水线构建源码,并胜利实现部署动作后,可在部署核心看到曾经胜利部署的利用实例。

点击 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/
退出移动版