k8s支持大量商户自定义域名的配置

基于nginx -> traefik -> k8s的架构,某个应用需要支持商户的大量任意自定义域名,咋整呢?咱公司k8s上的应用遇到这个场景,因此研究了下,有以下两种方案:

方案1, 最直接粗暴但很lowB的方案,ingress中列出每个域名

# more ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: zhanghao-custom
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: aa.xx.com
    http:
      paths:
        - path: /service
          backend:
            serviceName: zhanghao-gateway-www
            servicePort: http
        - path: /
          backend:
            serviceName: zhanghao-web
            servicePort: http
  - host: bb.yy.com
    http:
      paths:
        - path: /service
          backend:
            serviceName: zhanghao-gateway-www
            servicePort: http
        - path: /
          backend:
            serviceName: zhanghao-web

            servicePort: http

每次新增域名,都要修改ingress,不能接受。

方法2:traefik新增entryPoint,ingress对该entryPoint下的请求通配

nginx控制非自定义域名走traefik_normal,自定义域名走zhanghao_custom

upstream traefik_normal {
  server traefik_server1:80;
  server traefik_server2:80;
}
upstream zhanghao_custom {
  server traefik_server1:81;
  server traefik_server2:81;
}

traefik默认所有请求是走entryPoints: http(80端口),为自定义域名新增一个entryPoints: zhanghao-custom(81端口)

# more traefik.toml
defaultEntryPoints = ["http"]
[entryPoints]
    [entryPoints.http]
        address = ":80"

    [entryPoints.zhanghao-custom]
        address = ":81"

ingress通过注解设置自定义域名走entryPoints: zhanghao-custom(81端口);不指定host,接受所有域名的请求;

增加自定义域名不需要动配置,一劳永逸

# more ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: zhanghao-custom
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/frontend-entry-points: zhanghao-custom
spec:
  rules:
  - http:
      paths:
      - path: /service
        backend:
          serviceName: zhanghao-gateway-www
          servicePort: http
      - path: /
        backend:
          serviceName: zhanghao-web
          servicePort: http

traefik效果如下:

over!

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值