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

一篇文章从 Rancher

介绍

有效的连续集成(CI)是任何成功的开发团队的核心要求。因为CI不是前线服务,它通常会运行在中级或剩余的硬件上。添加构建用于拉动请求,自动部署,接受测试,内容上传和一系列其他任务可以迅速压倒构建机器的资源 - 尤其是在推出时,当有大量的承诺和部署活动时。

在本文中,我们将使用Docker创建和运行我们的Jenkins图像和Rancher来编排我们的Docker集群,构建一个分布式构建系统。

本文涵盖了完全基于云的Jenkins部署,但是,一个替代方案是使用内置的Jenkins主机与云服务器,在需要更多的资源时提供过流容量。这就是Docker和Rancher真正闪耀的地方:Docker在任何节点上为我们提供几乎相同的部署环境,Rancher允许我们将来自不同云提供商或内部服务器的节点结合到一个单一的集群中,通过自己的VPN运行。

前提条件

本教程将使用总共三个Dropplets:一个用于Rancher服务器,一个用于运行Jenkins主的Rancher计算节点,一个用于运行Jenkins奴隶的第二个Rancher计算节点。

我们将以your_rancher_server_ip,your_jenkins_master_ipyour_jenkins_slave_ip分别引用这些 Droplets的 IP 地址;无论您在本教程中看到这些变量,都用相应的 IP 地址替换它们。

最初,我们将为Rancher服务器创建一个Droplet;在稍后的一步中将涵盖两个计算节点的创建。

  • 一个 Ubuntu 14.04 Droplet 与 Docker 1.5.0 图像. 因为这个 Droplet 将仅作为一个 Rancher 服务器使用,你可以选择一个小小的 Droplet 尺寸。

您可以在创建 Droplet 页面上找到 Docker 1.5.0 图像选项,在 ** 选择图像 ** 下的 ** 应用程序 ** 选项卡中。 此 Droplet 还需要自定义用户数据。 要添加此项,请单击 ** 启用用户数据 ** 在 ** 可用设置 ** 部分中,然后在出现的文本框中输入下面的脚本。

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

步骤 1 – 配置身份验证

一旦您的Rancher服务器被创建,在一段时间后,您将能够通过浏览器访问其用户界面,指向http://your_rancher_server_ip:8080/`. 因为Rancher服务器是开放的互联网,这是一个好主意来设置身份验证。 在这个步骤中,我们将设置基于Github OAuth的身份验证,这是Rancher目前支持的。

您将在右上角看到一个警告,该警告说 ** 访问控制没有配置**,然后是链接到 ** 设置**. 点击 ** 设置**,然后按照那里提供的指示注册一个新的应用程序与 Github,并将客户 ID 和秘密复制到相应的文本字段。

当你完成时,点击 ** 通过 Github 验证**,然后点击 ** 允许应用程序在出现的窗口中。一旦你完成,页面将重新加载,并将对设置 OAuth 的说明取代 ** 配置授权 部分。添加任何额外的用户和组织,应该被允许访问Rancher。如果你做任何更改,会出现一个读取 ** 保存授权配置**的按钮。

一旦您保存了授权配置,右上角的警告应该被您的 Github 个人资料图像和项目选择菜单取代(最初说 Default)。

这将有助于保持您在Rancher上运行的各种项目隔离,以保持您的Rancher界面不受干扰。如果您希望在同一个Rancher集群上运行其他服务,您可以创建额外的项目(需要额外的计算节点),所以如果您打算让多个人访问您的Rancher代理,您不应该使用默认项目。

步骤 2 – 注册农场计算节点

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

** 注意**:在身份验证之前,Rancher计算节点可以注册而不提供登记令牌,但是,由于我们已启用身份验证,所有代理都必须提供登记令牌,以便添加到集群中。

在Rancher UI中,点击 Hosts(在左侧菜单中),然后点击 注册新主机.从出现的窗口复制Docker运行命令,然后关闭窗口。返回DigitalOcean控制面板,并使用Docker 1.5.0图像创建两个额外的Dropplets,例如Rancher服务器。

对于这两个Dropplets中的用户数据,添加#!/bin/bash,然后是您先前复制的Docker运行命令。

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

您的命令末尾的长串数字和字母将有所不同. 请确保您在点击 注册新主机之前选择了您的项目,因为代币对每个项目都是独一无二的。

几分钟后,你应该能够在Rancher UI中看到你的Rancher计算节点,你会看到你的Droplets的名称,在下面的图像中说RancherAgent

步骤 3 – 启动 Jenkins 主节点

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

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

  • 使用 Master作为容器名称,在 Name 旁边的文本框中使用 jenkins作为源图像,在 Select Image 旁边的文本框中。

接下来,点击 + 旁边的 Port Map. 在两个字段中填写 8080 并将 TCP 作为协议。这将为我们提供访问 Jenkins Web UI. 再次点击 + 并在两个字段中添加端口 50000,并将 TCP 作为协议。

接下来,单击高级选项,然后单击选项卡,单击旁边的选项卡,然后在出现的文本框中指定/var/jenkins_home

最后,点击创建来启动您的 Jenkins 容器。

步骤 4 – 推出 Jenkins 奴隶节点

在这个步骤中,我们将推出Jenkins奴隶。

点击您的浏览器http://your_jenkins_master_ip:8080来加载 Jenkins UI。

在 Jenkins UI 中,通过浏览左侧的 管理 Jenkins,然后在下一个菜单中 管理节点,最后在最后一页的左侧创建一个节点配置。

您将被重定向到有关此节点的详细信息页面. 对于 Remote root directory,键入 /var/jenkins. 对于 Launch method,选择 Launch slave agents via Java Web Start. 您还可能希望更新执行器设置的 **# 设置高于其默认值 1 以增加允许在奴隶上进行并行构建的数量。 其余的设置可以留给其默认值。

现在我们已经准备好启动我们的奴隶容器了,在Rancher UI中,点击剩余的计算节点上的添加容器并添加以下选项:

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

然后单击 Advanced Options. 您将从 Command卡开始。 单击 **+**旁边的 Environment Vars,并将一个条目添加到 Name作为MASTER_HOSTValue作为your_jenkins_master_ip

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

最后,点击创建

jenkins-slave容器将从Jenkins主机下载一个罐文件并运行一个Jenkins奴隶节点.当奴隶出现时,您应该能够在刷新 Manage Nodes页面后看到其状态,我们在Jenkins UI中停留。

结论

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

Docker为我们提供一个一致的环境来运行Jenkins,Rancher为主机提供网络化,并允许我们从Web UI管理群集,而无需手动访问Droplets或配置服务器。

Published At
Categories with 技术
comments powered by Disqus