Traefik 仪表板:Ingress 和 IngressRoute,它们可以共存吗?

Ken*_*soi 6 kubernetes traefik kubernetes-ingress traefik-ingress

最近我正在将一个项目转移到 Kubernetes 并使用 Traefik 作为入口控制器。对于 Traefik,我使用了 Traefik Ku​​bernetes Ingress 提供程序进行路由。当我尝试添加 Traefik 仪表板时,我发现它似乎只能使用 IngressRoute 添加(即使用 Kubernetes CRD 作为提供程序)。

我有几个问题:

  • 是否可以使用 Traefik Ku​​bernetes Ingress provider 来显示仪表板?
  • 我可以同时使用 kubernetesingress 和 kubernetescrd 作为提供者吗?Ingress 和 IngressRoute 可以共存吗?

Ken*_*soi 6

所以我只使用 Traefik Ku​​bernetes Ingress 解决了 Traefik Dashboard 问题,第一个问题的答案是“是”:

以下是我的配置:

traefik-deployment.yaml

kind: Deployment
apiVersion: apps/v1
metadata:
  name: traefik
  namespace: ingress-traefik
  labels:
    app: traefik

spec:
  replicas: 1
  selector:
    matchLabels:
      app: traefik
  template:
    metadata:
      labels:
        app: traefik
    spec:
      serviceAccountName: traefik-ingress-controller
      containers:
        - name: traefik
          image: traefik:v2.2
          ports:
            - name: web
              containerPort: 80
            - name: websecure
              containerPort: 443
            - name: admin
              containerPort: 8080
          args:
            - --api
            - --api.insecure=true
            - --api.dashboard=true
            - --providers.kubernetesingress
            - --providers.kubernetescrd
            - --entrypoints.web.Address=:80
            - --entrypoints.websecure.Address=:443
Run Code Online (Sandbox Code Playgroud)

traefik-dashboard-ingress.yaml

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: traefik-dashboard-ingress
  namespace: ingress-traefik
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/router.entrypoints: web, websecure
    traefik.ingress.kubernetes.io/router.tls: "true"
    traefik.ingress.kubernetes.io/router.middlewares: ingress-traefik-traefikbasicauth@kubernetescrd
    cert-manager.io/cluster-issuer: letsencrypt-prod

spec:
  tls:
    - secretName: cert-stage-wildcard

  rules:
    - host: traefik.your-domain.io
      http:
        paths:
          - path: /
            backend:
              serviceName: traefik-service
              servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

提出这个问题的关键是设置api.insecure=true,这样我就可以在我的本地主机上进行端口转发和测试 Traefik 仪表板,然后通过traefik kubernetes ingress.

另一个问题(我可以同时使用kubernetesingresskubernetescrd作为提供者)也被确认为“是”,因为我现在将它们一起使用,kubernetesingress用于路由和kubernetescrd在 basicAuth 中间件上。

但我想这两个路由方案ingress,并ingressRoute可能无法共存,因为他们都路由,只有其中一人将被系统使用时,两者的存在。如果我错了,请纠正我。