本文永久链接: https://www.xtplayer.cn/rancher/rancher16-webhook-auto-update/

概述

前面的文章我们有讲述了如何通过 Rancher-webhook 实现 Service/Host 的弹性伸缩。今天我们再来演示一下如何通过 Rancher-webhook 对接三方的 CI 系统,实现微服务镜像的自动构建与服务的自动升级。

PS: CI 即持续集成,包括但不限于自动编译、发布和测试、自动构建,我们这里说的 CI 系统仅限于自动构建这一步。 前面已经对 webhook 做了介绍,这里不再讲解。
本文主要基于阿里云的容器镜像服务,整个流程大致如下图所示:

基础准备

  1. 安装支持的 docker (http://rancher.com/docs/rancher/v1.6/en/hosts/#supported-docker-versions);
  2. 安装 Rancher v1.6.11 (https://hub.docker.com/u/rancher);
  3. 因为是对接云端 CI,所以 Rancher server 需要能被公网访问;
  4. 在 GitHub 创建一个 test 仓库并上传一个 Dkoerfile 文件,文件中只写 FROM busybox 一行代码;
  5. http://requestbin.net/ 创建一个 RequestBin,用于接收并查看阿里云 webhook 消息的内容;

测试服务准备

  1. 登录 Rancher WEB ,进入 应用\用户视图,新建名为 app 的测试应用栈;

  2. 给应用打上 test=true 的标签,其他参数保存默认;

    PS:这个地方的标签,是为后面通过 webhook 升级时候调取服务用,需要保证标签的唯一性,不然相同标签的服务都会被升级 测试服务已经创建好,接下来创建一条 webhook 升级策略。四、添加 webhook 接收器

  3. 通过 API 进入 webhook,点击添加接收器,配置接收器:

    名称:根据喜好填写;
    类型:选择升级服务;
    镜像仓库 Webhook 参数格式:目前可以选择阿里云或者 docker hub
    镜像标签:这个标签对应仓库中构建镜像的标签
    服务选择器标签:这里填写创建服务时填写的标签;
    其他参数保持默认
  4. 接收器创创建好后,可以点击右侧的触发地址把地址复制到其他地方备用。

创建阿里云测试镜像仓库

  1. 通过 dev.aliyun.com 登录阿里云容器服务,进入控制台,点击右上角创建镜像仓库

    ps:选择与你服务器所在的区域,镜像可以走内网下载。 找到刚刚创建的仓库,点击管理

  2. 添加一条 webhook,webhook URL 为 rancher-webhook 中复制的地址。

测试

  1. 修改并提交 test 代码仓库中的 Dockerfile 文件 在阿里云容器服务中查看构建进度

查看阿里云 webhook 的信息内容

  1. 复制 http://requestbin.net/ 中创建的 RequestBin 地址

  2. 再在阿里云云服务中添加一条 webhook

  3. 再次修改并提交 test 代码仓库中的 Dockerfile 文件,并进入 http://requestb.net 页面查看:

  4. 再对 RAW BODY 格式化: