Skip to content

Commit 88eead0

Browse files
committed
feat: Migrate from NGINX Ingress to Envoy Gateway
- Replace NGINX Ingress with Envoy Gateway as cluster edge provider - Convert all ingress.yaml helm templates to HTTPRoute resources - Add GatewayClass, Gateway, and EnvoyProxy configuration - Update deploy-ingress-controller.yml for Envoy Gateway deployment - Add Keycloak, Grafana, GenAI Gateway Trace HTTPRoute integration - Gate EKS ingress_eks.yaml templates with platform check - Rename run_ingress_nginx_playbook() to run_edge_gateway_playbook() - Add envoy-gateway-deployment-guide and migration docs - Update observability, genai-gateway, and model chart templates - Increase Langfuse probe thresholds for single-node stability - Add single-node ClickHouse/Redis resource limits - Update proxy handling in read-config-file.sh - Rename Gaudi references to Intel AI Accelerator in docs - Update OVMS model deploy guide with generic model routing
1 parent 5df2a50 commit 88eead0

56 files changed

Lines changed: 1333 additions & 555 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

core/helm-charts/genai-gateway-trace/charts/langfuse/values.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -325,27 +325,27 @@ langfuse:
325325
# -- Path to check for liveness.
326326
path: "/api/public/health"
327327
# -- Initial delay seconds for livenessProbe.
328-
initialDelaySeconds: 20
328+
initialDelaySeconds: 120
329329
# -- Period seconds for livenessProbe.
330-
periodSeconds: 10
330+
periodSeconds: 15
331331
# -- Timeout seconds for livenessProbe.
332332
timeoutSeconds: 5
333333
# -- Failure threshold for livenessProbe.
334-
failureThreshold: 3
334+
failureThreshold: 6
335335
# -- Success threshold for livenessProbe.
336336
successThreshold: 1
337337

338338
readinessProbe:
339339
# -- Path to check for readiness.
340340
path: "/api/public/ready"
341341
# -- Initial delay seconds for readinessProbe.
342-
initialDelaySeconds: 20
342+
initialDelaySeconds: 60
343343
# -- Period seconds for readinessProbe.
344-
periodSeconds: 10
344+
periodSeconds: 15
345345
# -- Timeout seconds for readinessProbe.
346346
timeoutSeconds: 5
347347
# -- Failure threshold for readinessProbe.
348-
failureThreshold: 3
348+
failureThreshold: 6
349349
# -- Success threshold for readinessProbe.
350350
successThreshold: 1
351351

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,24 @@
11
# Copyright (C) 2025-2026 Intel Corporation
22
# SPDX-License-Identifier: Apache-2.0
33
{{- if .Values.ingress.enabled }}
4-
apiVersion: networking.k8s.io/v1
5-
kind: Ingress
4+
apiVersion: gateway.networking.k8s.io/v1
5+
kind: HTTPRoute
66
metadata:
7-
annotations:
8-
kubernetes.io/ingress.class: nginx
9-
nginx.ingress.kubernetes.io/proxy-body-size: 10m
10-
nginx.ingress.kubernetes.io/ssl-redirect: "true"
11-
generation: 1
127
labels:
138
app.kubernetes.io/managed-by: Helm
14-
name: genai-gateway-ingress
9+
name: genai-gateway-httproute
1510
spec:
16-
ingressClassName: nginx
17-
rules:
18-
- host: {{ .Values.ingress.host }}
19-
http:
20-
paths:
21-
- backend:
22-
service:
23-
name: genai-gateway-service
24-
port:
25-
number: 4000
26-
path: /
27-
pathType: ImplementationSpecific
28-
tls:
29-
- hosts:
11+
parentRefs:
12+
- name: enterprise-edge-gateway
13+
namespace: envoy-gateway-system
14+
hostnames:
3015
- {{ .Values.ingress.host }}
31-
secretName: {{ .Values.ingress.secretname }}
32-
status:
33-
loadBalancer: {}
16+
rules:
17+
- matches:
18+
- path:
19+
type: PathPrefix
20+
value: /
21+
backendRefs:
22+
- name: genai-gateway-service
23+
port: 4000
3424
{{- end }}

core/helm-charts/genai-gateway/templates/ingress_eks.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{- if .Values.ingress.enabled }}
1+
{{- if and .Values.ingress.enabled (eq .Values.platform "eks") }}
22
apiVersion: networking.k8s.io/v1
33
kind: Ingress
44
metadata:

