Kubernetes 用 Nginx Ingress Controller 实现 HTTPS

阅读时长 6 分钟读完

在 Kubernetes 中有很多方式可以实现 HTTPS 通信,但是使用 Nginx Ingress Controller 是一种非常流行的选择。它可以自动配置 SSL 证书,从而实现安全的 HTTPS 连接。本文将介绍如何在 Kubernetes 中使用 Nginx Ingress Controller 来实现 HTTPS。

准备工作

为了完成本文中的示例,您需要在 Kubernetes 中安装 Nginx Ingress Controller。如果您尚未安装,可以参考 Nginx Ingress Controller 的官方文档 进行安装。在本文中,我们将假设您已经正确安装并配置了 Nginx Ingress Controller。

创建 TLS 证书

为了使用 HTTPS,您需要创建一个 SSL 证书。您可以使用自己的证书,也可以使用 Let's Encrypt 等证书颁发机构(CA)签发的证书。

如果您使用的是自签名的证书,则需要将其配置到 Kubernetes 的证书管理中。可以使用 kubectl create secret 命令将证书添加到集群中。

以下示例展示了如何将名为 tls-secret 的自签名证书添加到 Kubernetes 中:

如果您使用的是由 CA 签发的证书,则需要将其提供给 Nginx Ingress Controller。下面是一个例子,该例子展示了如何在 Kubernetes 中通过集群内的命名空间 default 使用 cert-manager 创建 Let's Encrypt 签发的证书。在创建证书之前需要先创建 Issuer。以下示例展示了创建 Issuer 的命令:

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

当您创建了 config.yaml 文件时,您可以通过以下命令创建 Issuer:

在创建 Issuer 之后,我们可以创建证书对象。以下是一个示例 Certificate 对象:

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

当您创建了 certificate.yaml 文件时,您可以通过以下命令创建证书对象:

创建 Ingress 规则

创建了 TLS 证书后,您就可以为您的应用程序创建 Ingress 规则,以使用 HTTPS 连接。

以下是一个示例 Ingress 规则:

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

在此示例中,我们定义了一个将匹配 URL example.com 的 Ingress 规则,并将流量路由到名为 example-service 的 Kubernetes Service。

在规则中,我们还有两个 Nginx Ingress Controller 的注释,分别是:

  • nginx.ingress.kubernetes.io/ssl-redirect: "true":该注释指示 Nginx Ingress Controller 将未加密的 HTTP 流量重定向到加密的 HTTPS 流量。
  • nginx.ingress.kubernetes.io/force-ssl-redirect: "true":该注释指示 Nginx Ingress Controller 强制重定向所有流量到 HTTPS。

测试 HTTPS 连接

完成了上述配置后,我们可以使用浏览器来测试 HTTPS 连接。打开浏览器,并使用 Ingress 规则所配置的域名 example.com 访问您的应用程序。如果您的浏览器成功显示 HTTPS(通常会显示一个锁形状的图标),并且没有任何连接错误,则表示 HTTPS 连接已成功建立。

总结

在本文中,我们介绍了如何在 Kubernetes 中使用 Nginx Ingress Controller 实现 HTTPS。我们创建了 SSL 证书、Ingress 规则,并在浏览器中测试了 HTTPS 连接。Nginx Ingress Controller 不仅是一种可靠且流行的方法,而且它也很容易设置和配置。希望这篇文章能够帮助您熟练掌握使用 Nginx Ingress Controller 配置 HTTPS 的方法。

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

纠错
反馈