Kubernetes 中使用 Ingress 配置 HTTPS

阅读时长 5 分钟读完

随着云计算的发展,越来越多的应用被部署到 Kubernetes 集群中。在 Kubernetes 中,Ingress 是一种负责路由外部流量到 Kubernetes 集群中的 API 对象。它允许我们将多个服务映射到同一个 IP 地址和端口上,并提供了一些高级路由功能,例如 TLS 终止。在本文中,我们将介绍如何在 Kubernetes 中使用 Ingress 配置 HTTPS。

环境准备

在开始之前,请确保您已经安装了以下软件:

  • Kubernetes 集群
  • kubectl 命令行工具
  • cert-manager

关于 cert-manager 的安装和配置,可以参考 官方文档

生成证书

为了启用 HTTPS,我们需要先生成 TLS 证书。在 Kubernetes 中,我们可以使用 cert-manager 自动化证书管理工具来生成证书。

首先,我们需要创建一个 Issuer 对象,用于定义证书的颁发机构和证书的有效期。在本文中,我们将使用 Let's Encrypt 作为颁发机构。

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

这里我们定义了一个 Issuer 对象,名为 letsencrypt。在 acme 字段中,我们指定了 Let's Encrypt 作为颁发机构,并指定了我们的邮箱地址和 ACME 服务器 URL。在 privateKeySecretRef 字段中,我们指定了一个 Secret 对象,用于存储证书的私钥。在 solvers 字段中,我们指定了使用 HTTP 验证方式来验证我们的域名。这里我们使用了 Nginx Ingress 控制器,因此在 ingress 字段中指定了 class: nginx

接下来,我们需要创建一个 Certificate 对象,用于定义证书的名称、域名和颁发机构等信息。

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

这里我们定义了一个 Certificate 对象,名为 example-com-tls。在 secretName 字段中,我们指定了一个 Secret 对象,用于存储证书和私钥。在 issuerRef 字段中,我们指定了之前创建的 Issuer 对象。在 dnsNames 字段中,我们指定了要颁发证书的域名,这里我们使用了 example.com

配置 Ingress

在生成证书之后,我们需要将证书配置到 Ingress 中。在 Kubernetes 中,我们可以使用 Ingress 对象来定义路由规则和 TLS 设置。

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

这里我们定义了一个 Ingress 对象,名为 example-com。在 annotations 字段中,我们指定了使用 Nginx Ingress 控制器和 cert-manager Issuer。在 tls 字段中,我们指定了要使用的 TLS 证书和域名。在 rules 字段中,我们指定了要路由的域名和后端服务。

测试

现在,我们已经完成了 HTTPS 的配置。让我们使用 curl 命令测试一下。

如果一切正常,您将看到您的应用程序的响应。

结论

在本文中,我们介绍了如何在 Kubernetes 中使用 Ingress 配置 HTTPS。通过使用 cert-manager 和 Ingress,我们可以轻松地启用 HTTPS,并自动化证书管理。希望这篇文章能够帮助您更好地理解 Kubernetes 中的 Ingress 和 TLS 设置,并帮助您更好地管理您的应用程序。

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

纠错
反馈