λ A*_*r λ 5 nginx google-compute-engine kubernetes
在GKE上运行Kubernetes
使用头盔安装了具有最新稳定版本的Nginx控制器。
一切正常,除了添加白名单-源范围注释结果之外,因为我完全无法使用我的服务。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: staging-ingress
namespace: staging
annotations:
kubernetes.io/ingress.class: nginx
ingress.kubernetes.io/whitelist-source-range: "x.x.x.x, y.y.y.y"
spec:
rules:
- host: staging.com
http:
paths:
- path: /
backend:
serviceName:staging-service
servicePort: 80
我连接到控制器Pod的Ingress配置
,并检查了Nginx配置,发现了这一点:
# Deny for staging.com/
geo $the_real_ip $deny_5b3266e9d666401cb7ac676a73d8d5ae {
default 1;
x.x.x.x 0;
y.y.y.y 0;
}
Run Code Online (Sandbox Code Playgroud)
好像他将我拒之门外,而不是将该IP列入白名单。但这也锁定了所有其他地址...我从staging.com主机获得了403。
您的 nginx 控制器服务必须设置为externalTrafficPolicy: Local
. 这意味着将使用实际的客户端 IP 而不是集群的内部 IP。
您需要从kubectl get svc
命令中获取真实的服务名称。该服务类似于:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nobby-leopard-nginx-ingress-controller LoadBalancer 10.0.139.37 40.83.166.29 80:31223/TCP,443:30766/TCP 2d
Run Code Online (Sandbox Code Playgroud)
nobby-leopard-nginx-ingress-controller
是您要使用的服务名称。
要完成此操作,请运行
kubectl patch svc nobby-leopardnginx-ingress-controller -p '{"spec":{"externalTrafficPolicy":"Local"}}'
设置新的 nginx 控制器时,可以使用以下命令:
helm install stable/nginx-ingress \
--namespace kube-system \
--set controller.service.externalTrafficPolicy=Local`
Run Code Online (Sandbox Code Playgroud)
安装后让 nginx 入口控制器接受白名单。
是。但是,我自己弄清楚了。您的服务必须启用externalTrafficPolicy: Local
。这意味着应该使用实际的客户端IP而不是内部群集IP。
要完成此运行
kubectl patch svc nginx-ingress-controller -p '{"spec":{"externalTrafficPolicy":"Local"}}'
归档时间: |
|
查看次数: |
3355 次 |
最近记录: |