【问题标题】:Ingress TLS routes with cert-manager not applied未应用证书管理器的入口 TLS 路由
【发布时间】:2020-01-11 18:13:32
【问题描述】:

我在 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. 负载均衡器类型的健康且正在运行的入口服务

【问题讨论】:

    标签: ssl kubernetes google-kubernetes-engine nginx-ingress cert-manager


    【解决方案1】:

    我认为是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

    表示您正在申请暂存证书,可能会出现错误。

    【讨论】:

      【解决方案2】:

      我已按照 Digital Ocean 的教程进行操作,并且能够使用 GKE 中的 Helm、Tiller、Letsencrypt 和 Nginx Ingress 控制器使用 cert-manager 为入口路由启用 TLS。

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

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

      $ curl test.example.com

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

      另一方面,尝试运行 curl on:

      $ curl https://test.example.com

      应该显示网站响应。

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

      【讨论】:

        猜你喜欢
        • 2021-01-26
        • 2018-03-25
        • 1970-01-01
        • 2020-01-17
        • 1970-01-01
        • 1970-01-01
        • 2020-04-01
        • 2020-02-05
        • 2021-06-06
        相关资源
        最近更新 更多