kubernetes - 如何在 headless 服务上使用 Traefik IngressRoute

标签 kubernetes traefik traefik-ingress

我正在尝试将 Traefik IngressRoute 配置为指向 Headless 服务(该服务指向集群后面的数据库)。
安装程序与“普通”服务(与集群内的端点)配合得很好。
我正在使用 traefik 2.3。
但是当我尝试创建一个指向 headless 服务的 ingressRoute 时,我在 traefik 日志中出现了这个错误:

time="2020-11-27T10:41:53Z" level=error msg="cannot define a port for dev/-central-db-service" ingress=webapp-ingressroute providerName=kubernetescrd namespace=traefik

time="2020-11-27T10:41:54Z" level=error msg="cannot define a port for dev/central-db-service" providerName=kubernetescrd ingress=webapp-ingressroute namespace=traefik
这是我尝试创建的 IngressRoute,以及带有端点的 Headless 服务:

---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: webapp-ingressroute
  namespace: traefik
  labels:
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`couchdb.test.io`)
      kind: Rule
      services:
        - name: central-db-service
          kind: Service
          port: 5984
          namespace: dev
  tls:
    secretName: certificate
---
kind: Endpoints
apiVersion: v1
metadata:
  name: central-db-service
  namespace: dev
subsets:
  - addresses:
        - ip: 192.168.0.50
    ports:
      - port: 5984
        name: central-db-service
---
kind: Service
apiVersion: v1
metadata:
  name: central-db-service
  namespace: dev
spec:
  clusterIP: None
  ports:
  - port: 5984
    targetPort: 5984

该设置与“正常”服务完美配合。
我错过了什么?甚至可以使用 traefik 2.3 指向 headless 服务吗?
在此先感谢您的帮助。

最佳答案

解决 !
该错误来自我的服务和端点的错误配置。
我为端点端口设置的名称与服务端口的名称不匹配(实际上,我没有设置名称)。
一旦端点中的端口和服务中的端口具有相同的名称集,一切正常。

kind: Endpoints
apiVersion: v1
metadata:
  name: central-db-service
  namespace: dev
subsets:
  - addresses:
        - ip: 192.168.0.50
    ports:
      - port: 5984
        name: central-db-service
---
kind: Service
apiVersion: v1
metadata:
  name: central-db-service
  namespace: dev
spec:
  clusterIP: None
  ports:
  - port: 5984
    targetPort: 5984
    name: central-db-service

关于kubernetes - 如何在 headless 服务上使用 Traefik IngressRoute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65036117/

相关文章:

docker - 如何更新所有命名空间的 Kubernetes secret

javascript - Kubernetes Javascript 客户端库适用于本地但不适用于 GKE

docker - 将 Traefik StripPrefix 中间件添加到 docker-compose 标签导致 504

docker - Kubernetes Engine-Pod部署未更新为最新镜像

docker - docker-swarm和kubernetes在一起的可能性

go - 没有 Docker 的 Traefik v2 反向代理

ssl - 如何在 swarm 中将 SNI 证书上传到 traefik/consul

kubernetes - 通过注释增加 traefik 入口超时设置

kubernetes - 使用多个入口 Controller - 是否可以有一个 "default"?

docker - Traefik 可以在 Docker 主机上为容器创建具有固定端口的路由吗?