本文档详细介绍通过创建Secret存储Nginx证书,进而配置Ingress实现HTTPS访问的完整步骤,适用于需要为域名启用HTTPS加密的业务场景(本文以xxx.test.com域名为例)。
一、前置准备
- 证书文件:提前下载Nginx对应的HTTPS证书文件,需包含tls.crt(证书文件)和tls.key(密钥文件)两个核心文件;
- 环境要求:已安装kubectl命令行工具,且能正常连接Kubernetes集群;
- 基础资源:已创建目标Ingress资源,后续需将TLS配置追加至Ingress配置中。
二、操作步骤
步骤1:创建Secret存储证书
使用kubectl命令创建tls类型的Secret,用于存储下载的证书和密钥文件。
1.1 命令格式
kubectl create secret tls nginx-tls --cert=pat/to/tls.crt --key=path/to/tls.key1.2 命令说明
- create secret tls:指定创建tls类型的Secret,用于存储HTTPS证书相关信息;
- nginx-tls:Secret的名称,可自定义,后续配置Ingress时需对应此名称;
- –cert=path/to/tls.crt:指定证书文件tls.crt的实际路径(需替换为本地文件的真实路径,相对路径或绝对路径均可);
- –key=path/to/tls.key:指定密钥文件tls.key的实际路径(需替换为本地文件的真实路径)。
1.3 执行命令
将命令中的路径替换为实际证书文件路径后,在命令行执行该命令。执行成功后,无额外输出,可通过后续步骤验证Secret是否创建成功。
步骤2:验证Secret创建结果
命令执行完成后,可通过Kubernetes集群控制台或kubectl命令查看创建的Secret,确认创建成功。控制台查看示意如下:

步骤3:将TLS配置追加至Ingress配置
找到目标Ingress的配置文件或配置界面,将以下TLS配置内容追加至Ingress配置中,实现证书与域名的关联。
3.1 需追加的TLS配置
tls:
- hosts:
- xxx.test.com
secretName: nginx-tls3.2 配置说明
- tls:固定配置节点,用于定义HTTPS相关的TLS配置;
- hosts:指定需要启用HTTPS的域名列表,本文示例为xxx.test.com;
- secretName: nginx-tls:指定关联的Secret名称,需与步骤1中创建的Secret名称(nginx-tls)完全一致。
3.3 配置追加示意
在Ingress配置中正确追加TLS配置后的效果如下:

注意:配置追加时需注意YAML语法规范,缩进需与原有配置保持一致(推荐使用2个空格缩进),避免因格式错误导致配置失效。
三、访问验证
TLS配置完成后,无需额外重启操作,Ingress Controller会自动感知配置变化并更新底层Nginx配置。此时可通过HTTPS协议访问目标域名:https://xxx.test.com
若能正常访问且浏览器显示证书有效(无安全警告),则说明Secret创建及TLS配置均生效。
四、常见问题说明
- 问题1:执行创建Secret命令时提示“no such file or directory”?
解决:检查–cert和–key指定的文件路径是否正确,确保文件存在于当前执行命令的目录或使用绝对路径。 - 问题2:访问HTTPS域名时提示证书无效?
解决:① 确认Secret名称与Ingress配置中的secretName一致;② 检查证书文件(tls.crt)是否与目标域名匹配;③ 确认证书未过期。 - 问题3:配置后无法通过HTTPS访问?
解决:检查Ingress资源状态是否正常(kubectl get ingress),查看Ingress Controller日志排查配置同步问题。
作者:admin 创建时间:2023-12-11 10:38
最后编辑:吴升斌 更新时间:2026-01-30 18:08
最后编辑:吴升斌 更新时间:2026-01-30 18:08