core/helm-charts/istio/peer-auth-ingress.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ apiVersion: security.istio.io/v1
44
kind: PeerAuthentication
55
metadata:
66
name: peer-auth-ingress
7-
namespace: ingress-nginx
7+
namespace: envoy-gateway-system
88
spec:
99
selector:
1010
matchLabels:
11-
app.kubernetes.io/name: ingress-nginx
11+
app.kubernetes.io/name: envoy
1212
mtls:
1313
mode: STRICT
1414
portLevelMtls:
Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,23 @@
11
# Copyright (C) 2025-2026 Intel Corporation
22
# SPDX-License-Identifier: Apache-2.0
33
{{- if not .Values.apisixRoute.enabled }}
4-
apiVersion: networking.k8s.io/v1
5-
kind: Ingress
4+
apiVersion: gateway.networking.k8s.io/v1
5+
kind: HTTPRoute
66
metadata:
7-
name: {{ .Release.Name }}-keycloak-apisix
7+
name: {{ .Release.Name }}-keycloak-apisix-httproute
88
namespace: auth-apisix
9-
annotations:
10-
kubernetes.io/ingress.class: "nginx"
11-
nginx.ingress.kubernetes.io/ssl-redirect: "true"
12-
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
13-
nginx.ingress.kubernetes.io/proxy-pass-headers: "Content-Type, Authorization"
149
spec:
15-
ingressClassName: nginx
10+
parentRefs:
11+
- name: enterprise-edge-gateway
12+
namespace: envoy-gateway-system
13+
hostnames:
14+
- {{ .Values.ingress.host }}
1615
rules:
17-
- host: {{ .Values.ingress.host }}
18-
http:
19-
paths:
20-
- path: /token
21-
pathType: Exact
22-
backend:
23-
service:
24-
name: {{ .Values.ingress.serviceName }}
25-
port:
26-
number: {{ .Values.ingress.servicePort }}
27-
tls:
28-
- hosts:
29-
- {{ .Values.ingress.host }}
30-
secretName: {{ .Values.ingress.secretName }}
16+
- matches:
17+
- path:
18+
type: Exact
19+
value: /token
20+
backendRefs:
21+
- name: {{ .Values.ingress.serviceName }}
22+
port: {{ .Values.ingress.servicePort }}
3123
{{- end }}

core/helm-charts/keycloak/templates/ingress_eks.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# Copyright (C) 2025-2026 Intel Corporation
22
# SPDX-License-Identifier: Apache-2.0
3+
{{- if eq .Values.platform "eks" }}
34
apiVersion: networking.k8s.io/v1
45
kind: Ingress
56
metadata:
@@ -32,3 +33,4 @@ spec:
3233
- hosts:
3334
- {{ .Values.ingress.host }}
3435
secretName: {{ .Values.ingress.secretName }}
36+
{{- end }}
Lines changed: 21 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,32 @@
11
{{- if .Values.ingress.enabled }}
2-
apiVersion: networking.k8s.io/v1
3-
kind: Ingress
2+
apiVersion: gateway.networking.k8s.io/v1
3+
kind: HTTPRoute
44
metadata:
5-
name: {{ include "mcp-demo.fullname" . }}
5+
name: {{ include "mcp-demo.fullname" . }}-httproute
66
namespace: {{ .Values.apisix.enabled | ternary "auth-apisix" (.Values.ingress.namespace | default .Release.Namespace) }}
77
labels:
88
{{- include "mcp-demo.labels" . | nindent 4 }}
9-
annotations:
10-
kubernetes.io/ingress.class: {{ .Values.ingress.className }}
11-
nginx.ingress.kubernetes.io/use-regex: "true"
12-
nginx.ingress.kubernetes.io/proxy-buffering: "off"
13-
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
14-
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
15-
{{- with .Values.ingress.annotations }}
16-
{{- toYaml . | nindent 4 }}
17-
{{- end }}
189
spec:
19-
ingressClassName: {{ .Values.ingress.className }}
20-
{{- if .Values.ingress.tls.enabled }}
21-
tls:
22-
- hosts:
10+
parentRefs:
11+
- name: enterprise-edge-gateway
12+
namespace: envoy-gateway-system
13+
hostnames:
2314
- {{ .Values.ingress.host }}
24-
secretName: {{ .Values.ingress.tls.secretName }}
25-
{{- end }}
2615
{{- $svcName := ternary "auth-apisix-gateway" (include "mcp-demo.fullname" .) .Values.apisix.enabled }}
2716
{{- $svcPort := ternary 80 .Values.service.port .Values.apisix.enabled }}
2817
rules:
29-
- host: {{ .Values.ingress.host }}
30-
http:
31-
paths:
32-
- backend:
33-
service:
34-
name: {{ $svcName }}
35-
port:
36-
number: {{ $svcPort }}
37-
path: /health
38-
pathType: Prefix
39-
- backend:
40-
service:
41-
name: {{ $svcName }}
42-
port:
43-
number: {{ $svcPort }}
44-
path: {{ .Values.ingress.path }}
45-
pathType: Prefix
18+
- matches:
19+
- path:
20+
type: PathPrefix
21+
value: /health
22+
backendRefs:
23+
- name: {{ $svcName }}
24+
port: {{ $svcPort }}
25+
- matches:
26+
- path:
27+
type: PathPrefix
28+
value: {{ .Values.ingress.path }}
29+
backendRefs:
30+
- name: {{ $svcName }}
31+
port: {{ $svcPort }}
4632
{{- end }}

