本文档详细介绍通过创建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.key

1.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-tls

3.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