在 k3s 上使用 traefik 入口生成重定向?
Posted
技术标签:
【中文标题】在 k3s 上使用 traefik 入口生成重定向?【英文标题】:Generating a redirect with traefik ingress on k3s? 【发布时间】:2021-10-09 01:12:59 【问题描述】:我在 k3s 下运行 prometheus 和 grafana,可分别在 http://monitoring.internal/prometheus 和 http://monitoring.internal/grafana 访问。例如,grafana Ingress 对象如下所示:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: grafana
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: monitoring.internal
http:
paths:
- path: /grafana
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
这很好用,除了如果你降落在
http://monitoring.internal/,您收到 404 错误。我想
请求 http://monitoring.internal/ 重定向到
http://monitoring.internal/grafana。我也许可以创造另一个
运行类似darkhttpd ... --forward-all http://monitoring.internal/grafana
的服务,并创建一个 Ingress 对象
这会将/
映射到该服务,但似乎应该有
成为 Traefik 本身的一种方式。
看起来我在本地运行 Traefik 2.4.8:
$ kubectl -n kube-system exec -it deployment/traefik -- traefik version
Version: 2.4.8
Codename: livarot
Go version: go1.16.2
Built: 2021-03-23T15:48:39Z
OS/Arch: linux/amd64
我发现 this documentation for 1.7 表明有一个注释正是用于此目的:
traefik.ingress.kubernetes.io/app-root: "/index.html"
: 重定向
对 / 到已定义路径的所有请求。
但是在 grafana 入口对象上设置它似乎没有 任何影响,我还没有找到 2.x 的类似文档 (我环顾四周 here,为 示例)。
设置这种重定向的正确方法是什么?
【问题讨论】:
【参考方案1】:由于我还没有弄清楚 traefik,我想我会在这里发布我的解决方案,以防其他人遇到同样的情况。我希望有人知道这样做的正确方法,如果我知道我会更新这个答案。
我添加了一个新部署,将 darkhttpd 作为简单的指挥器运行:
apiVersion: apps/v1
kind: Deployment
metadata:
name: redirector
spec:
replicas: 1
template:
spec:
containers:
- name: redirector
image: docker.io/alpinelinux/darkhttpd
ports:
- containerPort: 8080
args:
- --forward-all
- http://monitoring.internal/grafana
对应的服务:
apiVersion: v1
kind: Service
metadata:
name: redirector
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
还有以下 Ingress 对象:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: redirector
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: monitoring.internal
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: redirector
port:
number: 8080
这些都是用kustomize部署的,它负责
在适当的地方添加标签和选择器。这
kustomization.yaml
样子:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- ingress.yaml
- service.yaml
commonLabels:
component: redirector
所有这些都到位后,对http://monitoring.internal/
的请求会到达重定向器窗格。
【讨论】:
以上是关于在 k3s 上使用 traefik 入口生成重定向?的主要内容,如果未能解决你的问题,请参考以下文章
在 k3s 上使用 Traefik 时如何获取客户端的真实 IP 地址?