Traefik 2 parsing ENV directly into map in golang template?

Viewed 336

I want to load configurations in a dockerized traefik 2 using environment variables.

To achieve this I would like to use the golang template capabilities in traefiks dynamic file configuration.

I tried several approaches (I'm posting my json test here) but I can not seem to be able to parse the ENV into a map. Is there any other way I could achieve this?

docker-compose.yml:

version: "2.4"
services:
  internal-gateway:
    image: my-internal-gateway
    environment:
      MY_MAPPINGS: >-
        {
          "microservice1": {"host": "service1:1234"},
          "microservice2": {"host": "service2:4321"}
        }

My dynamic-traefik-configuration.yml:

http:
  routers:
    {{range $k, $v := env "MY_MAPPINGS"}}
    router-{{ $k }}:
      rule: "PathPrefix(`/{{ $k }}`)"
      service: {{ $k }}
    {{end}}

  services:
    {{range $k, $v := env "MY_MAPPINGS"}}
    {{ $k }}:
      loadBalancer:
        servers:
          - url: "{{ $v.host }}"
    {{end}}
0 Answers
Related