效果
ferry是一个开源项目,主要使用go语言编写,想了解更多看下项目地址吧
项目gitlab地址:
https://github.com/lanyulei/ferry
演示demo地址:
账号密码:admin/123456
前提
本篇域名已经写死到容器内部了(前后端)
域名:devferry.wmqhealth.com
如果想修改成其他的,可以看下面介绍部署到kubernetes集群上的第一个点,然后就可以修改成其他域名的了。或者联系我给你们重新打下镜像
docker部署
https://blog.csdn.net/zhanremo3062/article/details/115118613
kubernetes部署
下面不需要操作!只是说明一下我是怎么修改的。
该项目并没有提供在kubernetes上部署文档。
我本想给它封装成helm,大家可以直接安装,不过时间原因,先做到部署到kebernetes集群上吧~
基于使用docker部署方法,修改后部署到kubernetes集群中,主要修改项大概有以下几点:
1)修改访问域名
把端口号去掉,因为我们最后使用的是ingress 80端口代理
cat .env.production # just a flag ENV = 'production' # base api VUE_APP_BASE_API = 'http://devferry.wmqhealth.com'
2)修改redis、mysql、backend的容器名称
把ferry_redis
、ferry_mysql
、ferry_backend
修改成ferry-redis
、ferry-mysql
、ferry-backend
这样做,只要是集群中不支持使用下划线命名,改为中划线在kubernetes集群中,不暴露端口号的情况下让它们互相访问
3)ferry-web服务需要修改转发路径
容器内的路径:/etc/nginx/nginx.conf,把所有字段ferry_backend改成ferry-backend
这也是为了之后部署在kubernets集群中,ferry-web服务可以访问到ferry-backend服务,因为下划线不是有效的命名规范
以上这些我都已经做完了,并打成了镜像上传到华为云SWR平台,使用方法请看下面!
开始操作吧!
1、拉取镜像
找一台k8s节点主机,操作即可
镜像一共是4个,其中ferry-backend和ferry-web比较重要,再就是redis和mysql部署必须使用指定的,注意mysql用户名和密码默认是root/123456
docker pull swr.ap-southeast-3.myhuaweicloud.com/ferry/mysql:20210819 docker pull swr.ap-southeast-3.myhuaweicloud.com/ferry/redis:20210819 docker pull swr.ap-southeast-3.myhuaweicloud.com/ferry/web:20210819 docker pull swr.ap-southeast-3.myhuaweicloud.com/ferry/backend:20210819
2、创建服务
数据库服务
服务名称:ferry-mysql
服务类型:statefulset
映射端口号:无
pvc挂载容器内路径:
/var/lib/mysql
缓存服务
服务名称:ferry-redis
服务类型:statefulset
映射端口号:无
pvc挂载容器内路径:
/var/lib/redis/data
后端服务
服务名称:ferry-backend
服务类型:deployment
映射端口号:无
pvc挂载容器内路径:
/opt/ferry/config /opt/ferry/logs
这时候backend容器应该一直会报连接数据库错误,不断重启
解决方法:
找到映射容器文件的服务(主机映射、NFS服务映射等等),然后修改/opt/ferry/config/settings.yml文件,把所有ferry_mysql改成ferry-mysql,ferry_redis改成ferry-redis,也就是上面提到的下划线改成中划线
再重新启动backend
服务,就不会再重启了
前端服务
服务名称:ferry-web
服务类型:deployment
映射端口号:无
pvc挂载容器内路径:无
以上服务启动顺序
redis–>mysql–>backend–>web
3、初始化数据库
进入到ferry-backend服务pod中,执行命令
./ferry init -c=/opt/ferry/config/settings.yml
最后显示数据库初始化成功即可
4、创建ingress代理、
服务类型:ingress
绑定域名:devferry.wmqhealth.com
关联负载:ferry-web
容器端口号:8001
最后浏览器访问:devferry.wmqhealth.com
集成ldap
打开ferry-backend服务pod,修改settingsyml
文件
vi /opt/ferry/config/settings.yml
ldap: anonymousquery: 0 basedn: ou=员工,xxxxx,dc=cn //配置从什么地方搜索用户 bindpwd: xxxx //管理员密码 binduserdn: cn=manager,xxxxx,dc=cn //管理员账号 host: ldap.xxxx.cn port: 636 tls: 1 //是否开启ldaps://连接,默认是ldap:// userfield: uid //登录名字段
我这里需要问题了,ldap默认登录不能切回普通登录,只能在数据库里修改了。
修改logo
由于是强行迁移到K8s集群中,有些数据并没有改变
之后点击保存,会出问题,然后打开ferry-mysql数据库服务,把域名后得端口号去掉
之后就可以加载到图标了
大家也发现了,ferry系统还是需要优化的,要不然修改的地方非常多~