OpenShift中Traefik Ingress自定义自签名证书不生效问题排查
OpenShift中Traefik Ingress自定义证书未生效问题排查与解决
问题排查与修复步骤
1. 修正TLS Secret的类型
你当前创建的是generic类型的Secret,但Kubernetes/OpenShift要求TLS证书必须使用tls类型的Secret,Traefik才能正确识别并读取其中的证书文件。重新创建Secret:
# 删除原有错误的Secret oc delete secret my-tls # 创建正确的tls类型Secret oc create secret tls my-tls --key=my.key --cert=my.crt
2. 验证Secret的命名空间一致性
确保my-tls Secret和你的Ingress对象、Traefik控制器处于同一个命名空间。如果Traefik安装在独立命名空间(比如traefik),而Ingress和Secret在其他命名空间,需要将Secret同步到Traefik所在命名空间,或者保持三者处于同一命名空间(Ingress的tls.secretName默认读取当前命名空间的Secret)。
3. 确认证书的域名匹配
检查你生成的自签名证书是否包含目标域名traefik.ben-tests.com:
# 查看证书的主题和SAN字段 openssl x509 -in my.crt -text -noout | grep -E "(Subject:|DNS:)"
如果输出中没有traefik.ben-tests.com,需要重新生成证书,确保在openssl交互步骤中填写正确的Common Name(CN),或者通过配置文件添加SAN扩展:
# 生成带SAN的自签名证书配置文件 cat > openssl.cnf <<EOF [req] distinguished_name = req_distinguished_name x509_extensions = v3_req prompt = no [req_distinguished_name] CN = traefik.ben-tests.com [v3_req] keyUsage = keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = traefik.ben-tests.com EOF # 使用配置文件生成证书 openssl req -new -newkey rsa:2048 -nodes -keyout my.key -out my.crt -config openssl.cnf -x509 -days 365
4. 优化Ingress配置
你的Ingress注解已经正确指定了websecure入口点和TLS启用,可以额外添加注解强制绑定证书Secret,确保Traefik优先读取指定证书:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: whoami-http annotations: traefik.ingress.kubernetes.io/router.entrypoints: websecure traefik.ingress.kubernetes.io/router.tls: "true" traefik.ingress.kubernetes.io/router.tls.secretname: my-tls spec: tls: - hosts: - traefik.ben-tests.com secretName: my-tls rules: - host: traefik.ben-tests.com http: paths: - path: /iamben pathType: Prefix backend: service: name: whoami-svc port: number: 80
更新Ingress后等待Traefik重新加载配置:
oc apply -f your-ingress.yaml
替换Traefik全局默认证书
如果希望所有未指定证书的Ingress都使用你的自定义证书,可以替换Traefik的全局默认证书:
- 将自定义证书的
tls类型Secret部署到Traefik所在的命名空间(比如traefik) - 修改Traefik的Helm values.yaml,添加以下配置:
tls: stores: default: defaultCertificate: secretName: my-tls
- 升级Traefik Helm部署:
helm upgrade traefik traefik/traefik -n traefik -f your-values.yaml
内容的提问来源于stack exchange,提问作者ben shalev
相关产品推荐
相关产品推荐

