项目:SwarmOps
说明:Docker Swarm Mode(v1.12.0+)功能封装的API和UI(Flask+Bootstrap)
GitHub:https://github.com/staugur/SwarmOps
依赖:Passport认证系统(生产必须),Redis(非必须)
注意:关键信息!
当前文档版本:Release 0.0.1, 0.0.2
声明:
当前项目暂无更新计划,针对的swarm版本大概是1.12.x,最新版本无跟进,无法保证正确性!
一:部署
###SwarmOps部署需要先部署依赖程序。
### 如果你是正式环境使用,请安装Passport认证系统和Redis(高可用);
### 如果你是快速体验,可以不安装Passport和Redis(设置g.signin=True,使用local存储);
### 下面是具体过程,如果有疑问可以在评论区提出,或者发邮件,staugur@saintic.com。
1. 认证系统部署
1.1 SwarmOps为了安全性首先要求登录状态,登录系统采用passport(简单SSO)认证,绑定全局变量g.signin(Bool),判断是否已经登录,所以此处也可以采用你自己的登录认证系统。
部署passport,其GitHub地址是https://github.com/staugur/passport,亦可参考本站文档:https://blog.saintic.com/blog/134.html。
注意:swarmop于2018-11-07已经更新代码,适配最新版passport,所以使用此最新版需要部署passport!
以下内容是release中代码,不适用最新版!
演示地址: http://swarmops.demo.saintic.com
1.2 自定义认证
认证关键在与before\_request时的g.auth\(若不了解请参考flask文档\),此值即\`isLogged\_in\`函数返回值,所以增加自定义认证需要以下步骤:
1.2.1 config.py
新增GLOBAL段Authentication值,例如auth\_example
1.2.2 utils/public.py
在大概45行isLogged\_in函数中,修改代码if判断,新增一个AuthType=="auth\_example"段,执行根据cookie信息做认证。
2. redis部署
########
存储多个swarm的name、ip、token等信息,可以用redis、local,如果你将数据放到redis,便可以多节点,当然步骤也麻烦一点,需要安装redis。如果单点,就用local,本地文件存储即可,省去下面redis部署过程。
########
SwarmOps多点分布部署,可以使用redis、etcd、consul等类型的kv存储服务,目前仅支持redis。
安装redis非常简单,不需要集群,单实例,默认写入0库。
第一种比较简单的方法,yum -y install redis(如果没有redis包,可以先执行yum -y install epel-release),安装完成之后用service或systemctl启动,这样默认监听127.0.0.1:6379,无密码。
第二种方法到<redis.cn>中文版网站文档中查询资料采用源码部署,此处,我早前有个一键部署NoSQL的脚本,GitHub地址是https://github.com/staugur/CoreWeb。
3. SwarmOps部署
3.1 开发版本体验(不推荐)
[root@e50e93de4b75 ~]# yum install -y gcc gcc-c++ python-devel libffi-devel openssl-devel python-pip git
[root@e50e93de4b75 ~]# git clone https://github.com/staugur/swarmops
[root@e50e93de4b75 ~]# cd swarmops
[root@e50e93de4b75 swarmops]# pip install -r requirements.txt
### 使用redis
[root@e50e93de4b75 swarmops]# export swarmops_swarmstoragemode=redis
[root@e50e93de4b75 swarmops]# export swarmops_StorageConnection=redis://127.0.0.1:6379 (格式是"redis://redis_host:redis_port:redis_password", 其中密码可以省略, 则默认None)
### 使用local
[root@e50e93de4b75 swarmops]# export swarmops_swarmstoragemode=local
[root@e50e93de4b75 swarmops]# ./Control.sh
SwarmOps start over.
[root@e50e93de4b75 swarmops]# ./Control.sh status
SwarmOps:
pid: 9298
state: running
process start time: 2017-Jan-2 13:20:42
process running time: 00:02
[root@e50e93de4b75 swarmops]# ps aux | grep -v grep | grep SwarmOps ; netstat -anptl | grep SwarmOps
root 9298 0.0 1.1 137000 20920 ? S 13:20 0:00 SwarmOps
tcp 0 0 0.0.0.0:10130 0.0.0.0:* LISTEN 9298/SwarmOps
tcp 0 0 127.0.0.1:49804 127.0.0.1:6379 ESTABLISHED 9298/SwarmOps
tcp 0 0 :::10130 :::* LISTEN 9298/SwarmOps
3.2 稳定版本(墙裂推荐)
3.2.1 物理机、虚拟机等
wget -c -O SwarmOps-v0.0.2.tar.gz "https://codeload.github.com/staugur/SwarmOps/tar.gz/v0.0.2"
tar zxf SwarmOps-v0.0.2.tar.gz
cd SwarmOps-0.0.2/
pip install -r requirements.txt
### 使用redis
export swarmops_swarmstoragemode=redis
export swarmops_StorageConnection=redis://127.0.0.1:6379 (格式是"redis://redis_host:redis_port:redis_password", 其中密码可以省略, 则默认None)
### 使用local
export swarmops_swarmstoragemode=local
Control.sh start
3.2.2 docker
暂不提供正式版镜像,请自行构建!
附录1, 关于SwarmOps的使用:
SwarmOps默认监听0.0.0.0:10130,打开浏览器访问你的IP:10130端口,passport验证登录后,即进入UI界面中,UI调用Api操作数据。
附录2, 关于SwarmOps Api的使用(尚未更新完毕):
https://github.com/staugur/SwarmOps/blob/master/docs/SwarmOpsApi_SwarmEngine.md
附录3,关于Nginx(tengine)的配置:
upstream SwarmOps {
server 127.0.0.1:10130;
check interval=3000 rise=2 fall=5 timeout=3000 type=http;
check_http_send "GET / HTTP/1.1\r\n\r\n";
}
server {
listen 80;
server_name swarmops.saintic.com;
charset utf8;
access_log logs/swarmops.access.log json;
location / {
#proxy_pass http://127.0.0.1:10130;
proxy_pass http://SwarmOps;
proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for ;
proxy_set_header Host $http_host ;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
location /nstatus {
check_status;
access_log off;
}
}