Ingress 配置 SSL 证书实现 Kubernetes 应用安全通信的完整指南
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
本文详细介绍如何在 Kubernetes 中通过 Ingress 配置 SSL 证书,实现应用的安全通信,涵盖证书的创建与管理、Ingress 资源的配置方法,以及使用 TLS 加密流量的具体步骤,帮助用户保障服务传输安全。
在现代云原生架构中,Kubernetes 已成为容器编排的事实标准,随着越来越多的应用部署在 Kubernetes 集群中,如何保障这些应用对外服务的安全性变得至关重要,使用 HTTPS 加密通信是保障数据传输安全的基本要求,而 Ingress 作为 Kubernetes 中管理外部访问的核心组件,承担着将外部流量路由到集群内部服务的重要职责,为 Ingress 配置 SSL 证书,是实现安全通信的关键步骤。
本文将详细介绍如何在 Kubernetes 的 Ingress 控制器(如 Nginx Ingress Controller)中配置 SSL 证书,确保通过 HTTPS 安全地访问你的应用服务。
SSL 证书的基本概念
SSL(Secure Sockets Layer)及其继任者 TLS(Transport Layer Security)是一种用于加密网络通信的安全协议,通过为网站配置 SSL 证书,可以启用 HTTPS 协议,防止数据在传输过程中被窃听或篡改,SSL 证书通常由受信任的证书颁发机构(CA)签发,包含域名、公钥和签名等信息。
在 Kubernetes 环境中,SSL 证书可以通过 Secret 资源挂载到 Ingress 控制器中,使 Ingress 在处理外部请求时自动启用 HTTPS。
准备 SSL 证书
要为 Ingress 配置 SSL 证书,首先需要获取有效的证书文件,你可以选择以下几种方式:
-
自签名证书:适用于测试环境,可以使用 OpenSSL 命令生成:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout tls.key -out tls.crt -subj "/CN=example.com"
-
Let’s Encrypt 免费证书:适用于生产环境,可通过 Cert-Manager 自动申请和续期。
-
商业 CA 证书:从 DigiCert、GlobalSign 等机构购买,适合企业级应用。
创建 Kubernetes Secret 存储证书
Kubernetes 使用 tls 类型的 Secret 来存储证书和私钥,使用以下命令将证书创建为 Secret:
kubectl create secret tls example-tls-secret \ --namespace=default \ --cert=tls.crt \ --key=tls.key
该命令会在 default 命名空间中创建名为 example-tls-secret 的 Secret,Ingress 将引用此 Secret 来启用 HTTPS。
配置 Ingress 资源启用 HTTPS
在 Ingress 资源定义中指定 TLS 配置,以下是一个典型的 Ingress YAML 示例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- example.com
secretName: example-tls-secret
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-service
port:
number: 80
在这个配置中:
tls字段指定了需要启用 HTTPS 的域名(example.com)以及对应的 Secret 名称。- 注解
ssl-redirect: "true"表示将 HTTP 请求自动重定向到 HTTPS。 rules定义了路由规则,将 example.com 的根路径映射到后端服务。
验证配置
部署 Ingress 后,可以通过以下方式验证 HTTPS 是否生效:
- 访问
https://example.com,确认浏览器显示安全锁标志。 - 使用
curl -k https://example.com检查响应内容。 - 查看 Ingress Controller 日志,确认没有 TLS 相关错误。
自动化与最佳实践
对于生产环境,建议结合 Cert-Manager 实现证书的自动申请与续期,Cert-Manager 可以与 Let’s Encrypt 集成,自动管理证书生命周期,避免因证书过期导致服务中断。
应定期轮换证书、使用强加密套件,并启用 HSTS(HTTP Strict Transport Security)增强安全性。
为 Ingress 配置 SSL 证书是保障 Kubernetes 应用对外通信安全的基础措施,通过合理使用 Secret 和 Ingress 规则,可以轻松实现 HTTPS 加密访问,无论是测试环境还是生产系统,都应重视 TLS 的配置与管理,构建安全、可信的服务入口。


