我已经为应用程序设置了入口,但想要将我的ip地址列入白名单。所以我创建了这个入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/whitelist-source-range: ${MY_IP}/32
name: ${INGRESS_NAME}
spec:
rules:
- host: ${DNS_NAME}
http:
paths:
- backend:
serviceName: ${SVC_NAME}
servicePort: ${SVC_PORT}
tls:
- hosts:
- ${DNS_NAME}
secretName: tls-secret但是当我尝试访问它时,我得到了一个403禁止,并且在nginx日志中我看到了一个客户端ip,但它来自一个集群节点,而不是我的家庭ip。
我还使用以下配置创建了一个configmap:
data:
use-forwarded-headers: "true"在容器的nginx.conf中,我可以看到它已经被正确地传递/配置,但我仍然得到了403禁止,仍然只有来自集群节点的客户端ip。
我在AKS集群上运行,nginx入口控制器在Azure负载均衡器后面。nginx入口控制器svc被暴露为类型负载均衡器,并且锁定在由svc打开的节点端口上。
我需要在Nginx中配置其他东西吗?
发布于 2020-04-10 06:59:02
如果你已经用Helm chart安装了nginx-ingress,你可以简单地用controller.service.externalTrafficPolicy: Local配置你的values.yaml文件,我相信这将应用于你的所有服务。否则,您可以使用service.spec.externalTrafficPolicy: Local配置特定服务,以在这些特定服务上实现相同的效果。
这里有一些资源可以加深你的理解:
发布于 2020-04-01 18:51:58
听起来就像你在一个NodePort (或LoadBalancer)服务后面,或者更确切地说,在kube-proxy后面有你的Nginx入口控制器。通常,为了让您的控制器看到原始的连接IP,您需要使用hostNetwork端口来部署它,以便它直接侦听传入的流量。
https://stackoverflow.com/questions/60968806
复制相似问题