随着云计算技术的发展,Kubernetes 已经成为了容器编排和管理的事实标准。在 Kubernetes 集群中,Ingress 是用于管理外部流量的核心组件。通过 Ingress,我们可以将流量路由到正确的服务和端口上。然而,在传输敏感数据时,我们需要保证连接的安全性,这时就需要配置 SSL 证书。接下来,本文将介绍 Kubernetes 中 Ingress 配置 SSL 证书的详细方法。
创建 SSL 证书
首先,我们需要先创建 SSL 证书。这里我们介绍使用 Let’s Encrypt 免费 SSL 证书,可以通过 Certbot 工具生成。
在 Linux 环境下,我们可以通过以下命令先安装 Certbot 工具:
$ sudo apt-get update $ sudo apt-get install certbot
安装完成后,我们就可以生成 SSL 证书了。假设我们的域名为 example.com
,我们可以通过以下命令生成 SSL 证书:
$ sudo certbot certonly --standalone -d example.com -d www.example.com
这里的 -d
参数可以指定多个域名,例如同时支持 example.com
和 www.example.com
。执行完毕后,SSL 证书就会保存在 /etc/letsencrypt/live/example.com/
目录下。
配置 Ingress
接下来,我们需要在 Kubernetes 中配置 Ingress,使其能够使用刚刚生成的 SSL 证书。
我们先创建一个 Ingress 资源文件 ingress.yml
,并写入以下内容:
-- -------------------- ---- ------- ----------- -------------------- ----- ------- --------- ----- --------------- ---------- ------- ------------ -------------------------------------------- ----------------- - ----- --- -- ----- ---- - ------ - ----------- - -- --- ------- ----------- --------------- - --- --- ------ -- ------ - ----- ----------- - -- ------- ----- ----- ------ - ----- - --------- ------ -------- -------- ----- --------------- - -- ------- --- ------- --- ----- ----- ----
这里的 nginx.ingress.kubernetes.io/ssl-certificate
指定了使用的 SSL 证书名称,需要与下面的 secretName
对应。tls.hosts
表示 SSL 证书对应的域名,需要填写正确。rules.host
则表示 Ingress 对应的域名。注意,这里的 Ingress 只是用于示例,需要按照实际情况修改。
接下来,我们执行以下命令创建 Ingress:
$ kubectl apply -f ingress.yml
创建完成后,我们可以使用以下命令查看 Ingress:
$ kubectl get ingress
创建 Secret
由于我们指定了 SSL 证书,而 Kubernetes 中的 Secret 可以用于存储证书。因此,我们需要先创建一个 Secret。
我们可以使用以下命令创建一个 Secret:
$ kubectl create secret tls example-com-tls --key /etc/letsencrypt/live/example.com/privkey.pem --cert /etc/letsencrypt/live/example.com/fullchain.pem
这里的 example-com-tls
表示 Secret 名称,需要与上面的 secretName
对应。--key
和 --cert
分别指定 SSL 证书的私钥和证书文件路径,需要填写正确路径。执行完毕后,SSL 证书就会被存储在 Secret 中。
测试
完成上述步骤后,我们就可以测试 Ingress 是否能够使用 SSL 证书了。首先,我们需要访问 example.com
,查看证书是否生效。可以使用以下命令测试:
$ curl -k https://example.com
这里的 -k
参数表示忽略证书校验,因为我们使用的是 Let’s Encrypt 的免费证书,不受浏览器的信任。如果可以正常访问,就表示 SSL 证书配置成功了。
结论
本文介绍了 Kubernetes 中 Ingress 配置 SSL 证书的方法。通过了解 Let’s Encrypt 免费 SSL 证书的生成方法,以及在 Kubernetes 中配置 Ingress 和 Secret 的方法,我们可以轻松地保证连接的安全性,保障应用程序的可靠性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6704f2c5d91dce0dc850f72f