随着云计算的发展,越来越多的应用被部署到 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 命令测试一下。
$ curl -k https://example.com/
如果一切正常,您将看到您的应用程序的响应。
结论
在本文中,我们介绍了如何在 Kubernetes 中使用 Ingress 配置 HTTPS。通过使用 cert-manager 和 Ingress,我们可以轻松地启用 HTTPS,并自动化证书管理。希望这篇文章能够帮助您更好地理解 Kubernetes 中的 Ingress 和 TLS 设置,并帮助您更好地管理您的应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6762a476856ee0c1d40830a6