【问题标题】:Kubernetes Hostalias redirecting to Kubernetes service without Request HeadersKubernetes Hostalias 重定向到没有请求标头的 Kubernetes 服务
【发布时间】:2018-09-11 14:50:59
【问题描述】:

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

我正在我的一个吊舱上尝试“中间人”。 想法,更改位于 kubernetes pod 内的 docker 容器内的 hosts 文件。 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. HOSTS 文件通过部署中添加的 Kubernetes hostalias 更新。代码如下。
2. 从应用程序内部调用向“api.app.org/v2/1234”发出 HTTP 请求。
3. HOSTS文件将HTTP请求重定向到IP地址“10.101.63.179”
-- 到目前为止一切顺利 --

(现在在快递应用程序中)。

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

问题...

主机 = 10.101.63.179 。

网址 = / 。


代码: /etc/hosts 。 来自 kubernetes pod 内 docker 映像的主机文件:运行 (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

【问题讨论】:

    标签: docker redirect kubernetes hosts


    【解决方案1】:

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

    10.101.63.179 是不是一个入口控制器?这可能会剥夺你的标题。

    【讨论】:

    • 你可能会做点什么。我确实有一个使用该服务的入口。我想知道我是否与服务一起创建了一个全新的部署。有事我会更新评论。
    • 还是不行。创建一个全新的部署和服务(clusterIP)。然后 ssh 进入 POD 内的 docker 容器并运行 curl 10.98.167.224;... 我回到了服务主页。然后我运行了我的测试,并且标题被剥离或从未成功。
    • 你试过curl -vvv -H 'Header1: value1' -H 'Header2: value2' 10.98.167.224。您是说在 pod 内部到 pod/container 的 IP 地址并且标头正在被剥离? (不通过入口)
    • curl -vvv -H 'x-testharness-host : api.app.com' 10.98.167.224 是的,通过了......非常奇怪。不知道是不是 MINIKUBE 的东西
    • 好的,继续阅读。似乎我将不得不使用 NGINX 作为反向代理。我将尝试将其加载为 sidecar,以从一个正在运行的 docker 容器中捕获流量
    猜你喜欢
    • 2016-09-18
    • 2022-10-26
    • 2021-03-06
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 2021-08-15
    相关资源
    最近更新 更多