摘要
- 效果
- 前提
- docker部署
- kubernetes部署
- 1、拉取镜像
- 2、创建服务
- 3、初始化数据库
- 4、创建ingress代理
- 集成ldap
- 修改logo
效果
ferry是一个开源项目,主要使用go语言编写,想了解更多看下项目地址吧
项目gitlab地址:
https://github.com/lanyulei/ferry
演示demo地址:
http://fdevops.com:8001/ 账号密码:admin/123456
前提
本篇域名已经写死到容器内部了(前后端)
域名:devferry.wmqhealth.com
如果想修改成其他的,可以看下面介绍部署到kubernetes集群上的第一个点,然后就可以修改成其他域名的了。或者联系我给你们重新打下镜像
docker部署
javascript:void(0)
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
0
basedn: ou=员工,xxxxx,dc=cn //配置从什么地方搜索用户
bindpwd: xxxx //管理员密码
binduserdn: cn=manager,xxxxx,dc=cn //管理员账号
host: ldap.xxxx.cn
port: 636
tls: 1
我这里需要问题了,ldap默认登录不能切回普通登录,只能在数据库里修改了。
修改logo
由于是强行迁移到K8s集群中,有些数据并没有改变
之后点击保存,会出问题,然后打开ferry-mysql数据库服务,把域名后得端口号去掉
之后就可以加载到图标了
大家也发现了,ferry系统还是需要优化的,要不然修改的地方非常多~