Skip to content

Commit 4df064f

Browse files
authored
fix: structure of serviceName/Port has changed in v1 ingress (#200)
Signed-off-by: Gareth Evans <gareth@bryncynfelin.co.uk>
1 parent b494cd1 commit 4df064f

8 files changed

Lines changed: 249 additions & 6 deletions

charts/jenkins/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ Use the following links to reference issues, PRs, and commits prior to v2.6.0.
1212
The change log until v1.5.7 was auto-generated based on git commits.
1313
Those entries include a reference to the git commit to be able to get more details.
1414

15+
## 3.0.11
16+
17+
Fixes & unit tests for Ingress resources on Kubernetes 1.19 and above
18+
1519
## 3.0.10
1620

1721
Ingress resources on Kubernetes 1.19 (or above) are created with the version `networking.k8s.io/v1`

charts/jenkins/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: v2
22
name: jenkins
33
home: https://jenkins.io/
4-
version: 3.0.10
4+
version: 3.0.11
55
appVersion: 2.263.1
66
description: Jenkins - Build great things at any scale! The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.
77
sources:

charts/jenkins/templates/jenkins-controller-ingress.yaml

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}
12
{{- if .Values.controller.ingress.enabled }}
2-
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
3+
{{- if semverCompare ">=1.19-0" $kubeTargetVersion -}}
34
apiVersion: networking.k8s.io/v1
4-
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
5+
{{- else if semverCompare ">=1.14-0" $kubeTargetVersion -}}
56
apiVersion: networking.k8s.io/v1beta1
67
{{- else -}}
78
apiVersion: {{ .Values.controller.ingress.apiVersion }}
@@ -31,8 +32,15 @@ spec:
3132
paths:
3233
{{- if empty (.Values.controller.ingress.paths) }}
3334
- backend:
35+
{{ if semverCompare ">=1.19-0" $kubeTargetVersion }}
36+
service:
37+
name: {{ template "jenkins.fullname" . }}
38+
port:
39+
number: {{ .Values.controller.servicePort }}
40+
{{ else }}
3441
serviceName: {{ template "jenkins.fullname" . }}
3542
servicePort: {{ .Values.controller.servicePort }}
43+
{{ end }}
3644
{{- else }}
3745
{{ tpl (toYaml .Values.controller.ingress.paths | indent 6) . }}
3846
{{- if .Values.controller.ingress.path }}
@@ -46,8 +54,15 @@ spec:
4654
- http:
4755
paths:
4856
- backend:
57+
{{ if semverCompare ">=1.19-0" $kubeTargetVersion }}
58+
service:
59+
name: {{ template "jenkins.fullname" . }}
60+
port:
61+
number: {{ .Values.controller.servicePort }}
62+
{{ else }}
4963
serviceName: {{ template "jenkins.fullname" . }}
5064
servicePort: {{ .Values.controller.servicePort }}
65+
{{ end }}
5166
host: {{ .Values.controller.ingress.resourceRootUrl | quote }}
5267
{{- end }}
5368
{{- if .Values.controller.ingress.tls }}

charts/jenkins/templates/jenkins-controller-secondary-ingress.yaml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
{{- if .Values.controller.secondaryingress.enabled }}
2+
{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }}
23
{{- $serviceName := include "jenkins.fullname" . -}}
34
{{- $servicePort := .Values.controller.servicePort -}}
4-
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
5+
{{- if semverCompare ">=1.19-0" $kubeTargetVersion -}}
56
apiVersion: networking.k8s.io/v1
6-
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
7+
{{- else if semverCompare ">=1.14-0" $kubeTargetVersion -}}
78
apiVersion: networking.k8s.io/v1beta1
89
{{- else -}}
910
apiVersion: {{ .Values.controller.secondaryingress.apiVersion }}
@@ -34,8 +35,15 @@ spec:
3435
{{- range .Values.controller.secondaryingress.paths }}
3536
- path: {{ . | quote }}
3637
backend:
38+
{{ if semverCompare ">=1.19-0" $kubeTargetVersion }}
39+
service:
40+
name: {{ $serviceName }}
41+
port:
42+
number: {{ $servicePort }}
43+
{{ else }}
3744
serviceName: {{ $serviceName }}
3845
servicePort: {{ $servicePort }}
46+
{{ end }}
3947
{{- end}}
4048
{{- if .Values.controller.secondaryingress.tls }}
4149
tls:
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
suite: Controller Primary Ingress
2+
release:
3+
name: my-release
4+
namespace: my-namespace
5+
templates:
6+
- jenkins-controller-ingress.yaml
7+
capabilities:
8+
majorVersion: 1
9+
minorVersion: 19
10+
tests:
11+
- it: test defaults
12+
asserts:
13+
- hasDocuments:
14+
count: 0
15+
- it: enabled
16+
set:
17+
controller.ingress:
18+
enabled: true
19+
hostName: jenkins.example.com
20+
tls:
21+
- secretName: tlsSecret
22+
hosts:
23+
- jenkins.example.com
24+
asserts:
25+
- isKind:
26+
of: Ingress
27+
- equal:
28+
path: apiVersion
29+
value: networking.k8s.io/v1
30+
- equal:
31+
path: metadata.name
32+
value: my-release-jenkins
33+
- equal:
34+
path: metadata.namespace
35+
value: my-namespace
36+
- matchRegex:
37+
path: metadata.labels.helm\.sh/chart
38+
pattern: ^jenkins-
39+
- isNull:
40+
path: metadata.annotations
41+
- equal:
42+
path: spec
43+
value:
44+
rules:
45+
- host: jenkins.example.com
46+
http:
47+
paths:
48+
- backend:
49+
service:
50+
name: my-release-jenkins
51+
port:
52+
number: 8080
53+
tls:
54+
- hosts:
55+
- jenkins.example.com
56+
secretName: tlsSecret
57+
- it: other values
58+
set:
59+
controller.ingress:
60+
enabled: true
61+
hostName: jenkins.example.com
62+
annotations:
63+
kubernetes.io/ingress.class: nginx
64+
kubernetes.io/tls-acme: "true"
65+
paths:
66+
- backend:
67+
serviceName: ssl-redirect
68+
servicePort: use-annotation
69+
- backend:
70+
service:
71+
name: >-
72+
{{ template "jenkins.fullname" . }}
73+
port:
74+
number: 8080
75+
tls:
76+
- secretName: tlsSecret
77+
hosts:
78+
- jenkins.example.com
79+
asserts:
80+
- equal:
81+
path: metadata.annotations
82+
value:
83+
kubernetes.io/ingress.class: nginx
84+
kubernetes.io/tls-acme: "true"
85+
- equal:
86+
path: spec
87+
value:
88+
rules:
89+
- host: jenkins.example.com
90+
http:
91+
paths:
92+
- backend:
93+
service:
94+
name: ssl-redirect
95+
port:
96+
number: use-annotation
97+
- backend:
98+
service:
99+
name: my-release-jenkins
100+
port:
101+
number: 8080
102+
tls:
103+
- hosts:
104+
- jenkins.example.com
105+
secretName: tlsSecret
106+
- it: disable helm.sh label
107+
set:
108+
renderHelmLabels: false
109+
controller.ingress:
110+
enabled: true
111+
hostName: jenkins.example.com
112+
asserts:
113+
- equal:
114+
path: metadata.labels
115+
value:
116+
app.kubernetes.io/component: jenkins-controller
117+
app.kubernetes.io/instance: my-release
118+
app.kubernetes.io/managed-by: Helm
119+
app.kubernetes.io/name: jenkins
120+
- it: empty paths
121+
set:
122+
controller.ingress:
123+
enabled: true
124+
paths:
125+
asserts:
126+
- equal:
127+
path: spec.rules
128+
value:
129+
- http:
130+
paths:
131+
- backend:
132+
service:
133+
name: my-release-jenkins
134+
port:
135+
number: 8080

