Traefik Dashboard:Ingress 和 IngressRoute,它们可以共存吗?
Traefik Dashboard: Ingress and IngressRoute, can they co-exist?
最近我正在将一个项目迁移到 Kubernetes 并使用 Traefik 作为入口控制器。对于 Traefik,我使用 Traefik Kubernetes Ingress provider 进行路由。当我尝试添加 Traefik 仪表板时,我发现它似乎只能使用 IngressRoute 添加(即使用 Kubernetes CRD 作为提供者)。
我有几个问题:
- 是否可以使用 Traefik Kubernetes Ingress 提供程序调出仪表板?
- 我可以同时使用 kubernetesingress 和 kubernetescrd 作为提供者吗? Ingress和IngressRoute可以共存吗?
所以我只使用 Traefik Kubernetes Ingress 解决了 Traefik Dashboard 问题,第一个问题的答案是 'Yes':
以下是我的配置:
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
,有了这个我可以 port-forward 并在我的本地主机上测试 Traefik 仪表板,然后通过 traefik kubernetes ingress
路由服务.
另一个问题(我可以同时使用kubernetesingress
和kubernetescrd
作为提供者吗)也被确认为'Yes',因为我现在一起使用它们,kubernetesingress
用于路由和 kubernetescrd
在 basicAuth 中间件上。
但是我猜ingress
和ingressRoute
这两个路由方案可能无法co-exist因为它们都是路由,系统只会使用其中一个当两者都存在时。如有不妥请指正
最近我正在将一个项目迁移到 Kubernetes 并使用 Traefik 作为入口控制器。对于 Traefik,我使用 Traefik Kubernetes Ingress provider 进行路由。当我尝试添加 Traefik 仪表板时,我发现它似乎只能使用 IngressRoute 添加(即使用 Kubernetes CRD 作为提供者)。
我有几个问题:
- 是否可以使用 Traefik Kubernetes Ingress 提供程序调出仪表板?
- 我可以同时使用 kubernetesingress 和 kubernetescrd 作为提供者吗? Ingress和IngressRoute可以共存吗?
所以我只使用 Traefik Kubernetes Ingress 解决了 Traefik Dashboard 问题,第一个问题的答案是 'Yes':
以下是我的配置:
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
,有了这个我可以 port-forward 并在我的本地主机上测试 Traefik 仪表板,然后通过 traefik kubernetes ingress
路由服务.
另一个问题(我可以同时使用kubernetesingress
和kubernetescrd
作为提供者吗)也被确认为'Yes',因为我现在一起使用它们,kubernetesingress
用于路由和 kubernetescrd
在 basicAuth 中间件上。
但是我猜ingress
和ingressRoute
这两个路由方案可能无法co-exist因为它们都是路由,系统只会使用其中一个当两者都存在时。如有不妥请指正