【问题标题】:Traefik Dashboard: Ingress and IngressRoute, can they co-exist?Traefik Dashboard:Ingress 和 IngressRoute,它们可以共存吗?
【发布时间】:2020-10-28 22:56:56
【问题描述】:

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

我有几个问题:

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

【问题讨论】:

    标签: kubernetes kubernetes-ingress traefik traefik-ingress


    【解决方案1】:

    所以我只使用 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
    

    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
    

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

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

    但我猜ingressingressRoute 这两个路由方案可能无法共存,因为它们都用于路由,并且当它们都存在时,系统只会使用其中一个。如果我错了,请纠正我。

    【讨论】:

      猜你喜欢
      • 2023-01-05
      • 2022-06-29
      • 1970-01-01
      • 2016-09-27
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多