【问题标题】:Traefik kubernetes crd - proxy external hostTraefik kubernetes crd - 代理外部主机
【发布时间】:2020-09-22 17:48:05
【问题描述】:

traefik 可以充当某些外部端点的反向代理吗?就像 nginx 的特定位置的代理路径一样。 例如,我想对位于另一个数据中心的https://app01.host.com 执行透明的反向代理

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: backend01-ingressroute-app
spec:
  entryPoints:
    - websecure
  routes:
  - match: Host(`backend01.host.local`) && PathPrefix(`/app`)
    kind: Rule
    services:
....

backend01.host.local/app -> https://app01.host.com ? 但是我需要在此处指定为“服务”以实现这一目标?

【问题讨论】:

    标签: kubernetes reverse-proxy traefik


    【解决方案1】:

    是的。 ExternalName 服务的 traefik 文档几乎涵盖了您正在寻找的用例

    https://docs.traefik.io/routing/providers/kubernetes-crd/

    无法获得直接链接,因此请为 ExternalName 执行“在页面中查找”

    【讨论】:

    • 谢谢,但根据 k8s 文档:在查找主机 my-service.prod.svc.cluster.local 时,集群 DNS 服务返回值为 my.database.example.com 的 CNAME 记录.访问 my-service 的工作方式与其他服务相同,但关键区别在于重定向发生在 DNS 级别,而不是通过代理或转发。如果您稍后决定将数据库移动到集群中,您可以启动其 Pod,添加适当的选择器或端点,并更改服务的类型。所以没有代理...
    【解决方案2】:

    我发现在使用 traefik 和 helm 时默认禁用外部名称服务。请注意,这必须为kubernetesCRDkubernetesIngress 分别设置。这在文档中没有得到很好的解释:https://doc.traefik.io/traefik/routing/providers/kubernetes-crd/#kind-ingressroute

    traefik helm 值文件:

    ...
    #
    # Configure providers
    #
    providers:
      kubernetesCRD:
        enabled: true
        allowCrossNamespace: false
        allowExternalNameServices: false # <- This needs to be true
        # ingressClass: traefik-internal
        # labelSelector: environment=production,method=traefik
        namespaces:
          []
          # - "default"
    
      kubernetesIngress:
        enabled: true
        allowExternalNameServices: false # <- This needs to be true
        # labelSelector: environment=production,method=traefik
        namespaces:
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-12
      • 2020-04-19
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多