I've been in a process of migrating our application to use Gateway
(gke-l7-global-external-managed
).
Part of deployment are the 'review' applications, e.g.
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
labels:
# {{ include "app.resource_labels" . | indent 4 }}
name: '{{ .Release.Name }}'
spec:
parentRefs:
- namespace: contra
sectionName: https
name: contra-gateway
hostnames:
- web-app-{{ .Values.app.deployment.slug }}.contra.dev
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: '{{ .Release.Name }}'
port: 80
kind: Service
Every review application has a custom sub-domain and custom URL paths.
We have many review applications that exist in parallel, and I've hit the following limit when trying to deploy them using gke-l7-global-external-managed
:
- lastTransitionTime: "2023-08-18T23:17:20Z"
message: 'error cause: gceSync: generic::failed_precondition: Update: Value
for field ''resource.pathMatchers[50]'' is too large: maximum size 50 element(s);
actual size 88.'
observedGeneration: 1
reason: ReconciliationFailed
status: "False"
type: Reconciled
How am I supposed to leverage Gateway
for an application that has thousands of URL path rules when the Quota is set to just 50?
There appears to be a related feature request that's been open since 2019 with not much activity.
https://issuetracker.google.com/issues/126946582
However, I feel like I am missing something crucial here. Is there an abstraction that should live between Gateway
/HTTPRoute
/my application that I am missing?