2017-11-15 3 views
0

Ich bin ein NodeJS Bild in meinem Kubernetes Pod, während einen bestimmten Port (9080) ausgesetzt, und Traefik als Side-Car-Container als Reverse-Proxy laufen. Wie lege ich die Traefik-Route aus der Bereitstellungsvorlage fest?Side-Car Traefik Container Route zu Häfen in Kuberenets

Deployment

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

Könnten Sie erklären, was Sie unter „angeben () Traefik Route "? Dieser Teil ist mir nicht klar. –

+0

Nämlich die Definition von Bezeichnungen wie 'traefik.frontend.rule = Host: machine-echo.example.com', ähnlich der Verwendung von Traefik auf Dockern. Kurz gesagt, ich brauche Traefik, um Anfragen an den 'nodeJS-image' Container weiterzuleiten, der am Port 9080 innerhalb des Pods verfügbar ist. Entschuldigung, wenn ich ungenaue Terminologie verwende. – Khaled

+0

Okay, also ich _think_ Ich weiß was du meinst und fügte eine Antwort hinzu. Lassen Sie mich wissen, ob das zu Ihrer Frage passt oder nicht. –

Antwort

1

Wenn ich richtig verstehe, wollen Sie Anfragen schlagen den Traefik Behälter zum Node.js Anwendung leben in der gleichen pod zu übermitteln. Da die Anwendung statisch aus der Sicht von Traefik konfiguriert ist, können Sie einfach eine geeignete Dateiproviderkonfiguration in den Traefik-Pod laden (vermutlich über eine ConfigMap), die auf den Seitencontainer zeigt.

Die einfachste Weise, dies (as documented) zu erreichen, ist die folgende Datei Provider-Konfiguration direkt am unteren Rand des Traefik der TomL Konfigurationsdatei anhängen:

[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" 

Wenn Sie die TomL Konfigurationsdatei in das Traefik pod montieren Unter einem anderen als dem Standardpfad (/etc/traefik.toml) müssen Sie auch die Option --configFile im Manifest übergeben, die auf den korrekten Speicherort der Datei verweist.

Danach wird jede Anforderung die Traefik Behälter auf Port 80 mit einem Host-Header von machine-echo.example.com schlagen sollte der Behälter Node.js Beiwagen auf Port weitergeleitet bekommen 9080.

+0

Großartig! Ich schaffte es die configFile als Container arg wie 'args weitergeben müssen: - --configfile =/config/traefik.toml', durch die Montage Kubernetes configMap Volumen ' Bände: - Name: config configMap: Name: traefik-configmap -name' – Khaled

Verwandte Themen