2017-09-18 3 views
1

Ich habe Services mit Tags in Consul Katalog deklariert, und diese Dienste sind in Traefik durch die korrekte Konfiguration von Traefik sichtbar (denke, es funktioniert, ich habe das bereits getestet).Wie verwendet man Tags in der Traefik-Frontend-Vorlage?

Diese Services haben Tags, die in Consul durch Umgebungsvariablen auf der Serviceebene deklariert sind. Ich habe in der Regel ein Versions-Tag für einige Dienste und ein Einheits-Tag für andere.

Ich möchte meine Dienste proxied haben durch traefik auf URL der folgenden Form

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

ich bereits die Standard-Arbeitsvorlage Host:{{.ServiceName}}.{{.Domain}} Also ich denke, ich von meiner Einheit-Tag hinzufügen kann es zu Host:{{getTag("BU", tags, "white")}}.{{.ServiceName}}.{{.Domain}} ändern. Aber wenn ich das tue, bekomme ich jede Menge Fehlermeldungen in Form

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

auch für Frontends Mapping mit Leistungen, die die Einheit Tag definiert haben.

Also, wie kann ich es funktionieren lassen, wenn man bedenkt, dass ich wie Jon Snow bin (ich weiß nichts über Go-Vorlagen)?

Antwort

1

Angenommen, ich habe den Tag version auf meinem Dienst definiert. Dieses version-Tag ist in Consul sichtbar. In Traefik wird dieses Tag in der Attributes "Karte" sichtbar sein.

Als Folge kann ich in der frontEndRule der folgende Code

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

Beachten Sie, dass Methodenaufrufe nicht verwenden C-ähnliche Textformatierung verwenden.

Verwandte Themen