背景

最近主管要求对一些纯静态小型项目或页面实现在集群中的快速部署上线,提出以下几点要求:

  • 项目部署容器采用 nginx,并且所有类似项目都部署到同一个 docker 中。
  • nginx 的 配置文件虚拟主机根路径 需要挂载到服务器的持久化路径,实现与容器的生命周期分离。

在同事的帮助下,采用以下方式实现,特此记录,以备不时之需。

实现方式

登录 rancher

  • 登录容器管理平台 rancher,必现使用有相关操作权限的帐号登录。

PVC 配置

  • 通过 rancher 进入集群的 PVC 界面,新增一个 PVC,用于挂载上述 nginx 的 配置文件虚拟主机根路径。如已有合适的 PVC 可供后续使用,请直接跳过该步骤。
  • 通过文件传输工具(如 FTP)进入服务器上对应的 PVC 目录,创建两个子目录 extend-confextend-html 用于存放上述需要挂载的内容。

服务部署

  • 通过 rancher 进入集群的 工作负载 界面,新增一个服务,并进行端口映射。如下图所示:

  • 配置完成,启动服务。

docker 镜像可以从 https://hub.docker.com/_/nginx?tab=tags 中找到需要的版本。

共享目录挂载

  • 通过 rancher 进入上一步骤创建的 extend 服务控制台,找到配置文件以及其中的虚拟主机根路径(如下图中的 root)。

  • 通过文件传输工具(如 FTP)进入服务器上对应的 PVC 目录,复制 /etc/nginx/conf.d 中的配置文件 default.conf 到上面挂载的文件夹 extend-conf 中,同时在目录 extend-html 中创建子文件夹 extend,并在 extend 下创建一个测试文件 index.html,内容随便,符合 html 规范即可,也可以直接复制以下内容:
<!DOCTYPE html>
<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>
  • 回到服务,点击升级,将获取到的配置文件所在文件夹(/etc/nginx/conf.d)以及虚拟主机根路径(/usr/share/nginx/html)配置到数据卷中,如下图:

负载均衡配置

  • 通过 rancher 进入集群的 负载均衡 界面,新建一个负载均衡。访问域名和路径根据实际情况配置。

测试验收

  • 完成上述所有步骤后,访问负载均衡配置的域名和路径,如:https://www.lervor.com/extend,如果出现上面测试文件(index.html)的内容,说明部署成功。