前言
nginx 是一个开源的高性能 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在容器和 Kubernetes 的背景下,nginx 经常被用作静态文件服务器,它能够快速地提供静态资源(如 HTML、CSS、JavaScript 文件)的访问。在这种情况下,nginx 可以作为一个 YAML 资源清单文件的托管服务,简单地将静态文件托管在其中。
具体来说,你可以使用 nginx 将 YAML 资源清单文件(如 Kubernetes 的 Deployment、Service、ConfigMap 等配置文件)托管在服务器上,使得这些文件能够通过 HTTP 或 HTTPS 协议进行访问。这种做法在容器编排和自动化部署中非常常见,因为它提供了一种简单而可靠的方式来分发和管理配置文件。
应用
环境
虚拟机
Ip | 主机名 | cpu | 内存 | 硬盘 |
---|---|---|---|---|
192.168.10.11 | master01 | 2cpu双核 | 4G | 100G |
192.168.10.12 | worker01 | 2cpu双核 | 4G | 100G |
192.168.10.13 | worker02 | 2cpu双核 | 4G | 100G |
192.168.10.18 | nginx | 2cp双核 | 2G | 100G |
版本 centos7.9
已部署k8s-1.27
具体实现步骤
1.安装源码nginx及相关模块
wget http://nginx.org/download/nginx-1.24.0.tar.gz
wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz
wget https://github.com/aperezdc/ngx-fancyindex/releases/download/v0.5.2/ngx-fancyindex-0.5.2.tar.xz
这三个文件分别是:
nginx-1.24.0.tar.gz:
这是 nginx 的源代码压缩包,版本号为 1.24.0。nginx 是一个高性能的开源 Web 服务器和反向代理服务器。
echo-nginx-module-0.61.tar.gz:
这是 Echo 模块(echo-nginx-module)的源代码压缩包,版本号为 0.61。Echo 模块是一个用于 nginx 的第三方模块,可以用来进行高级的 HTTP 信息处理。
ngx-fancyindex-0.5.2.tar.xz:
这是 ngx-fancyindex 模块的源代码压缩包,版本号为 0.5.2。ngx-fancyindex 是一个 nginx 第三方模块,用于生成目录的漂亮索引页面,使得文件目录在 Web 界面上更加友好和易于浏览。
解压压缩包
tar xf v0.61.tar.gz
tar xf ngx-fancyindex-0.5.2.tar.xz
安装nginx依赖包
yum -y install gcc prce-devel zlib-devel openssl-devel
解压安装包,配置,编译,安装
tar nginx-1.24.0.tar.gz
cd nginx-1.24.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --add-module=/root/ngx-fancyindex-0.5.2/ --add-module=/root/echo-nginx-module-0.61
make && make install
命令
./configure 配置 #检测软硬件环境,定制安装参数
make 编译 #将源码文件转换为二进制文件
make install 安装 #将二进制文件复制到安装目录,完成初始化
2.修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
解释
fancyindex on;
开启fancy索引
fancyindex_exact_size off;
不使用精确的大小,使用四舍五入Byte
index index;
此处默认索引页为index
3.启动验证
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
nginx
nginx -v
设置nginx随机启动:
echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
Windows浏览器测试:http://192.168.10.18
可以看到是一模一样的
4.测试
在nginx服务器上写一个yaml文件
vim /usr/local/nginx/html/deployment1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx1
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80
一个简单部署nginx的yaml文件
回到master节点
通过连接使用yaml文件
kubectl apply -f http://192.168.10.18/deployment1.yaml
查看
kubectl get deployments.apps
kubectl get pod
实验完成
总结
总结来说,nginx 是一个多功能的服务器软件,可以用于托管静态文件和服务,也可以用来托管 YAML 资源清单文件以供访问和部署。