Skip to content

Commit 64ffe62

Browse files
authored
feat(helm): support f5 ingress controller (#454)
* feat(helm): support f5 ingress controller Signed-off-by: András Jáky <ajaky@cisco.com> * feat(helm): add annotationMode toggle to ingress Signed-off-by: András Jáky <ajaky@cisco.com> --------- Signed-off-by: András Jáky <ajaky@cisco.com>
1 parent 0233491 commit 64ffe62

9 files changed

Lines changed: 47 additions & 48 deletions

File tree

install/charts/oasf/templates/_helpers.tpl

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,42 @@ Default root ingress path that excludes reserved prefixes and versioned prefixes
8686
{{- $root := . -}}
8787
/(?!api(?:/|$)|schema(?:/|$)|export(?:/|$)|sample(?:/|$)|{{ include "chart.ingress.semverSegmentRegex" $root | trim }}(?:/|$))(.*)
8888
{{- end }}
89+
90+
{{/*
91+
Build ingress annotations for rewrite-based ingresses.
92+
Modes:
93+
- community: ingress-nginx annotations only
94+
- f5: F5 NGINX Ingress Controller annotations only
95+
- both: emit both annotation families
96+
User-provided ingress.annotations override chart defaults.
97+
*/}}
98+
{{- define "chart.ingress.annotations.rewrite" -}}
99+
{{- $root := .root -}}
100+
{{- $target := .target -}}
101+
{{- $mode := default "both" $root.Values.ingress.annotationMode -}}
102+
{{- $defaults := dict -}}
103+
{{- if or (eq $mode "community") (eq $mode "both") -}}
104+
{{- $_ := set $defaults "nginx.ingress.kubernetes.io/rewrite-target" $target -}}
105+
{{- $_ := set $defaults "nginx.ingress.kubernetes.io/use-regex" "true" -}}
106+
{{- end -}}
107+
{{- if or (eq $mode "f5") (eq $mode "both") -}}
108+
{{- $_ := set $defaults "nginx.org/path-regex" "case_sensitive" -}}
109+
{{- $_ := set $defaults "nginx.org/rewrite-target" $target -}}
110+
{{- end -}}
111+
{{- toYaml (mergeOverwrite (dict) $defaults ($root.Values.ingress.annotations | default dict)) -}}
112+
{{- end }}
113+
114+
{{/*
115+
Build ingress annotations for doc ingress.
116+
Only ingress-nginx needs an explicit use-regex=false default.
117+
User-provided ingress.annotations override chart defaults.
118+
*/}}
119+
{{- define "chart.ingress.annotations.doc" -}}
120+
{{- $root := . -}}
121+
{{- $mode := default "both" $root.Values.ingress.annotationMode -}}
122+
{{- $defaults := dict -}}
123+
{{- if or (eq $mode "community") (eq $mode "both") -}}
124+
{{- $_ := set $defaults "nginx.ingress.kubernetes.io/use-regex" "false" -}}
125+
{{- end -}}
126+
{{- toYaml (mergeOverwrite (dict) $defaults ($root.Values.ingress.annotations | default dict)) -}}
127+
{{- end }}

install/charts/oasf/templates/ingress/ingress-api.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,7 @@ metadata:
2222
labels:
2323
{{- include "chart.labels" . | nindent 4 }}
2424
annotations:
25-
{{- if or (eq .Values.ingress.className "nginx") (eq .Values.ingress.className "nginx-internal") }}
26-
nginx.ingress.kubernetes.io/rewrite-target: /api/$2
27-
nginx.ingress.kubernetes.io/use-regex: "true"
28-
{{- end }}
29-
{{- with .Values.ingress.annotations }}
30-
{{- toYaml . | nindent 4 }}
31-
{{- end }}
25+
{{- include "chart.ingress.annotations.rewrite" (dict "root" . "target" "/api/$2") | nindent 4 }}
3226
spec:
3327
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
3428
ingressClassName: {{ .Values.ingress.className }}

install/charts/oasf/templates/ingress/ingress-default.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,7 @@ metadata:
2222
labels:
2323
{{- include "chart.labels" . | nindent 4 }}
2424
annotations:
25-
{{- if or (eq .Values.ingress.className "nginx") (eq .Values.ingress.className "nginx-internal") }}
26-
nginx.ingress.kubernetes.io/rewrite-target: /$1
27-
nginx.ingress.kubernetes.io/use-regex: "true"
28-
{{- end }}
29-
{{- with .Values.ingress.annotations }}
30-
{{- toYaml . | nindent 4 }}
31-
{{- end }}
25+
{{- include "chart.ingress.annotations.rewrite" (dict "root" . "target" "/$1") | nindent 4 }}
3226
spec:
3327
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
3428
ingressClassName: {{ .Values.ingress.className }}

install/charts/oasf/templates/ingress/ingress-doc.yaml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,7 @@ metadata:
2222
labels:
2323
{{- include "chart.labels" . | nindent 4 }}
2424
annotations:
25-
{{- if or (eq .Values.ingress.className "nginx") (eq .Values.ingress.className "nginx-internal") }}
26-
nginx.ingress.kubernetes.io/use-regex: "false"
27-
{{- end }}
28-
{{- with .Values.ingress.annotations }}
29-
{{- toYaml . | nindent 4 }}
30-
{{- end }}
25+
{{- include "chart.ingress.annotations.doc" . | nindent 4 }}
3126
spec:
3227
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
3328
ingressClassName: {{ .Values.ingress.className }}

install/charts/oasf/templates/ingress/ingress-export.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,7 @@ metadata:
2222
labels:
2323
{{- include "chart.labels" . | nindent 4 }}
2424
annotations:
25-
{{- if or (eq .Values.ingress.className "nginx") (eq .Values.ingress.className "nginx-internal") }}
26-
nginx.ingress.kubernetes.io/rewrite-target: /export/$2
27-
nginx.ingress.kubernetes.io/use-regex: "true"
28-
{{- end }}
29-
{{- with .Values.ingress.annotations }}
30-
{{- toYaml . | nindent 4 }}
31-
{{- end }}
25+
{{- include "chart.ingress.annotations.rewrite" (dict "root" . "target" "/export/$2") | nindent 4 }}
3226
spec:
3327
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
3428
ingressClassName: {{ .Values.ingress.className }}

install/charts/oasf/templates/ingress/ingress-sample.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,7 @@ metadata:
2222
labels:
2323
{{- include "chart.labels" . | nindent 4 }}
2424
annotations:
25-
{{- if or (eq .Values.ingress.className "nginx") (eq .Values.ingress.className "nginx-internal") }}
26-
nginx.ingress.kubernetes.io/rewrite-target: /sample/$2
27-
nginx.ingress.kubernetes.io/use-regex: "true"
28-
{{- end }}
29-
{{- with .Values.ingress.annotations }}
30-
{{- toYaml . | nindent 4 }}
31-
{{- end }}
25+
{{- include "chart.ingress.annotations.rewrite" (dict "root" . "target" "/sample/$2") | nindent 4 }}
3226
spec:
3327
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
3428
ingressClassName: {{ .Values.ingress.className }}

install/charts/oasf/templates/ingress/ingress-schema.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,7 @@ metadata:
2222
labels:
2323
{{- include "chart.labels" . | nindent 4 }}
2424
annotations:
25-
{{- if or (eq .Values.ingress.className "nginx") (eq .Values.ingress.className "nginx-internal") }}
26-
nginx.ingress.kubernetes.io/rewrite-target: /schema/$2
27-
nginx.ingress.kubernetes.io/use-regex: "true"
28-
{{- end }}
29-
{{- with .Values.ingress.annotations }}
30-
{{- toYaml . | nindent 4 }}
31-
{{- end }}
25+
{{- include "chart.ingress.annotations.rewrite" (dict "root" . "target" "/schema/$2") | nindent 4 }}
3226
spec:
3327
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
3428
ingressClassName: {{ .Values.ingress.className }}

install/charts/oasf/templates/ingress/ingress.yaml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,7 @@ metadata:
2222
labels:
2323
{{- include "chart.labels" . | nindent 4 }}
2424
annotations:
25-
{{- if or (eq .Values.ingress.className "nginx") (eq .Values.ingress.className "nginx-internal") }}
26-
nginx.ingress.kubernetes.io/rewrite-target: /$2
27-
nginx.ingress.kubernetes.io/use-regex: "true"
28-
{{- end }}
29-
{{- with .Values.ingress.annotations }}
30-
{{- toYaml . | nindent 4 }}
31-
{{- end }}
25+
{{- include "chart.ingress.annotations.rewrite" (dict "root" . "target" "/$2") | nindent 4 }}
3226
spec:
3327
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
3428
ingressClassName: {{ .Values.ingress.className }}

install/charts/oasf/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ securityContext: {}
7373
ingress:
7474
enabled: false
7575
className: ""
76+
annotationMode: both # community | f5 | both
7677
annotations: {}
7778
# kubernetes.io/ingress.class: nginx
7879
# kubernetes.io/tls-acme: "true"

0 commit comments

Comments
 (0)