Skip to content

Commit c0ca303

Browse files
authored
add release templates for gateway api (#1652)
* add release templates for gateway api Signed-off-by: Michael Kalantar <[email protected]> * bump chart version Signed-off-by: Michael Kalantar <[email protected]> --------- Signed-off-by: Michael Kalantar <[email protected]>
1 parent 2deb02b commit c0ca303

12 files changed

+245
-2
lines changed

charts/controller/Chart.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
apiVersion: v2
22
name: controller
3-
version: 0.18.2
3+
version: 0.18.3
44
description: Iter8 controller controller
55
type: application
66
keywords:

charts/controller/values.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ resourceTypes:
4040
Group: networking.istio.io
4141
Version: v1beta1
4242
Resource: virtualservices
43+
httproute:
44+
Group: gateway.networking.k8s.io
45+
Version: v1beta1
46+
Resource: httproutes
4347

4448
### log level. Must be one of trace, debug, info, warning, error
4549
logLevel: info

charts/release/Chart.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
apiVersion: v2
22
name: release
3-
version: 0.18.2
3+
version: 0.18.3
44
description: Iter8 supported application release
55
type: application
66
keywords:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
{{- define "env.deployment-gtw.blue-green.routemap" }}
2+
3+
{{- $APP_NAME := (include "application.name" .) }}
4+
{{- $APP_NAMESPACE := (include "application.namespace" .) }}
5+
{{- $versions := include "normalize.versions.deployment" . | mustFromJson }}
6+
{{- $APP_PORT := pluck "port" (dict "port" 80) $.Values.application | first }}
7+
8+
apiVersion: v1
9+
kind: ConfigMap
10+
{{- template "routemap.metadata" . }}
11+
data:
12+
strSpec: |
13+
versions:
14+
{{- range $i, $v := $versions }}
15+
- resources:
16+
- gvrShort: svc
17+
name: {{ template "svc.name" $v }}
18+
namespace: {{ template "svc.namespace" $v }}
19+
- gvrShort: deploy
20+
name: {{ template "deploy.name" $v }}
21+
namespace: {{ template "deploy.namespace" $v }}
22+
- gvrShort: cm
23+
name: {{ $v.VERSION_NAME }}-weight-config
24+
namespace: {{ $v.VERSION_NAMESPACE }}
25+
weight: {{ $v.weight }}
26+
{{- end }} {{- /* range $i, $v := $versions */}}
27+
routingTemplates:
28+
{{ .Values.application.strategy }}:
29+
gvrShort: httproute
30+
template: |
31+
apiVersion: gateway.networking.k8s.io/v1beta1
32+
kind: HTTPRoute
33+
metadata:
34+
name: {{ $APP_NAME }}
35+
namespace: {{ $APP_NAMESPACE }}
36+
spec:
37+
hostnames:
38+
- {{ $APP_NAME }}
39+
- {{ $APP_NAME }}.{{ $APP_NAMESPACE }}
40+
- {{ $APP_NAME }}.{{ $APP_NAMESPACE }}.svc.cluster.local
41+
parentRefs:
42+
- group: ""
43+
kind: Service
44+
name: {{ $APP_NAME }}
45+
port: {{ $APP_PORT }}
46+
{{- if .Values.gateway }}
47+
- name: {{ .Values.gateway }}
48+
{{- end }}
49+
rules:
50+
- backendRefs:
51+
{{- range $i, $v := $versions }}
52+
- group: ""
53+
kind: Service
54+
name: {{ template "svc.name" $v }}
55+
port: {{ $v.port }}
56+
{{- if gt (len $versions) 1 }}
57+
{{ `{{- if gt (index .Weights 1) 0 }}` }}
58+
weight: {{ `{{ index .Weights ` }}{{ print $i }}{{ ` }}` }}
59+
{{ `{{- end }}` }}
60+
{{- end }}
61+
filters:
62+
- type: ResponseHeaderModifier
63+
responseHeaderModifier:
64+
add:
65+
- name: app-version
66+
value: {{ template "svc.name" $v }}
67+
{{- end }} {{- /* range $i, $v := $versions */}}
68+
{{- end }} {{- /* define "env.deployment-gtw.blue-green.routemap" */}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{{- define "env.deployment-gtw.blue-green" }}
2+
3+
{{- /* prepare versions for simpler processing */}}
4+
{{- $versions := include "normalize.versions.deployment" . | mustFromJson }}
5+
6+
{{- /* weight-config ConfigMaps */}}
7+
{{- range $i, $v := $versions }}
8+
{{ include "configmap.weight-config" $v }}
9+
---
10+
{{- end }} {{- /* range $i, $v := $versions */}}
11+
12+
{{- /* routemap */}}
13+
{{ include "env.deployment-gtw.blue-green.routemap" . }}
14+
15+
{{- end }} {{- /* define "env.deployment-gtw.blue-green" */}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
{{- define "env.deployment-gtw.canary.routemap" }}
2+
3+
{{- $APP_NAME := (include "application.name" .) }}
4+
{{- $APP_NAMESPACE := (include "application.namespace" .) }}
5+
{{- $versions := include "normalize.versions.deployment" . | mustFromJson }}
6+
{{- $APP_PORT := pluck "port" (dict "port" 80) $.Values.application | first }}
7+
8+
apiVersion: v1
9+
kind: ConfigMap
10+
{{- template "routemap.metadata" . }}
11+
data:
12+
strSpec: |
13+
versions:
14+
{{- range $i, $v := $versions }}
15+
- resources:
16+
- gvrShort: svc
17+
name: {{ template "svc.name" $v }}
18+
namespace: {{ template "svc.namespace" $v }}
19+
- gvrShort: deploy
20+
name: {{ template "deploy.name" $v }}
21+
namespace: {{ template "deploy.namespace" $v }}
22+
{{- end }} {{- /* range $i, $v := $versions */}}
23+
routingTemplates:
24+
{{ .Values.application.strategy }}:
25+
gvrShort: httproute
26+
template: |
27+
apiVersion: gateway.networking.k8s.io/v1beta1
28+
kind: HTTPRoute
29+
metadata:
30+
name: {{ $APP_NAME }}
31+
namespace: {{ $APP_NAMESPACE }}
32+
spec:
33+
hostnames:
34+
- {{ $APP_NAME }}.{{ $APP_NAMESPACE }}
35+
- {{ $APP_NAME }}.{{ $APP_NAMESPACE }}.svc
36+
- {{ $APP_NAME }}.{{ $APP_NAMESPACE }}.svc.cluster.local
37+
parentRefs:
38+
- group: ""
39+
kind: Service
40+
name: {{ $APP_NAME }}
41+
port: {{ $APP_PORT }}
42+
{{- if .Values.gateway }}
43+
- name: {{ .Values.gateway }}
44+
{{- end }}
45+
rules:
46+
# non-primary versions
47+
{{- range $i, $v := (rest $versions) }}
48+
- matches:
49+
{{- toYaml $v.matches | nindent 14 }}
50+
backendRefs:
51+
- group: ""
52+
kind: Service
53+
name: {{ template "svc.name" $v }}
54+
port: {{ $v.port }}
55+
filters:
56+
- type: ResponseHeaderModifier
57+
responseHeaderModifier:
58+
add:
59+
- name: app-version
60+
value: {{ template "svc.name" $v }}
61+
{{- end }} {{- /* range $i, $v := (rest $versions) */}}
62+
# primary version (default)
63+
{{- $v := (index $versions 0) }}
64+
- backendRefs:
65+
- group: ""
66+
kind: Service
67+
name: {{ template "svc.name" $v }}
68+
port: {{ $v.port }}
69+
filters:
70+
- type: ResponseHeaderModifier
71+
responseHeaderModifier:
72+
add:
73+
- name: app-version
74+
value: {{ template "svc.name" $v }}
75+
{{- end }} {{- /* define "env.deployment-gtw.canary.routemap" */}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{{- define "env.deployment-gtw.canary" }}
2+
3+
{{- /* routemap */}}
4+
{{ include "env.deployment-gtw.canary.routemap" . }}
5+
6+
{{- end }} {{- /* define "env.deployment-gtw.canary" */}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{{- define "env.deployment-gtw.none.routemap" }}
2+
3+
{{- $versions := include "normalize.versions.deployment" . | mustFromJson }}
4+
5+
apiVersion: v1
6+
kind: ConfigMap
7+
{{- template "routemap.metadata" . }}
8+
data:
9+
strSpec: |
10+
versions:
11+
{{- range $i, $v := $versions }}
12+
- resources:
13+
- gvrShort: svc
14+
name: {{ template "svc.name" $v }}
15+
namespace: {{ template "svc.namespace" $v }}
16+
- gvrShort: deploy
17+
name: {{ template "deploy.name" $v }}
18+
namespace: {{ template "deploy.namespace" $v }}
19+
{{- end }}
20+
21+
{{- end }} {{- /* define "env.deployment-gtw.none.routemap" */}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{{- define "env.deployment-gtw.none" }}
2+
3+
{{- /* routemap */}}
4+
{{ include "env.deployment-gtw.none.routemap" . }}
5+
6+
{{- end }} {{- /* define "env.deployment-gtw.none" */}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{{- define "env.deployment-gtw.service" }}
2+
3+
{{- $APP_NAME := (include "application.name" .) }}
4+
{{- $APP_NAMESPACE := (include "application.namespace" .) }}
5+
6+
apiVersion: v1
7+
kind: Service
8+
metadata:
9+
name: {{ $APP_NAME }}
10+
namespace: {{ $APP_NAMESPACE }}
11+
spec:
12+
selector:
13+
app: {{ $APP_NAME }}
14+
ports:
15+
- port: 80
16+
{{- end }} {{- /* define "env.deployment-gtw.service" */}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{{- define "env.deployment-gtw" }}
2+
3+
{{- /* Prepare versions for simpler processing */}}
4+
{{- $versions := include "normalize.versions.deployment" . | mustFromJson }}
5+
6+
{{- range $i, $v := $versions }}
7+
{{- /* Deployment */}}
8+
{{ include "env.deployment.version.deployment" $v }}
9+
---
10+
{{- /* Service */}}
11+
{{ include "env.deployment.version.service" $v }}
12+
---
13+
{{- end }} {{- /* range $i, $v := $versions */}}
14+
15+
{{- /* Service */}}
16+
{{ include "env.deployment-gtw.service" . }}
17+
---
18+
19+
{{- /* routemap (and other strategy specific objects) */}}
20+
{{- if not .Values.application.strategy }}
21+
{{ include "env.deployment-gtw.none" . }}
22+
{{- else if eq "none" .Values.application.strategy }}
23+
{{ include "env.deployment-gtw.none" . }}
24+
{{- else if eq "blue-green" .Values.application.strategy }}
25+
{{ include "env.deployment-gtw.blue-green" . }}
26+
{{- else if eq "canary" .Values.application.strategy }}
27+
{{ include "env.deployment-gtw.canary" . }}
28+
{{- end }} {{- /* if eq ... .Values.application.strategy */}}
29+
30+
{{- end }} {{- /* define "env.deployment-gtw" */}}

charts/release/templates/release.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
{{- /* Different processing based on .Values.environment */}}
1212
{{- if eq "deployment" .Values.environment }}
1313
{{- include "env.deployment" . }}
14+
{{- else if eq "deployment-gtw" .Values.environment }}
15+
{{- include "env.deployment-gtw" . }}
1416
{{- else if eq "deployment-istio" .Values.environment }}
1517
{{- include "env.deployment-istio" . }}
1618
{{- else if eq "kserve-modelmesh-istio" .Values.environment }}

0 commit comments

Comments
 (0)