在我推送到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中)。
问题...
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
答案 0 :(得分:1)
hosts文件基本上在堆栈中处于IP级别,因此它不会剥离任何6-7层标头(http / https)。 kubernetes还会设置iptables在Pod之间路由,并且通常也都是IP级别的。
10.101.63.179
是入口控制器吗?可能会剥夺您的标题。