目的
Rancher (Docker) を実行しているサーバーがあります。そのサーバーには、関連のないスタックがいくつかあります。
Traefik をそのスタックの主要なインタラクション ポイントにしたいと考えています。そして、パスに基づいて異なるコンテナへのリクエストを負荷分散/プロキシします。
/api
バックエンドserver
サービスにトラフィックを送信させたい。そして、トラフィックをサービスに送信し/
ますfrontend
。
現在の状態
docker-compose.yml
これは、関連するサービスのみを表示する私のスリム化されたバージョンです。
version: '2'
services:
server:
image: server
labels:
- "traefik.frontend.rule=PathPrefix:/api"
- "traefik.enable=true"
- "traefik.port=80"
frontend:
image: frontend
labels:
- "traefik.frontend.rule=PathPrefix:/"
- "traefik.enable=true"
- "traefik.port=80"
proxy:
image: traefik:v1.4
command: --web --accessLog --rancher --rancher.exposedbydefault=false --rancher.metadata=true
volumes:
- /dev/null:/traefik.toml
次に、パブリック ポートをリッスンする Rancher ロード バランサーを使用して、リクエストをサービスにリダイレクトしapp1.example.com
ますproxy
。次に、リクエストを取得し、パスに基づいて 2 つのコンテナーのそれぞれにトラフィックをリダイレクトします。
traefik.app1.example.com
また、トラフィックを同じサービス、つまり Web UI にアクセスするproxy
ためのポートにリダイレクトします。8080
スタックが 1 つしかない場合でも機能します。
問題
別のスタックを追加した場合 (またはそのスタックを複製した場合)、Traefik ラベルを持つサービスがさらにある場合、 from はサービス内のサービスと Traefik ラベルを宣言する他のスタックproxy
からapp1
ラベルを読み取ります。app2
次に、 in の Web UI でproxy
、app1
さまざまなスタックのすべてのバックエンドを確認できます。ただし、フロントエンドのルールは上書きされます。
質問
これまで、Traefik を独自のグローバル ロード バランサー/プロキシとして使用する方法の例を主に見てきました。スタックごとに分離された Traefik インスタンス、または Traefik ロード バランサーの階層を作成することもできると思っていたことに気付きました。
設定が欠けているか、何かを誤解しているように思えます。
それでも、スタックごとに異なる分離された Traefik インスタンスを持ち、それらが独自のスタック内のサービスのみをリッスンして使用するようにすることは可能ですか?
ランチャーで可能ですか?他の Docker スタック オーケストレーター (Swarm など) で可能ですか?
それが可能であれば、何が欠けていますか?