如何在Ubuntu 14.04上使用Rancher管理Jenkins

介绍

有效的持续集成(CI)是任何成功开发团队的核心要求。由于CI不是一线服务,因此通常可以在中间层或多余硬件上运行。为拉取请求,自动部署,验收测试,内容上传以及许多其他任务添加构建可能会迅速淹没构建计算机的资源 - 尤其是在有大量提交和部署活动时即将启动。

在本文中,我们将使用Docker构建一个分布式构建系统来创建和运行我们的Jenkins映像,并使用Rancher来编排我们的Docker集群。Jenkins是最着名的开源CI解决方案之一。Docker在软件容器中会自动应用程序部署,并且Rancher为生产中的Docker管理提供了一个完整的平台。

本文介绍了基于云的Jenkins部署。但是,另一种方法是使用内部Jenkins master和云服务器,以便在需要更多资源时提供溢出容量。这就是Docker和Rancher真正闪耀的地方:Docker为我们提供了几乎相同的部署环境,Rancher让我们将来自各种云提供商或内部服务器的节点组合到一个运行在自己的VPN上的集群中。在本教程结束时,您应该能够轻松地设置具有任意数量的从属的Dockerized Jenkins部署。

先决条件

本教程将使用总共三个腾讯CVM:一个用于Rancher服务器,一个用于运行Jenkins主服务器的Rancher计算节点,另一个用于运行Jenkins从服务器的第二个Rancher计算节点。

我们将把这些腾讯CVM用的IP地址分别设为your_rancher_server_ipyour_jenkins_master_ip以及your_jenkins_slave_ip; 当您在本教程中看到这些变量,请使用适当的IP地址替换它们。

最初,我们将为Rancher服务器创建一个腾讯CVM; 稍后将介绍两个计算节点的创建。因此,要开始本教程,您将需要:

  • 一个带有Docker 1.5.0映像的Ubuntu 14.04 腾讯CVM。由于此腾讯CVM将专门用作Rancher服务器,因此您可以选择较小的腾讯CVM。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

您可以在腾讯CVM创建页面的“ 选择图像”下的“ 应用程序”选项卡中找到Docker 1.5.0映像选项。此腾讯CVM还需要自定义用户数据。要添加此项,请单击“ 可用设置”部分中的 启用用户数据”,然后在出现的文本框中输入以下脚本。此脚本告诉腾讯CVM在启动时运行Rancher服务器。

#!/bin/bash
docker run -d --name rancher-server -p 8080:8080 rancher/server

步骤1 - 配置身份验证

创建Rancher服务器之后,片刻之后您就可以通过指向 http://your_rancher_server_ip:8080/的浏览器访问其UI 。由于Rancher服务器对Internet开放,因此最好设置身份验证。在此步骤中,我们将设置基于Github OAuth的身份验证,这是Rancher目前支持的身份验证。

您将在右上角看到一条警告,其中显示未配置访问控制,后跟指向“设置”的链接。单击“设置”,然后按照其中的说明向Github注册新的应用程序,并将“客户端ID”和“机密”复制到相应的文本字段中。

完成后,单击使用Github进行身份验证,然后单击弹出窗口中的授权应用程序。完成后,页面将重新加载,设置OAuth的说明将被“ 配置授权”部分替换。添加应授予Rancher访问权限的任何其他用户和组织。如果进行任何更改,将显示一个读取保存授权配置的按钮。完成后单击它。

保存授权配置后,右上角的警告应替换为您的Github配置文件图像和项目选择菜单(最初为Default)。单击“ 默认”以打开项目选择菜单,然后单击“ 管理项目”,最后单击“ 创建项目”。添加一个名为Jenkins的项目,然后再次使用项目选择菜单选择Jenkins项目。

这将通过隔离您在Rancher上运行的各种项目来帮助保持Rancher界面整洁。如果要在同一Rancher群集上运行除Jenkins之外的其他服务,则可以创建其他项目(需要其他计算节点)。另请注意,默认项目特定于登录用户,因此如果您打算让多人访问您的Rancher代理,则不应使用默认项目。

第2步 - 注册Rancher计算节点

现在已经设置了服务器和身份验证,我们可以注册一些计算节点来运行我们的Jenkins部署。

注意:在进行身份验证之前,可以注册Rancher计算节点,而无需提供注册令牌。但是,由于我们已启用身份验证,因此所有代理都必须提供要添加到群集的注册令牌。

在Rancher UI中,单击Hosts(在左侧菜单中),然后注册一个新主机。从弹出的窗口中复制Docker run命令,然后关闭窗口。返回控制面板,使用Docker 1.5.0映像创建另外两个腾讯CVM,如Rancher服务器。如果构建是资源密集型的,您可能希望为这两个腾讯CVM选择更大的实例。

对于这两个腾讯CVM中的用户数据, 添加#!/bin/bash ,在它后面继续添加先前复制的Docker run命令。它看起来应该与此类似。

#!/bin/bash
sudo docker run -d --privileged
  -v /var/run/docker.sock:/var/run/docker.sock rancher/agent
  http://your_rancher_server_ip:8080/v1/scripts/A2DE06535002ECCAAFCD:1426622400000:iniUzPiTnjyFaXs9lCKauvoZOMQ

最后的长串数字和字母对于您的命令将是不同的。在单击注册新主机之前,请确保已选择项目,因为该令牌对于每个项目都是唯一的。

几分钟后,您应该能够在Rancher UI中看到两个Rancher计算节点。您将在下图中看到你的腾讯CVM的名字,也就是图中的RancherAgent

第3步 - 启动Jenkins主节点

我们现在准备使用官方Jenkins图像启动我们的Jenkins主节点。

