如何在 nginx 入口控制器上使用云装甲?

问题描述 投票:0回答:2

首先,我使用 Nginx 入口控制器作为 gke 的舵,并使用 ModSecurity 作为 waf。尽管如此,我正在研究一种新型的waf来显示预防的结果,云甲看起来就是我正在寻找的东西。不幸的是,它仅适用于 HTTP/HTTPS 负载均衡器,但我的 Nginx 入口外部负载均衡器是 TCP 负载均衡器。据我研究,我无法将此负载均衡器的协议 TCP 转换为 HTTP/HTTPS。

- First Question, Is this conversation possible and if it is possible, Can I use cloud armor on it.

其次,我尝试创建一个新的云负载均衡器来通过它路由流量。不幸的是,即使我可以在其上激活云装甲,路由也无法按我的预期工作,因为它无论如何都会返回 502,即使它的运行状况检查看起来没问题。

最后,我尝试将 BackendConfig 与 yaml 一起使用:

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: armor-backendconfig
spec:
  securityPolicy:
    name: "bla-armor"

apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/backend-config: '{"ports": {"443":"bla-backendconfig"}}'
spec:
  clusterIP: xx.xx.xx.xx
  externalTrafficPolicy: Local
  healthCheckNodePort: xxxxxxx
  loadBalancerIP: xx.xx.xxxx.xx
  ports:
   - name: http
     nodePort: 31000
     port: 80
     protocol: TCP
     targetPort: http

而且它又不起作用了。那是我最后的希望。这里有什么建议吗?

kubernetes load-balancing gcloud nginx-ingress google-cloud-armor
2个回答
0
投票

我遇到了和你一样的问题,我们有一个带有 nginx 入口控制器的入口,我们想用云 Armor 来保护我们的入口,但这实际上是不可能的。解决方案是创建一个谷歌云 http 负载均衡器并创建网络端点组 (Negs) 作为我们的 Lb 的后端。

要创建我们的 Negs,可以通过在 kubernetes 服务中添加注释来完成,如下所示:

cloud.google.com/neg: '{"exposed_ports": {"PORT_NUMBER":{"name": "NEG_NAME"}}}'

您必须检查防火墙规则是否允许 PORT_NUMBER 用于 tcp 协议和源 IP 范围:130.211.0.0/22 LB 为 35.191.0.0/16。您可以查看 google cloud lb 的文档,就是这样。希望能帮到你

干杯


0
投票

直接将 Cloud Armor 与 NGINX 入口控制器集成是不可行的。另一种方法是利用 Google Cloud HTTP 负载均衡器 (GLB) 并使用网络端点组 (NEG) 作为负载均衡器的后端。

要创建 NEG,Kubernetes 服务中的注释至关重要,例如:

cloud.google.com/neg: '{"exposed_ports": {"PORT_NUMBER":{"name": "NEG_NAME"}}}'

此外,对于 HTTPS 后端,请确保包含 SSL 证书并在 GLB 中指定 HTTPS 后端,并在注释中指定端口 443。

请注意: NEG 后端最初将显示为未知状态,GLB 后端将显示为 0,直到您将它们指定为 GLB 的后端。一旦 GLB 健康检查通过,NEG 后端将变得健康,并且 GLB 后端将反映标记为健康的 NGINX 入口实例的数量。

© www.soinside.com 2019 - 2024. All rights reserved.