【问题标题】:How to use tags in traefik front-end template?如何在 traefik 前端模板中使用标签?
【发布时间】:2017-09-18 15:47:37
【问题描述】:

我在 Consul Catalog 中使用标签声明了服务,这些服务通过 Traefik 的正确配置在 traefik 中可见(认为它有效,我已经测试过了)。

这些服务通过服务层上的环境变量在 Consul 中声明了标签。我通常在某些服务上有一个版本标签,在其他服务上有一个单位标签。

我想让 traefik 在以下形式的 URL 上代理我的服务

http://{version}.{unit].{service}.{domain}/

我已经有了默认的工作模板Host:{{.ServiceName}}.{{.Domain}},所以我想我可以通过将其更改为Host:{{getTag("BU", tags, "white")}}.{{.ServiceName}}.{{.Domain}} 来添加我的单位标签。但是当我这样做时,我会在表单中收到大量错误消息

"Error creating route for frontend a-frontend: error parsing rule: Empty rule"

即使是与具有定义了单元标签的服务的前端映射。

那么,考虑到我就像 Jon Snow(我对 go 模板一无所知),我怎样才能让它工作呢?

【问题讨论】:

    标签: go-templates traefik


    【解决方案1】:

    假设我在我的服务上定义了version 标签。这个 version 标签在 Consul 中可见。在 traefik 中,这个标签会在 Attributes "map" 中可见。

    因此,我可以在 frontEndRule 中使用以下代码

    frontEndRule = Host:{{if hasTag "version" .Attributes}}{{getTag "version" .Attributes ""}}.{{end}}{{.ServiceName}}.{{.Domain}}
    

    请注意,方法调用不使用类似 C 的文本格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 2014-03-20
      • 1970-01-01
      • 2011-09-17
      • 2013-01-26
      • 2016-10-22
      • 2011-08-28
      • 1970-01-01
      相关资源
      最近更新 更多