2017-11-15 5 views
0

特定のポート(9080)を公開している間に、Kubernetes PodでNodeJSイメージを実行していて、Traefikをサイドカーコンテナとしてリバースプロキシとして実行しています。展開テンプレートからTraefikルートを指定する方法サイドカーKuberenetsのポートへのTraefikコンテナルート

展開

apiVersion: apps/v1beta1 
kind: Deployment 
metadata: 
    labels: 
    app: web 
    name: web-controller 
spec: 
    replicas: 1 
    selector: 
    matchLabels: 
     app: web 
    template: 
    metadata: 
     labels: 
     app: web 
    spec: 
     containers: 
     - image: "nodeJS-image" 
     name: web 
     ports: 
     - containerPort: 9080 
      name: http-server 
     - image: "traefik-image" 
     name: traefik-proxy 
     ports: 
     - containerPort: 80 
      name: traefik-proxy 
     - containerPort: 8080 
      name: traefik-ui 
     args: 
     - --web 
     - --kubernetes 
+0

上のNode.js側の車のコンテナに転送されるはずです、あなたは「(指定によって何を意味するかを明確でしたing)Traefikルート?その部分は私には分かりません。 –

+0

つまり、 'traefik.frontend.rule = Host:machine-echo.example.com'のようなラベルを定義します。ドッカーでTraefikを使用するのと同様です。手短に言えば、私はTrapikがポッド内のポート9080に公開された 'nodeJS-image'コンテナにリクエストを転送する必要があります。不正確な用語を使用している場合はお詫び申し上げます。 – Khaled

+0

申し訳ありませんが、私はあなたが何を意味しているのかを知り、答えを加えました。それがあなたの質問と一致するかどうかを教えてください。 –

答えて

1

私が正しく理解していれば、あなたは同じポッドに住んでのNode.jsアプリケーションにTraefikコンテナを打つ要求を転送します。アプリケーションがTraefikの観点から静的に設定されている場合、適切なファイルプロバイダの設定をサイドカーコンテナを指すTraefikポッド(恐らくConfigMap経由)にマウントするだけです。

これを達成するための最も簡単な方法(as documented)はTraefikのTOML設定ファイルの一番下に直接、次のファイル・プロバイダーの設定を追加することです:

[file] 

[backends.backend.servers.server] 
url = "http://127.0.0.1:9080" 
[frontends.frontend] 
backend = "backend" 
[frontends.frontend.routes.route] 
host = "machine-echo.example.com" 

あなたはTraefikポッドにTOMLコンフィギュレーションファイルをマウントした場合デフォルト以外のパス(/etc/traefik.toml)である場合は、ファイルの正しい場所を参照するマニフェストの--configFileオプションも渡す必要があります。

その後、machine-echo.example.comのホストヘッダーとポート80でTraefikコンテナを打つすべての要求をポート9080

+0

素晴らしい!私はコンテナargとして 'args:--configfile =/config/traefik.toml'としてconfigFileをconfigMapボリューム ' volume: の名前を付けてマウントして渡しました:config: configMap: 名前:traefik-configmap -name' – Khaled

関連する問題