ssl - 未应用证书管理器的入口 TLS 路由
问题描述
我在 GKE 中有一个 K8s 集群(v1.12.8-gke.10),并且有一个带有主机规则的 nginx 入口。我正在尝试使用 cert-manager 为入口路由启用 TLS。我正在使用自签名集群发行者。但是,当我通过 HTTPS 访问该站点时,我仍然获得了默认的 K8s 证书。(证书仅对以下名称有效:kubernetes、kubernetes.default、kubernetes.default.svc、kubernetes.default.svc.cluster.local)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: test
name: test
annotations:
kubernetes.io/ingress.class: nginx
kubernetes.io/ingress.allow-http: "false"
nginx.ingress.kubernetes.io/rewrite-target: /
certmanager.k8s.io/cluster-issuer: selfsign
spec:
tls:
- secretName: test
hosts:
- test.example.com
rules:
- host: test.example.com
http:
paths:
- path: /
backend:
serviceName: test
servicePort: 80
我检查了以下内容并且工作正常:
- 一个名为“selfsign”的集群颁发者
- 由秘密“测试”支持的有效自签名证书
- 一个健康运行的 nginx 入口部署
- 负载均衡器类型的健康且正在运行的入口服务
解决方案
我认为这是 clusterissuer 的问题
看看我的集群发行者并检查
apiVersion: certmanager.k8s.io/v1alpha1
kind: ClusterIssuer
metadata:
name: prod
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: it-support@something.com
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: prod
# Enable the HTTP-01 challenge provider
http01: {}
检查正确的 url 以获得生产级证书:
如果您的服务器网址是这样的:
这意味着您正在申请可能出现错误的暂存证书。
推荐阅读
- julia - 将整数向量转换为整数
- reactjs - 如何删除 React Typescript 中类型“{}”上不存在的属性“长度”
- python - C++ VTK 应用程序 UI 自动化
- c++ - 如何将 Rcpp::List 存储为类成员
- xpath - Xpath 在标签之间进行选择
- apache - apache2中conf、mods和站点的区别
- vert.x - PreparedStatement.close 抛出新的 IllegalStateException
- python - 如何以规则的行和列间隔拆分矩阵并将函数应用于每个拆分矩阵
- akka.net - Akka.NET - 如何抑制有意的子演员失败的记录?
- react-native - 无法在 React native 中创建长度超过 0x1fffffe8 个字符的字符串