0

我在 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

我检查了以下内容并且工作正常:

  1. 一个名为“selfsign”的集群颁发者
  2. 由秘密“测试”支持的有效自签名证书
  3. 一个健康运行的 nginx 入口部署
  4. 负载均衡器类型的健康且正在运行的入口服务
4

2 回答 2

0

我认为这是 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 以获得生产级证书:

服务器:https ://acme-v02.api.letsencrypt.org/directory

如果您的服务器网址是这样的:

服务器:https ://acme-staging-v02.api.letsencrypt.org/directory

这意味着您正在申请可能出现错误的暂存证书。

于 2019-09-10T05:35:46.023 回答
0

我遵循了Digital Ocean中的教程,并且能够使用 cert-manager 启用 TLS,以便在 GKE 中使用 Helm、Tiller、Letsencrypt 和 Nginx Ingress 控制器进行入口路由。

我没有使用主机 test-example.com,而是使用自己的域名并启动了虚拟后端服务(echo1 和 echo2)来进行测试。

遵循教程并验证 HTTPS 是否正常工作后,尝试 curl 主机:

$ curl test.example.com

您应该会看到 308 http 响应(永久重定向)。这表明 HTTP 请求被重定向以使用 HTTPS。

另一方面,尝试在以下位置运行 curl:

$ 卷曲https://test.example.com

应该向您显示站点响应。

您可以使用verbose -v 标志运行前面的命令来检查证书握手并验证证书信息。

于 2019-09-12T08:55:43.040 回答