繁体   English   中英

更新多域入口时,证书管理器颁发了太多相同的证书

[英]cert-manager issuing too many same certificates when a multi-domains ingress is updated

我们将 kube.netes 与入口、证书管理器 (v1.9.1) 和 letsencrypt 颁发者一起使用。 我们的用例如下:我们有一个包含 3 个服务的多租户解决方案,允许人们更改他们的域名(每个服务 1 个)。 每当有人更改域名时,都会触发与服务相关的入口更新。 此更新触发证书管理器生成新订单。

我们遇到两个问题:

  • 当有人更改一个域名时(使其在入口的 spec.tls[] 和 spec.rules[] 部分中被替换),创建的顺序似乎从入口重新生成所有 letsencrypt 证书,而不仅仅是更改的(在一些尝试后导致 letsencrypt 问题“已经颁发了太多证书”)。
  • 当一个订单的其中一个证书出现错误时(由于之前的问题,“已经颁发的证书太多”),订单中的其他证书(通常没有任何问题)似乎也没有生成。

在我们的用例中避免这些问题的最佳策略是什么? (也许我们必须通过域名创建一个入口?或者有没有一种方法可以通过证书创建一个订单,而不是在入口更新时触发现有证书的重新生成?)

--- 编辑 ---

这是入口(带有 {hidden} 字段并为隐私重命名):

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: server-ingress
  namespace: {hidden}
  annotations:
    cert-manager.io/issuer: letsencrypt-prod
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - test1.customer-domain.fr
        - test1.our-company.com
        - test2.our-company.com
      secretName: our-company-server-tls
  rules:
    - host: test1.customer-domain.fr
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              serviceName: server-v3-24-5
              servicePort: 8080
    - host: test1.our-company.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              serviceName: server-v3-24-5
              servicePort: 8080
    - host: test2.our-company.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              serviceName: server-v3-24-5
              servicePort: 8080
status:
  loadBalancer:
    ingress:
      - ip: {hidden}

谢谢,

创建的订单似乎从入口重新生成所有 letsencrypt 证书,而不仅仅是更改的

根据讨论,这是因为您对所有入口使用相同的秘密名称,您需要为入口中 TLS 中的每个主机使用不同的秘密名称,这样就不会重新创建所有证书顺序。

所以这应该有效,

  tls:
    - secretName: test1.customer-domain.fr
      hosts:
        - test1.customer-domain.fr
    - secretName: test1.our-company.com
      hosts:
        - test1.our-company.com
  rules:
    - host: test1.customer-domain.fr
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              serviceName: server-v3-24-5
              servicePort: 8080
    - host: test1.our-company.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              serviceName: server-v3-24-5
              servicePort: 8080

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM