kubernetes中具有单个traefik入口控制器的多个客户的多个acme部分

时间:2018-07-15 15:15:21

标签: kubernetes lets-encrypt traefik kubernetes-ingress

情况:

我希望许多客户共享一组公用的公共IP来访问kubernetes集群。

集群中基于主机名的路由已完成。但是我想为我所有客户的域提供HTTPS。

我有一组边缘路由器节点,每个节点都有一个公共IP。在这些节点上有一个配置为DaemonSet的Traefik入口控制器。

我们假设可以有成千上万个拥有数千个域的客户。

我的问题是我想拥有多个acme部分。

从我的入口控制器清单中的ConfigMap中提取:

[acme]
  email = "ca@mycompany.com"
  storage = "/etc/traefik/acme.json"
  entryPoint = "https"    
  onHostRule = true
  caServer = "https://acme-v02.api.letsencrypt.org/directory"
[[acme.domains]]
  main = "mycustomer1.com"
[acme.httpChallenge]
  entryPoint = "http"

我理想的解决方案是采用一种方法将每个客户https配置拆分为单独的文件,每个文件都有自己的acme设置。

或者更好的是,有一种方法可以从入口资源进行配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
namespace: garden
annotations:
    kubernetes.io/ingress.class: traefik

    #
    # LET'S ENCRYPT CONFIGURATION COULD BE HERE.
    # THAT WAY IT WOULD BE EASY TO CONFIGURE HTTPS FOR EACH CUSTOMER.
    #

spec:
rules:
    - host: mycustomer1.com
    http:
        paths:
        - path: /
            backend:
            serviceName: backend
            servicePort: 80

有什么办法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

我建议尝试为每个客户创建多个kind: Ingress并对其进行管理。您将可以为每个Ingress类使用特殊的configmap