TKE上nginx-ingress如何配置7层接入WAF

2022-11-01 17:44:28 浏览数 (1)

使用tke的接入层组件时候,很多时候会用到nginx-ingress,并且为了网站安全,很多时候会需要将域名接入到waf,但是waf只支持clb的7层监听接入https://cloud.tencent.com/document/product/627/40765

nginx-ingress是通过一个4层的clb类型service作为接入口,然后在nginx-ingress controller来实现7层的转发,这样就clb就无法接入waf了,其实要想nginx-ingress接入waf,还是有很多方法,下面我们说说如何将nginx-ingress来接入waf。

其实nginx-ingress接入waf,只需要将入口clb改成7层监听就行。下面我们说说如何来将入口clb改成7层监听。

1. 自建clb绑定nodeport端口

首先我们将nginx-ingress实例自动创建的service,改成nodeport类型,因为现在clb收费了,如果service再使用clb类型,会产生一定的费用。然后手动新建一个clb实例,在clb创建监听绑定到后端节点nodeport。

绑定成功后,nginx-ingress的接入clb就变成7层监听了,然后就可以将clb接入waf了。

这里有一个问题,因为clb是手动创建,监听也是手动绑定的后端节点,clb的管理脱离了集群的service-controller,这样如果集群新增节点,节点不会自动加入到clb监听里。

2. 配置clb类型的ingress转发到后端controller

如果第一种方案无法满足你的需求,你可以通过tke自带的ingress来创建clb的7层监听,首先我们还是参考上面,将nginx-ingress实例自动创建的service,改成nodeport类型,如果是vpc-cni网络模式,也可以改成clusterip类型,创建ingress选择直连就行。

然后创建ingress绑定到后端的service上

创建后之后,会新建一个clb,并创建80和443的7层监听端口,如果后端节点或者pod有数量变化,这里会自动加入到监听里面,创建好之后,将clb接入到waf即可

0 人点赞