作者|郑成

来源|尔达 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 构建部署应用是什么体验?的更多相关文章

  1. 超好玩!10款神奇的字符图案 & 词汇云生成工具

    在这里,我们推荐10款惊人的字符图案生成工具.词云可以定义为词频的图形表示,而字符图案发生器是一个把数据,如文字和标签在以视觉和吸引人的方式展示的简单的工具.这些生成工具具有不同的功能,其中包括不同的 ...

  2. 使用jekins自动构建部署java maven项目(jdk1.7+tomcat7.0+jenkins2.19.3)

    1.下载jenkins 地址:https://jenkins.io/index.html 本人下载了2.19.3版本的war包:jenkins.war 2.安装jenkins 拷贝jenkins.wa ...

  3. Jenkins详细安装与构建部署使用教程(转)

    Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1.持续的软件版本发布 ...

  4. Ant + Jenkies +Tomcat 自动构建部署Web项目

    前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkies + Ant + Tomcat 搭建了一个自动发布部署的环境 ...

  5. Jenkins具体安装与构建部署使用教程

    Jenkins是一个开源软件项目.旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins是基于Java开发的一种持续集成工具,用于监控持续反复的工作,功能包含:1.持续的软件版本号 ...

  6. dokcer自动化构建部署java web 基于jenkins+maven+nuxus容器

    # dokcer自动化构建部署java web 基于jenkins+maven+nuxus容器 #环境centos 7.4 docker 18.03.0-ce # nuxus,创建maven本地源(可 ...

  7. Cocos Creator—最佳构建部署实践

    这篇文章主要是我们团队在使用Cocos Creator过程中的一些关于部署方面的实践总结,标题党了一回,严格来说,应该是<快看漫画游戏研发团队使用Cocos Creator构建部署最佳实践> ...

  8. 使用Docker+Jenkins自动构建部署

    环境 Windows 10 Docker Version 18.06.1-ce-win73 (19507) 运行jenkins 运行jenkins 容器 docker run -d --name ln ...

  9. Jenkins详细安装与构建部署使用教程

    版权声明:本文为博主林炳文Evankaka原创文章,转载请注明出处http://blog.csdn.net/evankaka   目录(?)[+]   Jenkins是一个开源软件项目,旨在提供一个开 ...

随机推荐

  1. Spring Cache 带你飞(一)

    Spring 3.1 版本引入基于 annotation 的 cache 技术,提供了一套抽象的缓存实现方案,通过注解方式使用缓存,基于配置的方式灵活使用不同缓存组件.代码具有相当的灵活性和扩展性,本 ...

  2. Android Jetpack Compose 引入示例工程

    引入 Jetpack Compose 示例工程 去GitHub上找到Compose的示例工程 https://github.com/android/compose-samples ,clone到本地 ...

  3. Nessus home版插件更新

    1,进入服务器停止服务 service nessusd stop 2,进入目录执行命令获取Challenge code cd /opt/nessus/sbin/ ./nessuscli fetch - ...

  4. 在Express 中获取表单请求体数据

    在Express 中获取表单请求体数据 获取 GET 请求参数 获取 POST 请求体数据 安装 配置 获取 GET 请求参数 Express 内置了一个 API , 可以直接通过 req.query ...

  5. Pytest使用pytest-html和allure生成测试报告

    Pytest-html 1.安装命令pip3 install pytest-html,如下图: 执⾏后,会在当前⽬录下⽣成 ⼀个report.html的⽂件,打开后会展示详细的测试报告,执行该命令py ...

  6. 3D 穿梭效果?使用 UWP 也能搞定

    昨天 ChokCoco 大佬搞了个 3D 穿梭效果出来,具体可见这里: 3D 穿梭效果?使用 CSS 轻松搞定 这个效果太神奇了,他还问我能不能用 WPF 搞出来,因为我完全没用过 WPF 的 3D, ...

  7. Python-Unittest多线程生成报告

    前言 selenium多线程跑用例,这个前面一篇已经解决了,如何生成一个测试报告这个是难点,刚好在github上有个大神分享了BeautifulReport,完美的结合起来,就能生成报告了. 环境必备 ...

  8. dos的基本命令

    打开cmd的方式 开始+系统+命令提示符 Win键+R 输入cmd打开控制台(推荐使用) 在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口 资源管理器的地址栏前面加上cmd + ...

  9. 如何将rabbitmq集群中的某个节点移除.

    首先将要移除的节点停机. root@rabbitmq-03:~# rabbitmqctl stop Stopping and halting node 'rabbit@rabbitmq-03' ... ...

  10. nginx配置8081端口异常

    1.为nginx配置8081端口,结果nginx报错. (nginx配置8081端口监听,通过查看日志,出现nginx: [emerg] bind() to 0.0.0.0:8081 failed ( ...