前天发了个朋友圈,说 rancher 搭建 jenkins 和 sonar 效率超高,结果发现有挺多人感兴趣的, @ycwdaaaa 也鼓励我写一篇文章介绍一下。所以有了这篇文章的存在。
时间有限,无法写得很深很全,大家权当入门了解即可。
官方介绍:Rancher 是一个开源的企业级全栈化容器部署及管理平台。已有超过 1900 万次下载,4000+ 生产环境的应用。
简单的说,就是一个可以让你通过 web 界面管理 docker 容器的平台。定位上和 K8s 比较接近,都是通过 web 界面赋予完全的 docker 服务编排功能。
能够做到这么流行,总归有几板斧头的。rancher 的几个比较突出的点有:
平台部署方便。管理 docker 的平台本身也基于 docker 部署。只要你有 docker ,一句命令就完成平台的部署了。
平台扩展方便。通过 agent 机制,一句 docker 命令完成 agent 部署,快速增加你的物理机。同时也支持 AWS 等云主机, 2.0 版本甚至还支持 K8s 。
服务部署方便。通过应用商店,2 步完成应用部署,而且还是像 docker-compose 那样各个中间件独立编排,可以随时扩容的哦。
自带账户权限。相比 K8s 没有账号管理,rancher 自带账号权限体系。账号可以独立创建,也可以很方便地接入 ldap 等账号体系。对于公司使用是一大利器。
更详细的信息,建议查看官方中文站点:https://www.cnrancher.com
此处以平时自己摆弄为例,以一个 master + 一个 agent 的形式部署,不使用 HA 。
如果想了解更多部署方式,建议查看官方文档:http://rancher.com/docs/rancher/latest/en/installing-rancher/installing-server/
master 对系统基本没有要求,部署在 mac 或者 windows 上都行。
# 数据库数据内置。缺点是如果容器损坏了,数据就不可恢复
docker run -d --restart=unless-stopped -p 8080:8080 rancher/server
# **推荐**数据库数据外置。即使容器坏了,数据还在,重新再建一个容器即可
docker run -d -v <host_vol>:/var/lib/mysql --restart=unless-stopped -p 8080:8080 rancher/server
agent 用到比较多的 docker 特性,建议使用 linux 机器。我用的是 ubuntu 16.04。
agent 的启动命令可以在界面上自动生成,唯一需要填写的是 agent 所在主机的 ip 地址。
这两步做完,rancher 就可以投入使用咯!
rancher 的应用商店是它的杀手级功能。通过应用商店,只需要 2 步界面操作就可以完成一个应用的部署。
以 sonarquebe 为例:
第一步,选择应用。点击 sonarquebe 下面的【查看细节】按钮
第二步,点击启动。当然如果有需要的话,也可以选择下服务版本。其它配置如无特殊需要,一般不需要改动。
然后 sonar 服务就创建出来了。
访问地址,可以点击负载均衡的 Ports 链接,直接打开。
注意:如果是首次创建,agent 需要花几分钟下载镜像,具体耗时取决于网速。
相信聪明的朋友已经猜到了。应用商店除了官方自带的应用,我们自己也可以配置自己的应用商店哦。以后临时部署一个新的测试服务,直接 2 步解决。
除了这些基本功能,rancher 还有很多功能。基础的有容器日志查看、shell 访问、资源占用监控等,扩展的还有多环境管理、多主机服务部署管理等。同时对容器的各种操作,也都可以通过 rancher-cli 、 rancher-compose 命令行工具或者其自带的 http api 进行控制。
扩展一下,还可以通过容器替换 +http api 调用,做到快速重置数据库数据的效果(数据库数据内容事先放好到镜像中)。这对于一些经常需要 清空 - 重新初始化数据库的操作(例如跑自动化测试前重置数据库),可以节省下不少初始化数据耗费的时间。同时,数据库数据也通过镜像的版本管理,初步获得了版本管理。