【问题标题】:Traefik for Kubernetes in Azure (redirect to https for the frontend)用于 Azure 中 Kubernetes 的 Traefik(前端重定向到 https)
【发布时间】:2019-03-18 22:08:56
【问题描述】:

我正在尝试将 Azure Kubernetes 中部署的服务的入口重定向到 https。无论我尝试什么都行不通。我尝试配置 Ingress 和 Traefik 本身(通过 ConfigMap)但没有任何效果。

Traefik 的配置如下:

---
# Traefik_config.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: traefik-conf
  namespace: kube-system
# traefik.toml
data:
  traefik.toml: |
    defaultEntryPoints = ["http","https"]

    [entryPoints]
      [entryPoints.http]
        address = ":80"
        [entryPoints.http.redirect]
          entryPoint = "https"
      [entryPoints.https]
        address = ":443"
        [entryPoints.https.tls]

    [frontends]
      [frontends.frontend2]
        backend = "backend1"
        passHostHeader = true
        # overrides default entry points
        entrypoints = ["http", "https"]

    [backends]
      [backends.backend1]
        [backends.backend1.servers.server1]
           url = "http://auth.mywebsite.com"

重定向的主题是没有 TLS 加密的容器化 IdentityServer API 网站。关于此事有几个问题:

  • 使用 Traefik 在 Azure Kubernetes 中重定向前端应用的最佳方式是什么
  • 在配置中,前端被编号,即“frontend2”。我假设这是 Traefik 仪表板上的应用程序的序号。问题是,仪表板只显示应用程序的总和。如果有很多,如何计算数量是多少?
  • 当我对 Ingress 应用注释时,例如“traefik.ingress.kubernetes.io/redirect-permanent: true”,相应的标签不会显示在相应应用程序的 Traefik 仪表板中。有什么原因吗?

【问题讨论】:

    标签: azure kubernetes traefik


    【解决方案1】:

    您将 http 重定向到 https 的配置看起来不错。如果你按照 Traefik 官方文档部署在 kubernetes 上,Traefik 入口控制器服务不会有 443。请确保在服务类型为LoadBalancer 的服务上打开了 443 端口。一旦我们在服务中打开一个端口,Azure 就会在 Azure 负载均衡器中打开同一个端口。服务 yaml 在这里。

    kind: Service
    apiVersion: v1
    metadata:
      name: traefik-ingress-service
      namespace: kube-system
    spec:
      selector:
        k8s-app: traefik-ingress-lb
      ports:
        - protocol: TCP
          port: 80
          name: web
        - protocol: TCP
          port: 8080
          name: admin
      type: LoadBalancer
    

    如果您想将集群中的所有 http 重定向到 https,您可以在配置文件中进行重定向。 如果只想重定向部分服务,则在 Ingress 中添加注解,实现对特定服务的重定向。

    traefik.ingress.kubernetes.io/frontend-entry-points: http,https
    traefik.ingress.kubernetes.io/redirect-entry-point: https
    

    设置重定向后,流量仪表板会在此处反映。 您还可以使用traefik.ingress.kubernetes.io/redirect-permanent: "true 设置永久重定向

    【讨论】:

      【解决方案2】:

      我自己在寻找解决方案时偶然发现了这个问题。

      我们使用 traefik 作为负载均衡器,我想将 https 重定向添加到入口路由。为此,我添加了一个 https-redirect 中间件:

      apiVersion: traefik.containo.us/v1alpha1
      kind: Middleware
      metadata:
        name: https-redirect
        namespace: <your-namespace>
      spec:
        redirectScheme:
          scheme: https
          permanent: true
      

      这里的命名空间很重要,因为您需要它来进行注解。 然后,您需要向入口添加注释:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        annotations:
          traefik.ingress.kubernetes.io/router.middlewares: <your-namespace>-https-redirect@kubernetescrd
          traefik.ingress.kubernetes.io/router.tls: "true"
        ...
      

      我在这里找到了解释: https://community.traefik.io/t/how-to-configure-middleware-with-kubernetes-ingress-middleware-xyz-does-not-exist/5016

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-20
        • 2020-06-30
        • 2022-01-12
        • 1970-01-01
        • 2019-09-24
        相关资源
        最近更新 更多