Sidecar Traefik 容器路由到 Kubernetes 中的端口
Side-car Traefik container route to ports in Kuberenets
我是 运行 我的 Kubernetes Pod 中的一个 NodeJS 镜像,同时暴露了一个特定的端口 (9080),运行 Traefik 作为 side-car 容器作为反向代理。如何从部署模板中指定 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
如果我没理解错的话,您想将命中 Traefik 容器的请求转发到位于同一个 pod 中的 Node.js 应用程序。鉴于应用程序是从 Traefik 的角度静态配置的,您可以简单地将适当的文件提供程序配置挂载到指向边车容器的 Traefik pod(大概通过 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"
如果您将 TOML 配置文件挂载到 Traefik pod 中的默认路径(/etc/traefik.toml
)以外的路径下,您还需要在清单中传递 --configFile
选项引用文件的正确位置。
在那之后,任何使用 machine-echo.example.com
主机 header 访问端口 80 上的 Traefik 容器的请求都应该转发到端口 9080 上的 Node.js 边车容器。
我是 运行 我的 Kubernetes Pod 中的一个 NodeJS 镜像,同时暴露了一个特定的端口 (9080),运行 Traefik 作为 side-car 容器作为反向代理。如何从部署模板中指定 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
如果我没理解错的话,您想将命中 Traefik 容器的请求转发到位于同一个 pod 中的 Node.js 应用程序。鉴于应用程序是从 Traefik 的角度静态配置的,您可以简单地将适当的文件提供程序配置挂载到指向边车容器的 Traefik pod(大概通过 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"
如果您将 TOML 配置文件挂载到 Traefik pod 中的默认路径(/etc/traefik.toml
)以外的路径下,您还需要在清单中传递 --configFile
选项引用文件的正确位置。
在那之后,任何使用 machine-echo.example.com
主机 header 访问端口 80 上的 Traefik 容器的请求都应该转发到端口 9080 上的 Node.js 边车容器。