要启动容器,请单击要使用的计算节点下的“ 添加容器”,然后添加以下选项:

  • 在名称旁边的文本框中使用Master作为容器名称
  • 使用jenkins作为源图像,在“ 选择图像 ”旁边的文本框中。

接下来,单击“ 端口映射”旁边的+。在两个字段中填写8080,并将TCP保留为协议。这将使我们能够访问Jenkins Web UI。再次单击+并在两个字段中添加端口50000,并将TCP保留为协议。这允许从站可以连接到主站。

接下来,单击“ 高级选项”,然后单击“ 卷”选项卡。单击“ 卷”旁边的“ +”,然后在出现的文本框中指定/var/jenkins_home。将Jenkins主目录放在卷中可以让您在重新启动容器时保留配置,并允许您使用其他容器功能中的卷备份容器。

最后,单击“ 创建”以启动Jenkins容器。

第4步 - 启动Jenkins从属节点

在这一步中,我们将启动从属Jenkins。

将浏览器指向http://your_jenkins_master_ip:8080以加载Jenkins UI。

在Jenkins UI中,通过浏览左侧的Manage Jenkins,然后在下一个菜单中的Manage Nodes,最后在最后一页的左侧浏览New Node来创建节点配置。在下一个菜单中,在节点名称旁边的文本框中输入您的从站名称(并记住它 - 我们稍后会再次需要它),选择Dumb Slave作为类型,然后单击OK

您将被重定向到包含有关此节点的详细信息的页面。对于远程根目录,请键入/var/jenkins。对于Launch method,请选择“ 通过Java Web Start启动从属代理”。您可能还希望将执行程序设置更新为高于其为1的默认值,以增加从站上允许的并行构建数。其余设置可以保留其默认值。单击“ 保存”以提交从属配置。

我们现在准备启动我们的奴隶容器了。在Rancher UI中,单击剩余计算节点上的“ 添加容器 ”,然后添加以下选项:

  • 在名称旁边的文本框中使用Slave 1作为容器名称
  • 选择图像旁边的文本框中使用usman / jenkins-slave作为源图像。

然后单击高级选项。您将从Command选项卡开始。点击+旁边的Environment Vars并添加一个名称MASTER_HOSTwyour_jenkins_master_ip的条目。再次单击+并添加另一个名为 NODE为Jenkins从属的名称的条目,该从属名称是在前面步骤的Jenkins UI 中的New Node菜单中所指定的。

接下来,单击“ volume”选项卡。单击“ volume”旁边的“ +”,然后在出现的文本框中指定/var/jenkins

最后,单击“ 创建”

jenkins-slave容器将从Jenkins的主节点下载jar文件并运行Jenkins从节点。当从属节点启动时,您应该能够在刷新管理节点页面后看到它的状态,我们在Jenkins UI中停止了这一点。您应该看到您的从属节点具有响应时间值,并且在计算机图标上没有红色X,如下所示。

结论

在本文中,我们使用Docker和Rancher设置了Jenkins CI部署。我们的Jenkins集群现在已准备好进行进一步配置和构建作业。

Docker为我们提供了运行Jenkins的一致环境,Rancher在主机之间提供网络,允许我们从Web UI管理集群,而无需手动访问Droplet或配置服务器。使用此工具集,我们可以快速地上下构建系统资源。这对于在发布等关键时刻维护不显眼的构建系统至关重要。

-更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Manage Jenkins with Rancher on Ubuntu 14.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

React Native打包

前面写了关于React的一系列入门章:http://lib.csdn.net/xiangzhihong8/5375/chart/React%20Native ...

26780
来自专栏前端人人

React多页面应用4(webpack自动化生成多入口页面)

本教程总共7篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1.React多页面应用1(webpack开发环境搭建,包...

61750
来自专栏自由而无用的灵魂的碎碎念

查看服务时提示“一个或多个ActiveX控件无法显示”的解决方法

一个或多个ActiveX控件无法显示,原因可能是下列其中之一: 1)当前安全设置禁止运行此页面中的ActiveX控件,或 2)您已经阻止了其中一个...

15130
来自专栏我是攻城师

IntelliJ IDEA的光芒会盖过Eclipse吗

37350
来自专栏农夫安全

暴力破解-H3C路由器-MSR900

所暴力破解的设备信息 华三路由器 设备型号 MSR900 软件版本 CMW520-R2311 所用到的工具 Firefox浏览器及其插件Proxy Sw...

67360
来自专栏数据之美

SSD Win8 系统盘 4K 无损对齐历险记

1、背景:为什么要 4K 对齐 簇是系统在硬盘上读写文件时的单位,是一个数据块(逻辑概念)。而扇区是硬盘划分的最小单位值,就是簇(数据块)占用的地方(物理概念)...

374100
来自专栏QQ音乐技术团队的专栏

electron 构建跨平台桌面应用

昨日(2016.09.13)本文发表后,获得了一定的阅读和转发量,但经部分网友反馈和仔细审核后发现,在与 NW.js 对比的环节,言辞欠妥,且数据的真实性有待考...

1.3K110
来自专栏向治洪

React native开发中常见的错误

react native环境搭建请移步:react native环境搭建 这里说说react native创建完成之后,运行中出现的常见问题, 问题1: jav...

34360
来自专栏从零开始的linux

安装linux系统

第1步:启动RHEL7的主机电源。 ? 第2步:敲击回车。 ? 第3步:等待即可。 ? 第4步:选择安装系统时的语言。 ? 第5步:配置信息界面,敲击“In...

37290
来自专栏向治洪

React Native打包

前面写了关于React的一系列入门章:http://lib.csdn.net/xiangzhihong8/5375/chart/React%20Native ...

39650

扫码关注云+社区

领取腾讯云代金券