本教程将指导您如何为 Kubernetes Ingress 手动绑定 TLS 证书,实现 HTTPS 访问安全加密。

Kubernetes Ingress TLS 证书绑定教程
3 mins
622 words
Loading views
K8s

准备工作h2

在开始之前,请确保您已经:

  • 拥有 Kubernetes 集群的管理权限
  • 准备有效的 TLS 证书和私钥文件
  • 了解目标域名的 Ingress 配置信息

操作步骤h2

步骤 1:创建证书文件h3

首先,在集群节点上创建 TLS 证书和私钥文件。

# 创建 TLS 证书文件
cat > tls.crt <<EOF
-----BEGIN CERTIFICATE-----
[您的证书内容]
-----END CERTIFICATE-----
EOF
# 创建 TLS 私钥文件
cat > tls.key <<EOF
-----BEGIN RSA PRIVATE KEY-----
[您的私钥内容]
-----END RSA PRIVATE KEY-----
EOF

步骤 2:创建 Kubernetes TLS Secreth3

使用 kubectl 命令创建 TLS 类型的 Secret 资源:

kubectl create secret tls tls-a --cert tls.crt --key tls.key

执行成功后,系统会返回:

secret/tls- created

步骤 3:验证 Ingress 资源h3

在绑定证书前,先查看现有的 Ingress 资源:

kubectl get ingress

该命令会列出所有 Ingress 资源,例如:

NAME CLASS HOSTS ADDRESS PORTS AGE
network-a nginx example.com 192.168.1.100 80 5d

步骤 4:为 Ingress 绑定 TLS 证书h3

使用 kubectl patch 命令为指定的 Ingress 资源添加 TLS 配置:

kubectl patch ingress network-a -p '{"spec":{"tls":[{"hosts":["example.com"],"secretName":"tls-a"}]}}'

执行成功后,系统会返回:

ingress.networking.k8s.io/network-a patched

验证配置h2

验证 Secret 创建h3

kubectl get secret tls-a

验证 Ingress 更新h3

kubectl get ingress network-a -o yaml

检查输出中是否包含 TLS 配置部分:

spec:
tls:
- hosts:
- example.com
secretName: tls-a

测试 HTTPS 访问h2

使用 curl 命令测试 HTTPS 连接:

curl -I https://example.com

应该收到类似以下的响应:

HTTP/2 200

完整架构示意图h2

img

清理资源(可选)h2

如果需要删除 TLS Secret:

kubectl delete secret tls-a

故障排除h2

常见问题h3

  1. 证书格式错误
  • 确保证书和私钥格式正确
  • 检查文件内容是否完整
  1. Secret 创建失败
  • 验证证书和私钥是否匹配
  • 检查 Kubernetes 权限
  1. HTTPS 不生效
  • 确认 Ingress Controller 支持 TLS
  • 检查域名解析是否正确

诊断命令h3

# 查看 Secret 详情
kubectl describe secret tls-a
# 查看 Ingress 事件
kubectl describe ingress network-a

总结h2

通过以上步骤,您已经成功为 Kubernetes Ingress 配置了 TLS 证书,实现了域名的 HTTPS 加密访问。这种配置方式确保了数据传输的安全性,是生产环境中的标准实践。

整个流程可以总结为:

  1. 准备阶段:创建证书和私钥文件
  2. 存储阶段:将证书存储为 Kubernetes Secret
  3. 配置阶段:将 Secret 绑定到 Ingress 资源
  4. 验证阶段:测试 HTTPS 连接是否正常工作

这样就完成了整个 TLS 证书的绑定过程,您的应用现在可以通过


Author: Gem
Post: Kubernetes Ingress TLS 证书绑定教程