引言
nginx在传统的使用中,一般是作为反向代理或者负载均衡。但是它还有一个很优秀的能力常被人们所忽略。
在kubernetes部署应用的过程中,会有大量的yaml等资源需要维护。集群内部维护起来不太方便,特别对于新手不太友好,有时操作不当还容易对集群稳定性造成损害,nginx自动文件索引功能就派上了大用场。
总体思路
将kubernetes资源文件抽取到集群之外的nginx中进行维护,nginx开启自动文件索引功能,此时每个资源文件会有自己的链接,kubernetes通过文件资源链接获取到yaml资源文件在集群内进行部署。也可以理解为nginx为kubernetes提供文件资源服务。
环境准备
在同一网络内,我准备了4台服务器,三台用作kubernetes集群服务器,一台用作nginx资源文件清单服务器。
k8s集群服务器 | 资源文件清单服务器 |
---|---|
172.31.0.2 | 172.31.0.5 |
172.31.0.3 | |
172.31.0.4 |
kubernetes集群搭建和nginx安装自行完成。
修改nginx配置
将nginx.conf原本的配置
location / { root html; index index.html index.htm;}
修改为
location /sams/ { root /data/; autoindex on;}location /edsp/ { root /data/; autoindex on;}
autoindex on;表示开启nginx自动文件索引功能。按照原来的设置访问nginx会进入到欢迎页,经过此番设置会展示目录下的文件资源。把sams
和edsp
比作一个个不同的项目,无论项目多少与否只要往配置中添加即可。
nginx测试
在跟目录下创建/data/sams和/data/edsp文件夹,里面放入yaml文件。本地修改完上传非常方便。
然后我们通过访问会有如下效果,可以看出每个文件资源都有属于自己的链接地址。
做完上面的内容,说明资源文件清单服务器准备完毕。
集群域名解析
资源文件清单服务器ip地址写起来不太方便,我们可以将其写成域名的形式,比如:
# 由于在同一网络内,这里使用内网地址即可echo "172.31.0.5 resource-inventory" >> /etc/hosts
集群内部署测试
[root@k8s-master ~]# kubectl apply -f http://resource-inventory/sams/namespace.yamlnamespace/hello created[root@k8s-master ~]# kubectl apply -f http://resource-inventory/sams/nginx.yamlpod/mynginx created[root@k8s-master ~]#
[root@k8s-master ~]# kubectl get nsNAME STATUS AGEdefault Active 4d2hhello Active 12m[root@k8s-master ~]# kubectl get podNAME READY STATUS RESTARTS AGEmynginx 1/1 Running 0 11m[root@k8s-master ~]#
成功创建了hello命名空间和mynginx的pod资源,测试完成!
本文由mdnice多平台发布