ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

记录一次很乱的k8s环境下新增白名单功能的辛酸

2021-11-13 01:32:07  阅读:189  来源: 互联网

标签:ingress IP 很乱 nginx 白名单 pod k8s


1.背景 

  之前记录过k8s中ingress以及nginx获取客户端真实IP的文章,我司这个项目架构和这个环境一样,因为遗留问题,导致这个架构比较乱,为了更清晰的记录,还是画个图吧。

  可以看到以上配置跳来跳去,这也是历史遗留原因,首先比如www.baidu.com/lizexiong/test到达lb,lb根据判断后把请求转给ingress,ingress根据lizexiong/test,然后反向定量用户输入的,最后转给pod nginx,转了2次。

  为什么要先强调一下拓扑。是因为突然间多了一个需求。环境原因,部分url不能提前公开对外,但是我司这部分业务需要在线上环境测试然后对外。但是如果发布肯定就对外了,所以这里想到了白名单或者安全组或者防火墙。只开放予许访问的IP。所以有了以下思路。

1.LB不能做安全组,因为安全组上面有很多项目,会受到影响,除非用7层防火墙有可能,但是要钱,此方案pass。

2.Ingress上设置,百度看了一下设置方式,怕会影响所有项目,偷懒,不想准备测试环境,pass了

3.Pod的nginx上设置allow ip,此方案可行,最后引出一个超级麻烦的事情。(见下节)

4.使用小域名(在正式域名外设置一个其他专门测试的域名),但是被运营否认了。

 

2.遇到问题

  那就选方案3吧,看着最简单,还不影响,还不需要准备环境,于是就在location里配置了allow 1.1.1.1,予许我司IP访问,自己简单测试了2次,以为解决了。

  结果测试人员去测试的时候说,一会正常,一会403,结果自己去看,果然如此。  

  查看了ingress日志,是正常的。也获取到了客户端的真实IP,怎么会不对呢。

  于是查看pod nginx的日志,结果发现,访问的时候有k8s node主机的IP。

    只要日志出现k8s node主机ip的时候,访问就403,因为这个IP我没有加入到allow白名单里面。

    后面排查了很久,新建了一个集群,所有环境相同(这里说的是配置,版本,容器),但是新建的这套集群却一点没问题。

    后面仔细检查版本,配置一些内容,最后突然想到,唯一不同的就是出问题的集群有三个node节点,没有出问题的只有一个k8snode节点。

 

3.问题原因

  最后仔细想想,仔细看看之前配置,到ingress之后,ingress还会做一次跳转,会剥离lizexiong/test的url,到pod nginx上只剩下 /了,如果ingress和pod nginx不在同一台node上,跳转的时候出去请求的IP那不就是k8s nodeIP吗?找到原因。

  后面就准备设置亲和性和pod local模式。

  但是又要各种测试,不是要了老命嘛,而且,每次取消白名单对外的时候都会很麻烦。

 

4.问题解决

所以使用方案2,ingress上配置,20分钟解决。差点吐了,还是不能太偷懒。

 

标签:ingress,IP,很乱,nginx,白名单,pod,k8s
来源: https://www.cnblogs.com/lizexiong/p/15547150.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有