Labels can be added to Traefik
This commit is contained in:
15
README.md
15
README.md
@@ -514,6 +514,21 @@ traefik:
|
|||||||
|
|
||||||
This starts the Traefik container with `--volume /tmp/example.json:/tmp/example.json --publish 8080:8080 --memory 512m` arguments to `docker run`.
|
This starts the Traefik container with `--volume /tmp/example.json:/tmp/example.json --publish 8080:8080 --memory 512m` arguments to `docker run`.
|
||||||
|
|
||||||
|
### Traefik container lables
|
||||||
|
|
||||||
|
Add labels to Traefik Docker container.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
traefik:
|
||||||
|
lables:
|
||||||
|
- traefik.enable: true
|
||||||
|
- traefik.http.routers.dashboard.rule: Host(`traefik.example.com`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))
|
||||||
|
- traefik.http.routers.dashboard.service: api@internal
|
||||||
|
- traefik.http.routers.dashboard.middlewares: auth
|
||||||
|
- traefik.http.middlewares.auth.basicauth.users: test:$2y$05$H2o72tMaO.TwY1wNQUV1K.fhjRgLHRDWohFvUZOJHBEtUXNKrqUKi # test:password
|
||||||
|
```
|
||||||
|
|
||||||
|
This labels Traefik container with `--label traefik.http.routers.dashboard.middlewares=\"auth\"` and so on.
|
||||||
|
|
||||||
### Traefik alternate entrypoints
|
### Traefik alternate entrypoints
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
class Mrsk::Commands::Traefik < Mrsk::Commands::Base
|
class Mrsk::Commands::Traefik < Mrsk::Commands::Base
|
||||||
delegate :optionize, to: Mrsk::Utils
|
delegate :argumentize, :optionize, to: Mrsk::Utils
|
||||||
|
|
||||||
DEFAULT_IMAGE = "traefik:v2.9"
|
DEFAULT_IMAGE = "traefik:v2.9"
|
||||||
CONTAINER_PORT = 80
|
CONTAINER_PORT = 80
|
||||||
@@ -11,6 +11,7 @@ class Mrsk::Commands::Traefik < Mrsk::Commands::Base
|
|||||||
"--publish", port,
|
"--publish", port,
|
||||||
"--volume", "/var/run/docker.sock:/var/run/docker.sock",
|
"--volume", "/var/run/docker.sock:/var/run/docker.sock",
|
||||||
*config.logging_args,
|
*config.logging_args,
|
||||||
|
*label_args,
|
||||||
*docker_options_args,
|
*docker_options_args,
|
||||||
image,
|
image,
|
||||||
"--providers.docker",
|
"--providers.docker",
|
||||||
@@ -56,6 +57,14 @@ class Mrsk::Commands::Traefik < Mrsk::Commands::Base
|
|||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
def label_args
|
||||||
|
argumentize "--label", labels
|
||||||
|
end
|
||||||
|
|
||||||
|
def labels
|
||||||
|
config.traefik["labels"] || []
|
||||||
|
end
|
||||||
|
|
||||||
def image
|
def image
|
||||||
config.traefik.fetch("image") { DEFAULT_IMAGE }
|
config.traefik.fetch("image") { DEFAULT_IMAGE }
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -54,6 +54,17 @@ class CommandsTraefikTest < ActiveSupport::TestCase
|
|||||||
new_command.run.join(" ")
|
new_command.run.join(" ")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "run with labels configured" do
|
||||||
|
assert_equal \
|
||||||
|
"docker run --name traefik --detach --restart unless-stopped --publish 80:80 --volume /var/run/docker.sock:/var/run/docker.sock --log-opt max-size=\"10m\" #{@image} --providers.docker --log.level=DEBUG --accesslog.format=\"json\" --api.insecure --metrics.prometheus.buckets=\"0.1,0.3,1.2,5.0\"",
|
||||||
|
new_command.run.join(" ")
|
||||||
|
|
||||||
|
@config[:traefik]["labels"] = { "traefik.http.routers.dashboard.service" => "api@internal", "traefik.http.routers.dashboard.middlewares" => "auth" }
|
||||||
|
assert_equal \
|
||||||
|
"docker run --name traefik --detach --restart unless-stopped --publish 80:80 --volume /var/run/docker.sock:/var/run/docker.sock --log-opt max-size=\"10m\" --label traefik.http.routers.dashboard.service=\"api@internal\" --label traefik.http.routers.dashboard.middlewares=\"auth\" #{@image} --providers.docker --log.level=DEBUG --accesslog.format=\"json\" --api.insecure --metrics.prometheus.buckets=\"0.1,0.3,1.2,5.0\"",
|
||||||
|
new_command.run.join(" ")
|
||||||
|
end
|
||||||
|
|
||||||
test "run without configuration" do
|
test "run without configuration" do
|
||||||
@config.delete(:traefik)
|
@config.delete(:traefik)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user