<p>Every time I add a new rule to the ingress, it creates multiple rules in the load balancer. The rules are basically the same, pointing to the same backend</p>

<p>Here is my ingress file:</p>

<pre><code>apiVersion: networking.gke.io/v1beta1
kind: ManagedCertificate
metadata:
  name: ingress-test.wpspeedmatters.com
spec:
  domains:
    - ingress-test.wpspeedmatters.com
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: basic-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: wordpress-ip
    networking.gke.io/managed-certificates: ingress-test.wpspeedmatters.com
spec:
  backend:
    serviceName: wordpress
    servicePort: 8080
  rules:
    - host: ingress-test.wpspeedmatters.com
      http:
        paths:
          - path: /*
            backend:
              serviceName: wordpress
              servicePort: 8080
</code></pre>

<p>Here are the duplicate rules created in the load balancer:
<a href="https://i.stack.imgur.com/aa9dk.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/aa9dk.png" alt="enter image description here"></a></p>

<p>By default, the <a href="https://cloud.google.com/load-balancing/docs/https/" rel="nofollow noreferrer">HTTP(S) Load Balancer</a> will create two default rules: One that matches all the hosts and paths and another matching your current host <code>ingress-test.wpspeedmatters.com</code> and all paths.</p>

<p>Then, your custom path defined in the <code>Ingress</code> YAML (<code>/*</code>) will be added. In this case, it just happens that is the same as the second aforementioned rule, that makes it look as if they were repeated.</p>

<p>If you change it to <code>/something</code> instead of <code>/*</code>, you will still end up with 3 path rules. However, this time you'd have Host as <code>ingress-test.wpspeedmatters.com</code> and Path as <code>/something</code>, plus the other 2 default rules in the load balancer.</p>

<p>So it's basically the default load balancer rules plus your ingress custom rules.</p>
