【问题标题】:Generating a redirect with traefik ingress on k3s?在 k3s 上使用 traefik 入口生成重定向?
【发布时间】:2021-10-09 01:12:59
【问题描述】:

我在 k3s 下运行 prometheus 和 grafana,可分别在 http://monitoring.internal/prometheushttp://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,为 示例)。

设置这种重定向的正确方法是什么?

【问题讨论】:

    标签: kubernetes kubernetes-ingress traefik k3s


    【解决方案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/ 的请求会到达重定向器窗格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多