Devops

使用Jenkins进行持续构建与发布应用到kubernetes集群中

(题图:正午@东直门 Jun 27,2017) 本文已归档到kubernetes-handbook中的【最佳实践—使用Jenkins进行持续构建与发布】章节中,一切内容以kubernetes-handbook为准。 我们基于Jenkins的CI/CD流程如下所示。 流程说明 应用构建和发布流程说明。 用户向Gitlab提交代码,代码中必须包含Dockerfile; 将代码提交到远程仓库; 用户在发布应用时需要填写git仓库地址和分支、服务类型、服务名称、资源数量、实例个数等,确定后触发Jenkins自动构建; Jenkins的CI流水线自动编译代码并打包成docker镜像推送到Harbor镜像仓库; Jenkins的CI流水线中包括了自定义脚本,根据我们已准备好的kubernetes的YAML模板,将其中的变量替换成用户输入的选项; 生成应用的kubernetes YAML配置文件; 更新Ingress的配置,根据新部署的应用的名称,在ingress的配置文件中增加一条路由信息 更新PowerDNS,向其中插入一条DNS记录,IP地址是边缘节点的IP地址。关于边缘节点,请查看kubernetes-handbook中的【最佳实践——边缘节点配置】章节; Jenkins调用kubernetes的API,部署应用到kubernetes集群中。 关于应用的更新、滚动升级、灰度发布请留意博客中的后续文章或关注kubernetes-handbook的更新。

使用API blueprint创建API文档

在进行微服务开发的过程中,为了保证最终开发的系统跟最初的设计保持一致,约定RESTful接口之间的调用方法,我们需要将API设计文档化,因此我们引入了API Blueprint。 API Blueprint 是什么 API Blueprint 用来编写API文档的一种标记语言,类似于Markdown,因为是纯文本的,所以方便共享编辑,具体的语法规则可以在 API Blueprint documentation 查看,配合一些开源的工具可以把接口文档渲染成 html 再搭配一个静态服务器,方便于分享。 另外,配合一些工具,可以直接生成一个 mock data 数据,这样只要和后端的同学约定好接口格式,那么前端再开发的时候可以使用 mock data 数据来做测试,等到后端写好接口之后再做联调就可以了。 我们以Cloud Native Go书中的gogo-service示例里的apiary.apib文件为例。 该文件实际上是一个Markdown格式的文件,Github中原生支持该文件,使用Typora打开后是这样子。 在Visual Studio Code中有个API Element extension对于API Blueprint文件的支持也比较好。 生成静态页面和进行冒烟测试 我们分别使用开源的aglio和drakov来生成静态页面和进行冒烟测试。 aglio 是一个可以根据 api-blueprint 的文档生成静态 HTML 页面的工具。 其生成的工具不是简单的 markdown 到 html 的转换, 而是可以生成类似 rdoc 这样的拥有特定格式风格的查询文档。 在本地安装有node环境的情况下,使用下面的命令安装和使用aglio。 $ npm install -g aglio $ aglio -i apiary.apib -o api.html 打开api.html文件后,如图: 安装和使用drakov。 $ npm install -g drakov $ drakov -f apiary.