超好玩:使用 Erda 构建部署应用是什么体验?
作者|郑成
来源|尔达 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 来执行:
该示例的完整 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-project/erda
- Erda Cloud 官网:https://www.erda.cloud/
超好玩:使用 Erda 构建部署应用是什么体验?的更多相关文章
- 超好玩!10款神奇的字符图案 & 词汇云生成工具
在这里,我们推荐10款惊人的字符图案生成工具.词云可以定义为词频的图形表示,而字符图案发生器是一个把数据,如文字和标签在以视觉和吸引人的方式展示的简单的工具.这些生成工具具有不同的功能,其中包括不同的 ...
- 使用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 ...
- Jenkins详细安装与构建部署使用教程(转)
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1.持续的软件版本发布 ...
- Ant + Jenkies +Tomcat 自动构建部署Web项目
前言:博主资历尚浅,很多东西都还在刚起步学习的阶段,这几天开发任务比较轻,就在自己window系统下,模拟部署远程服务器,利用Jenkies + Ant + Tomcat 搭建了一个自动发布部署的环境 ...
- Jenkins具体安装与构建部署使用教程
Jenkins是一个开源软件项目.旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins是基于Java开发的一种持续集成工具,用于监控持续反复的工作,功能包含:1.持续的软件版本号 ...
- dokcer自动化构建部署java web 基于jenkins+maven+nuxus容器
# dokcer自动化构建部署java web 基于jenkins+maven+nuxus容器 #环境centos 7.4 docker 18.03.0-ce # nuxus,创建maven本地源(可 ...
- Cocos Creator—最佳构建部署实践
这篇文章主要是我们团队在使用Cocos Creator过程中的一些关于部署方面的实践总结,标题党了一回,严格来说,应该是<快看漫画游戏研发团队使用Cocos Creator构建部署最佳实践> ...
- 使用Docker+Jenkins自动构建部署
环境 Windows 10 Docker Version 18.06.1-ce-win73 (19507) 运行jenkins 运行jenkins 容器 docker run -d --name ln ...
- Jenkins详细安装与构建部署使用教程
版权声明:本文为博主林炳文Evankaka原创文章,转载请注明出处http://blog.csdn.net/evankaka 目录(?)[+] Jenkins是一个开源软件项目,旨在提供一个开 ...
随机推荐
- Spring Cache 带你飞(一)
Spring 3.1 版本引入基于 annotation 的 cache 技术,提供了一套抽象的缓存实现方案,通过注解方式使用缓存,基于配置的方式灵活使用不同缓存组件.代码具有相当的灵活性和扩展性,本 ...
- Android Jetpack Compose 引入示例工程
引入 Jetpack Compose 示例工程 去GitHub上找到Compose的示例工程 https://github.com/android/compose-samples ,clone到本地 ...
- Nessus home版插件更新
1,进入服务器停止服务 service nessusd stop 2,进入目录执行命令获取Challenge code cd /opt/nessus/sbin/ ./nessuscli fetch - ...
- 在Express 中获取表单请求体数据
在Express 中获取表单请求体数据 获取 GET 请求参数 获取 POST 请求体数据 安装 配置 获取 GET 请求参数 Express 内置了一个 API , 可以直接通过 req.query ...
- Pytest使用pytest-html和allure生成测试报告
Pytest-html 1.安装命令pip3 install pytest-html,如下图: 执⾏后,会在当前⽬录下⽣成 ⼀个report.html的⽂件,打开后会展示详细的测试报告,执行该命令py ...
- 3D 穿梭效果?使用 UWP 也能搞定
昨天 ChokCoco 大佬搞了个 3D 穿梭效果出来,具体可见这里: 3D 穿梭效果?使用 CSS 轻松搞定 这个效果太神奇了,他还问我能不能用 WPF 搞出来,因为我完全没用过 WPF 的 3D, ...
- Python-Unittest多线程生成报告
前言 selenium多线程跑用例,这个前面一篇已经解决了,如何生成一个测试报告这个是难点,刚好在github上有个大神分享了BeautifulReport,完美的结合起来,就能生成报告了. 环境必备 ...
- dos的基本命令
打开cmd的方式 开始+系统+命令提示符 Win键+R 输入cmd打开控制台(推荐使用) 在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口 资源管理器的地址栏前面加上cmd + ...
- 如何将rabbitmq集群中的某个节点移除.
首先将要移除的节点停机. root@rabbitmq-03:~# rabbitmqctl stop Stopping and halting node 'rabbit@rabbitmq-03' ... ...
- nginx配置8081端口异常
1.为nginx配置8081端口,结果nginx报错. (nginx配置8081端口监听,通过查看日志,出现nginx: [emerg] bind() to 0.0.0.0:8081 failed ( ...