Get hands-on experience with 20+ free Google Cloud products and $300 in free credit for new customers.

Gateway Controller does not create Health Check firewall rules ?

Hello,

I'm having a problem trying to convert an Ingress to Gateway / HTTPRoute equivalent. With Ingress, a Firewall Rule for health check is created and my backend is healthy. On the other hand, with Gateway / HTTPRoute, no Firewall Rule is created for health checks, and my backends are unhealthy.

When I define the Firewall Rule myself, it works and my backends become healthy. I don't understand why this behavior, the documentation doesn't specify it.

I've already tried to recreate the cluster (I'm in the latest version) without success.

There is my code:

 

apiVersion: v1
kind: ServiceAccount
metadata:
  name: demo-gce-gm

---
apiVersion: v1
kind: Service
metadata:
  name: demo-gce-gm
spec:
  type: ClusterIP
  ports:
    - port: 80
      targetPort: http
      protocol: TCP
      name: http
  selector:
    app.kubernetes.io/name: demo-gce-gm
    app.kubernetes.io/instance: demo-gce-gm-preprod

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-gce-gm
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: demo-gce-gm
      app.kubernetes.io/instance: demo-gce-gm-preprod
  template:
    metadata:
      labels:
        app.kubernetes.io/name: demo-gce-gm
        app.kubernetes.io/instance: demo-gce-gm-preprod
    spec:
      serviceAccountName: demo-gce-gm
      containers:
        - name: demo
          image: "my-web-app-listenning-on-8000"
          imagePullPolicy: IfNotPresent
          ports:
            - name: http
              containerPort: 8000
              protocol: TCP
          livenessProbe:
            httpGet:
              path: /
              port: http
          readinessProbe:
            httpGet:
              path: /
              port: http
          resources:
            limits:
              cpu: 100m
              memory: 128Mi
            requests:
              cpu: 50m
              memory: 128Mi

 

This is my Ingress implementation (which is works):

 

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-gce-gm
  annotations:
    kubernetes.io/ingress.class: gce
    kubernetes.io/ingress.global-static-ip-name: my-ip-address
spec:
  rules:
    - host: "my.domain.name"
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: demo-gce-gm
                port:
                  number: 80

 

This is my Gateway / HTTPRoute implementation:

 

---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: demo-gce-gm
spec:
  parentRefs:
    - kind: Gateway
      name: demo-gce-gm
  hostnames:
    - "my.domain.name"
  rules:
    - backendRefs:
        - name: demo-gce-gm
          port: 80
    - backendRefs:
        - name: demo-gce-gm
          port: 80
      matches:
        - path:
            value: /

---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: demo-gce-gm
spec:
  gatewayClassName: gke-l7-global-external-managed
  addresses:
    - type: NamedAddress
      value: my-named-address
  listeners:
    - name: http
      protocol: HTTP
      port: 80
      allowedRoutes:
        namespaces:
          from: All

 

 Thanks for your help.

0 0 558
0 REPLIES 0
Top Labels in this Space
Top Solution Authors