如何在traefik前端模板中使用标签?

时间:2017-09-18 15:47:37

标签: go-templates traefik

我在Consul目录中使用标签声明了服务,并且通过Traefik的正确配置在traefik中可以看到这些服务(考虑到它有效,我已经测试过了)。

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

我希望我的服务由traefik代理以下表格的网址

Host:{{.ServiceName}}.{{.Domain}}

我已经拥有默认的工作模板Host:{{getTag("BU", tags, "white")}}.{{.ServiceName}}.{{.Domain}}所以我想我可以通过将其更改为"Error creating route for frontend a-frontend: error parsing rule: Empty rule" 来添加我的单位代码。但是当我这样做时,我会收到大量的错误消息

SELECT Unit, Color
FROM ProductColor
WHERE UniqueProdID = ‘50060’
ORDER BY Unit;

即使是使用 定义的单位标记的服务进行前端映射。

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

1 个答案:

答案 0 :(得分:1)

假设我已在我的服务上定义了version标记。这个version标记在Consul中可见。在traefik中,此标记将显示在Attributes“地图”中。

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

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

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