charts/jenkins/tests/jenkins-controller-ingress-test.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ release:
44
namespace: my-namespace
55
templates:
66
- jenkins-controller-ingress.yaml
7+
capabilities:
8+
majorVersion: 1
9+
minorVersion: 18
710
tests:
811
- it: test defaults
912
asserts:
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
suite: Controller Secondary Ingress
2+
release:
3+
name: my-release
4+
namespace: my-namespace
5+
templates:
6+
- jenkins-controller-secondary-ingress.yaml
7+
capabilities:
8+
majorVersion: 1
9+
minorVersion: 19
10+
tests:
11+
- it: test defaults
12+
asserts:
13+
- hasDocuments:
14+
count: 0
15+
- it: enabled
16+
set:
17+
controller.secondaryingress:
18+
enabled: true
19+
hostName: jenkins.example.com
20+
paths:
21+
- /github-webhook
22+
tls:
23+
- secretName: tlsSecret
24+
hosts:
25+
- jenkins.example.com
26+
asserts:
27+
- isKind:
28+
of: Ingress
29+
- equal:
30+
path: apiVersion
31+
value: networking.k8s.io/v1
32+
- equal:
33+
path: metadata.name
34+
value: my-release-jenkins-secondary
35+
- equal:
36+
path: metadata.namespace
37+
value: my-namespace
38+
- matchRegex:
39+
path: metadata.labels.helm\.sh/chart
40+
pattern: ^jenkins-
41+
- isNull:
42+
path: metadata.annotations
43+
- equal:
44+
path: spec
45+
value:
46+
rules:
47+
- host: jenkins.example.com
48+
http:
49+
paths:
50+
- backend:
51+
service:
52+
name: my-release-jenkins
53+
port:
54+
number: 8080
55+
path: /github-webhook
56+
tls:
57+
- hosts:
58+
- jenkins.example.com
59+
secretName: tlsSecret
60+
- it: disable helm.sh label
61+
set:
62+
renderHelmLabels: false
63+
controller.secondaryingress:
64+
enabled: true
65+
hostName: jenkins.example.com
66+
paths:
67+
- /github-webhook
68+
asserts:
69+
- equal:
70+
path: metadata.labels
71+
value:
72+
app.kubernetes.io/component: jenkins-controller
73+
app.kubernetes.io/instance: my-release
74+
app.kubernetes.io/managed-by: Helm
75+
app.kubernetes.io/name: jenkins

charts/jenkins/tests/jenkins-controller-secondary-ingress-test.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ release:
44
namespace: my-namespace
55
templates:
66
- jenkins-controller-secondary-ingress.yaml
7+
capabilities:
8+
majorVersion: 1
9+
minorVersion: 18
710
tests:
811
- it: test defaults
912
asserts:
@@ -67,4 +70,4 @@ tests:
6770
app.kubernetes.io/component: jenkins-controller
6871
app.kubernetes.io/instance: my-release
6972
app.kubernetes.io/managed-by: Helm
70-
app.kubernetes.io/name: jenkins
73+
app.kubernetes.io/name: jenkins

0 commit comments

Comments
 (0)