使用docker快速部署rancher-2.8.5并投入生产实践
市面上管理 k8s 多集群的工具非常多,但是真正易于维护,且设计比较优雅好用的并不多,如果你所要管理的集群没有特别多,那么 rancher 是一个不错的选择。
我曾在博客写过 rancher 的部署文档,想想那已经是 2019 年的事情了,彼时采取了高可用的部署方案,较为繁琐,且版本已经落后了太多,今天来简明扼要的写一下通过 docker 快速部署 rancher-2.8.5 以及集群接入,和权限管理等问题,让你通过本文,即可把 rancher 部署且投入到生产实践当中。
# 快速部署
在项目官方的 README 中已经提供了一键部署的命令,如下:
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher
默认拉取最新版本的镜像。
通常我们在生产实践当中,会配置一个自定域名,而不用 IP 访问,通过域名访问时,还需要将证书挂载到容器当中去。
准备证书如下:
$ tree
.
├── ssl
│ ├── eryajf.net_bundle.pem
│ └── eryajf.net.key
└── start.sh
2
3
4
5
6
其中 start.sh
的内容为:
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
--name rancher -v /data/rancher/data:/var/lib/rancher \
--privileged \
-v /etc/hosts:/etc/hosts \
-v /data/rancher/ssl/eryajf.net_bundle.pem:/etc/rancher/ssl/cert.pem \
-v /data/rancher/ssl/eryajf.net.key:/etc/rancher/ssl/key.pem \
rancher/rancher:v2.8.5 \
--no-cacerts
2
3
4
5
6
7
8
9
指定具体版本的镜像,然后运行即可。
正常运行之后,可以将 rancher.eryajf.net
解析指向该主机的 IP。
# 权限管理
权限管理可能也是一个比较复杂的部分,但这里我不想把他复杂化,rancher 也支持对接 ldap,但问题是不支持给登陆用户配置默认的对应权限,因此我这里用了一个相对简单的思路来管控权限。
简单来说就是创建一个开发者账号,然后在角色模板中创建一个开发者角色,这个角色拥有 deployment 和 pod 的只读权限,同时拥有查看日志以及 exec 到 pod 的权限,然后只需要在集群的项目中,将该用户添加到项目中并关联该角色即可。这样普通开发者共同使用这个普通账号来登陆 rancher 查看业务应用运行状态就可以了。
角色
点击 用户认证
---> 角色模板
---> 选择 项目或命名空间
---> 点击右上角 创建项目或命名空间的角色
:
注意对应授予的权限,可按实际需求情况进行增减。
其中的 pods/exec
与 pods/log
创建时不会补全,手打即可。
角色创建完成之后,在集群的项目里,将对应的普通用户添加进来,并且关联 devuser 这个角色即可。
这样普通开发者通过 devuser 这个账号登陆 rancher 之后,就拥有了 devuser 这个角色的权限,亦即上边所给到的权限了。