小编Ram*_*sXu的帖子

如何将 Nginx IP 附加到 Kubernetes Nginx Ingress Controller 中的 X-Forwarded-For

我\xe2\x80\x99\xe2\x80\x99m想知道\xe2\x80\x9c如何将Nginx IP附加到X-Forwarded-For\xe2\x80\x9d

\n\n

我在 Ingress 注释中添加了片段。

\n\n
apiVersion: networking.k8s.io/v1beta1\nkind: Ingress\nmetadata:\n  name: ing\n  annotations:\n    nginx.ingress.kubernetes.io/configuration-snippet: |\n      proxy_set_header X-Forwarded-For "$remote_addr, $server_addr";\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它似乎在 nginx.conf 中进行了双重设置。

\n\n
    proxy_set_header X-Forwarded-For        $remote_addr;\n...\n    proxy_set_header X-Forwarded-For "$remote_addr, $server_addr";\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我的后端服务器将得到两个X-Forwarded-For

\n\n

有人知道\xe2\x80\x9c如何禁用Nginx Ingress Controller\xe2\x80\x9d生成的proxy_set_header部分吗?

\n\n
        proxy_set_header X-Request-ID           $req_id;\n        proxy_set_header X-Real-IP              $remote_addr;\n\n        proxy_set_header X-Forwarded-For        $remote_addr;\n\n        proxy_set_header X-Forwarded-Host       $best_http_host;\n        proxy_set_header X-Forwarded-Port       $pass_port;\n        proxy_set_header X-Forwarded-Proto      $pass_access_scheme;\n\n        proxy_set_header X-Scheme               $pass_access_scheme;\n
Run Code Online (Sandbox Code Playgroud)\n

nginx kubernetes kubernetes-ingress nginx-ingress

8
推荐指数
3
解决办法
4万
查看次数

如何使用 kubernetes 服务从 Google Network Load Balancer 获取客户端 IP

我在 GKE 中创建了一个类型为:LoadBalancer 的 kubernetes 服务。

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    targetPort: http
  selector:
    app: nginx
Run Code Online (Sandbox Code Playgroud)

这是一个 nginx 服务并尝试获取原始客户端 IP。喜欢

        location / {
            echo $remote_addr;
            echo $http_x_forwarded_for;   
        }
Run Code Online (Sandbox Code Playgroud)

但结果会得到:

10.140.0.97

Run Code Online (Sandbox Code Playgroud)

$remote_addr 就像在 kubernetes IP 中一样。

$http_x_forwarded_for 是空的。

我不知道为什么这不像文件所说的那样。

我读到的

https://cloud.google.com/load-balancing/docs/network

网络负载平衡是一个直通负载平衡器,这意味着您的防火墙规则必须允许来自客户端源 IP 地址的流量。

https://cloud.google.com/kubernetes-engine/docs/concepts/network-overview#ext-lb

如果您的服务需要从集群外部和 VPC 网络外部访问,您可以通过在定义服务时将服务的类型字段设置为 LoadBalancer 将您的服务配置为负载均衡器。然后,GKE 在服务前预置网络负载均衡器。网络负载均衡器了解集群中的所有节点,并配置您的 VPC 网络的防火墙规则,以允许使用服务的外部 IP 地址从 VPC 网络外部连接到服务。您可以为服务分配一个静态外部 IP 地址。有关详细信息,请访问使用静态 IP 地址配置域名。

load-balancing google-cloud-platform kubernetes google-kubernetes-engine

6
推荐指数
1
解决办法
734
查看次数

如何降级 GKE master 并退出 Rapid 通道

我没有注意到我的 GKE 集群位于 Rapid 通道中。直到今天我想添加节点池。

表明Node version "1.17.5-gke.6" is unsupported.

https://cloud.google.com/kubernetes-engine/docs/release-notes-rapid#may_27_2020

我的问题是:

  1. 如何降级 GKE 主版本
  2. 如何在不使用快速通道的情况下更新 GKE 集群

我在 gcloud cli、官方文档和 stackoverflow 中找不到任何相关内容。

google-cloud-platform kubernetes google-kubernetes-engine

2
推荐指数
1
解决办法
6152
查看次数