没有请求标头的Kubernetes Hostalias重定向到Kubernetes服务

时间:2018-09-11 14:51:00

标签: docker redirect kubernetes hosts

在我推送到AWS之前,请在MINIKUBE中运行它

我正在其中一个吊舱上尝试“中间人”。 想法,更改位于kubernetes容器中的docker容器内的hosts文件。主机文件将看到对api.app.org的请求,并将对该主机的任何调用重定向到IP地址“ 10.101.63.179”。在kubernetes服务上运行的应用程序是一个快速应用程序,可捕获http请求并将其定向到适当的使用方法。 该应用程序查看请求标头,并拆分“主机”和“ URL”。 应该看起来像这样

host = api.app.org

URL =“ / v2 / 1234”

预期: kubernetes服务将被发送一个HTTP请求。
范例:api.app.org/v2/1234
调用Node Express应用程序,并基于“主机”和URL的其余部分管理执行。 “ / v2 / 1234”

实际:
1.通过在部署内添加的Kubernetes hostalias更新HOSTS文件。下面的代码。
2.从应用程序内调用会向“ api.app.org/v2/1234”发出HTTP请求。
3. HOSTS文件将HTTP请求重定向到IP地址“ 10.101.63.179”
-到目前为止一切顺利-

(现在在Express App中)。

  1. 运行一种方法来提取Host和URL的其余部分。
    -示例:主机应等于(api.app.org)
    -示例:url应该等于(/ v2 / 1234)。

问题...

host = 10.101.63.179。

URL = /。


CODE:/ etc / hosts。 来自kubernetes pod内的docker映像的主机文件:ran(kubectl exec -it -c-/ bin / bash)。

# Entries added by HostAliases. 10.101.63.179 api.stats.com 10.101.63.179 api.ap.org


代码:Kubernetes部署YAML

apiVersion: extensions/v1beta1 kind: Deployment metadata: namespace: testharness labels: run: raven-svc name: raven-svc spec: replicas: 1 selector: matchLabels: run: raven-svc template: metadata: labels: run: raven-svc spec: containers: - name: raven-svc image: raven:vFin imagePullPolicy: IfNotPresent ports: - containerPort: 3000 hostAliases: - ip: "10.101.63.179" hostnames: - "api.stats.com" - "api.ap.org" restartPolicy: Always

1 个答案:

答案 0 :(得分:1)

hosts文件基本上在堆栈中处于IP级别,因此它不会剥离任何6-7层标头(http / https)。 kubernetes还会设置iptables在Pod之间路由,并且通常也都是IP级别的。

10.101.63.179是入口控制器吗?可能会剥夺您的标题。