core/helm-charts/ovms/templates/ingress.yaml

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,33 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
{{- if and .Values.ingress.enabled .Values.modelSource }}
5-
apiVersion: networking.k8s.io/v1
6-
kind: Ingress
5+
apiVersion: gateway.networking.k8s.io/v1
6+
kind: HTTPRoute
77
metadata:
8-
name: {{ include "ovms-model-server.fullname" . }}
8+
name: {{ include "ovms-model-server.fullname" . }}-httproute
99
namespace: {{ .Values.ingress.namespace }}
1010
labels:
1111
{{- include "ovms-model-server.labels" . | nindent 4 }}
12-
annotations:
13-
nginx.ingress.kubernetes.io/rewrite-target: /{{ .Values.modelName }}-ovms/$1
1412
spec:
15-
ingressClassName: {{ .Values.ingress.className }}
16-
{{- if .Values.ingress.secretname }}
17-
tls:
18-
- hosts:
13+
parentRefs:
14+
- name: enterprise-edge-gateway
15+
namespace: envoy-gateway-system
16+
hostnames:
1917
- {{ .Values.ingress.host }}
20-
secretName: {{ .Values.ingress.secretname }}
21-
{{- end }}
2218
rules:
23-
- host: {{ .Values.ingress.host }}
24-
http:
25-
paths:
26-
- path: /{{ .Values.modelName }}-ovms/(.*)
27-
pathType: ImplementationSpecific
28-
backend:
29-
service:
30-
name: {{- if .Values.apisixRoute.enabled }} auth-apisix-gateway{{- else }} {{ include "ovms-model-server.fullname" . }}{{- end }}
31-
port:
32-
number: 80
19+
- matches:
20+
- path:
21+
type: PathPrefix
22+
value: /{{ .Values.modelName }}-ovms
23+
{{- if not .Values.apisixRoute.enabled }}
24+
filters:
25+
- type: URLRewrite
26+
urlRewrite:
27+
path:
28+
type: ReplacePrefixMatch
29+
replacePrefixMatch: /
30+
{{- end }}
31+
backendRefs:
32+
- name: {{- if .Values.apisixRoute.enabled }} auth-apisix-gateway{{- else }} {{ include "ovms-model-server.fullname" . }}{{- end }}
33+
port: 80
3334
{{- end }}
Lines changed: 33 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,48 @@
11
# Copyright (C) 2025-2026 Intel Corporation
22
# SPDX-License-Identifier: Apache-2.0
3-
# Please edit the object below. Lines beginning with a '#' will be ignored,
4-
# and an empty file will abort the edit. If an error occurs while saving this file will be
5-
# reopened with the relevant failures.
63
{{- if or .Values.ingress.enabled .Values.apisix.enabled }}
7-
apiVersion: networking.k8s.io/v1
8-
kind: Ingress
4+
{{- $modelName := .Values.EMBEDDING_MODEL_ID | splitList "/" | last }}
5+
apiVersion: gateway.networking.k8s.io/v1
6+
kind: HTTPRoute
97
metadata:
10-
annotations:
11-
kubernetes.io/ingress.class: nginx
12-
# nginx.ingress.kubernetes.io/rewrite-target: /{{ .Values.EMBEDDING_MODEL_ID | splitList "/" | last }}/$1
13-
nginx.ingress.kubernetes.io/rewrite-target: {{- if and .Values.apisix.enabled .Values.accelDevice }}
14-
/{{ .Values.EMBEDDING_MODEL_ID | splitList "/" | last }}/$1
15-
{{- else if and .Values.apisix.enabled (not .Values.accelDevice) }}
16-
/{{ .Values.EMBEDDING_MODEL_ID | splitList "/" | last }}-teicpu/$1
17-
{{- else if not .Values.apisix.enabled }}
18-
/$1
19-
{{- end }}
20-
creationTimestamp: "2024-11-22T03:27:37Z"
21-
generation: 1
228
labels:
239
{{- include "tei.labels" . | nindent 4 }}
24-
name: {{ include "tei.fullname" . }}-ingress
10+
name: {{ include "tei.fullname" . }}-httproute
2511
namespace: {{- if .Values.apisix.enabled }}
2612
auth-apisix
2713
{{- else }}
2814
default
2915
{{- end }}
30-
resourceVersion: "244487"
31-
uid: df2b31a1-6653-4d71-9de0-4df33cb93ad1
3216
spec:
33-
ingressClassName: nginx
17+
parentRefs:
18+
- name: enterprise-edge-gateway
19+
namespace: envoy-gateway-system
20+
hostnames:
21+
- {{ .Values.ingress.host }}
3422
rules:
35-
- host: {{ .Values.ingress.host }}
36-
http:
37-
paths:
38-
- backend:
39-
service:
40-
name: {{- if .Values.apisix.enabled }}
41-
auth-apisix-gateway
42-
{{- else }}
43-
{{ include "tei.fullname" . }}-service
44-
{{- end }}
45-
port:
46-
number: 80
47-
# path: /{{ .Values.EMBEDDING_MODEL_ID | splitList "/" | last }}/(.*)
48-
path: {{- if and .Values.apisix.enabled .Values.accelDevice }}
49-
/{{ .Values.EMBEDDING_MODEL_ID | splitList "/" | last }}/(.*)
50-
{{- else if and .Values.apisix.enabled (not .Values.accelDevice) }}
51-
/{{ .Values.EMBEDDING_MODEL_ID | splitList "/" | last }}-teicpu/(.*)
52-
{{- else if not .Values.apisix.enabled }}
53-
/{{ .Values.EMBEDDING_MODEL_ID | splitList "/" | last }}/(.*)
23+
- matches:
24+
- path:
25+
type: PathPrefix
26+
value: {{- if and .Values.apisix.enabled .Values.accelDevice }}
27+
/{{ $modelName }}
28+
{{- else if and .Values.apisix.enabled (not .Values.accelDevice) }}
29+
/{{ $modelName }}-teicpu
30+
{{- else }}
31+
/{{ $modelName }}
32+
{{- end }}
33+
{{- if not .Values.apisix.enabled }}
34+
filters:
35+
- type: URLRewrite
36+
urlRewrite:
37+
path:
38+
type: ReplacePrefixMatch
39+
replacePrefixMatch: /
40+
{{- end }}
41+
backendRefs:
42+
- name: {{- if .Values.apisix.enabled }}
43+
auth-apisix-gateway
44+
{{- else }}
45+
{{ include "tei.fullname" . }}-service
5446
{{- end }}
55-
pathType: ImplementationSpecific
56-
tls:
57-
- hosts:
58-
- {{ .Values.ingress.host }}
59-
secretName: {{ .Values.ingress.secretname }}
47+
port: 80
6048
{{- end }}

core/helm-charts/tei/templates/ingress_eks.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Copyright (C) 2025-2026 Intel Corporation
22
# SPDX-License-Identifier: Apache-2.0
3-
{{- if or .Values.ingress.enabled .Values.apisix.enabled }}
3+
{{- if and (or .Values.ingress.enabled .Values.apisix.enabled) (eq .Values.platform "eks") }}
44
apiVersion: networking.k8s.io/v1
55
kind: Ingress
66
metadata:

0 commit comments

Comments
 (0)