首页 > 解决方案 > 未应用证书管理器的入口 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

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

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

标签: sslkubernetesgoogle-kubernetes-enginenginx-ingresscert-manager

解决方案


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

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


推荐阅读