Docker 和 Kubernetes 部署带 HTTPS 的 Nginx

阅读时长 6 分钟读完

在现代的 Web 开发中,HTTPS 已经变得越来越重要。但对于前端开发者而言,配置 HTTPS 证书等操作可能会显得有些棘手。在本文中,我们将介绍如何使用 Docker 和 Kubernetes 部署带 HTTPS 的 Nginx,使得配置 HTTPS 证书变得更加容易。

前置条件和准备工作

在开始之前,确保您已经具备以下条件:

  1. 熟悉 Docker 和 Kubernetes 的基本操作。
  2. 有一个已经配置好的域名,以及一个有效的 SSL 证书。如果没有,您可以尝试使用 Let’s Encrypt 等免费的 SSL 证书服务。

接下来,我们需要准备一些数据和文件。具体来说,我们需要:一个 Nginx 配置文件、SSL 证书和私钥文件。

-- -------------------- ---- -------
------ -
    ------              --- ----

    -----------         -----------

    ---------------     -----------------------------
    ------------------- ---------------------------

    -------- - -
        ----------          --------------------
        ----------------    ----                -----------
        ----------------    ---------           -------------
        ----------------    ---------------     ---------------------------
        ----------------    -----------------   --------
    -
-

其中,server_name 应该替换成您自己的域名,而 ssl_certificatessl_certificate_key 分别指向 SSL 证书和私钥文件。同时,location 标签的内容可能需要根据您自己的后端服务的端口和协议(如 HTTP 或 HTTPS)进行适当修改。

如果您正在使用 Let’s Encrypt 的免费证书,那么可以使用以下命令将证书和私钥文件下载到本地:

其中,example.com 应该替换成您自己的域名。执行完上述命令之后,证书和私钥文件应该被下载到了 /ssl/certs 目录下。

使用 Docker 部署带 HTTPS 的 Nginx

接下来,我们将使用 Docker 部署 Nginx。在这之前,确保已经安装了 Docker 并且已经获取到了上一节所需的文件。

以下是一个示例 Dockerfile:

上述 Dockerfile 使用了 nginx:alpine 镜像作为基础镜像,并将本地的 nginx.conf 文件和 SSL 证书文件复制到了镜像的相应目录下。

然后,使用以下命令构建 Docker 镜像:

其中,my-nginx 可以替换成任意您自己喜欢的镜像名称。

最后,使用以下命令启动 Nginx 容器:

在容器启动后,访问浏览器中设置的域名即可看到带有 HTTPS 证书的 Nginx 页面。

使用 Kubernetes 部署带 HTTPS 的 Nginx

除了使用 Docker,我们还可以使用 Kubernetes 部署带 HTTPS 的 Nginx。使用 Kubernetes 的好处在于,它可以自动管理容器的伸缩和负载均衡,并且支持更加灵活的部署方式。

以下是一个对应的 Kubernetes 配置文件:

-- -------------------- ---- -------
----------- -------
----- ----------
---------
  ----- --------
-----
  --------- -
  ---------
    ------------
      ---- --------
  ---------
    ---------
      -------
        ---- --------
    -----
      -----------
      - ----- --------
        ------ --------
        ------
        - -------------- ---
        -------------
        - ----- ---------
          ---------- --------------
        - ----- ----------
          ---------- ------------------------------
      --------
      - ----- ---------
        -------
          ----------- --------------
      - ----- ----------
        ----------
          ----- ---------------

---
----------- --
----- -------
---------
  ----- ----------------
-----
  ----- ------------
  ---------
    ---- --------
  ------
  - ----- ---
    ----------- ---

上述配置文件中,我们定义了一个状态副本数为 3 的 Deployment,并将容器镜像指定为我们之前构建好的 my-nginx 镜像。同时,我们将 SSL 证书文件和 Nginx 配置文件分别作为 Kubernetes 的 Secret 和 ConfigMap 进行了配置,并将其挂载到容器的相应目录下。

最后,我们定义了一个 Service,并将其类型指定为 LoadBalancer,以便 Kubernetes 能够自动创建负载均衡器和将服务端口暴露到 Internet 上。

使用以下命令应用以上配置文件:

其中,<filename>.yaml 应该替换为您自己的配置文件名称。

执行完上述命令后,通过访问外部的负载均衡器 IP 地址或域名即可看到带有 HTTPS 证书的 Nginx 页面。

总结

在本文中,我们介绍了如何使用 Docker 和 Kubernetes 部署带 HTTPS 的 Nginx,并且详细介绍了其相关的操作步骤、前置条件和准备工作。本文内容涵盖了 Docker 和 Kubernetes 两个重要的技术点,具有一定的深度和学习价值。相信读者在阅读完本文之后,能够更加熟练地利用这两个技术点来进行 Web 开发和部署。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64780cc3968c7c53b04526f6

纠错
反馈