Skip to content

Commit f979cfb

Browse files
committed
Drop v1beta1 from ingress nginx (kubernetes#7156)
* Drop v1beta1 from ingress nginx Signed-off-by: Ricardo Pchevuzinske Katz <[email protected]> * Fix intorstr logic in controller Signed-off-by: Ricardo Pchevuzinske Katz <[email protected]> * fixing admission Signed-off-by: Ricardo Pchevuzinske Katz <[email protected]> * more intorstr fixing * correct template rendering Signed-off-by: Ricardo Pchevuzinske Katz <[email protected]> * Fix e2e tests for v1 api Signed-off-by: Ricardo Pchevuzinske Katz <[email protected]> * Fix gofmt errors * This is finally working...almost there... Signed-off-by: Ricardo Pchevuzinske Katz <[email protected]> * Re-add removed validation of AdmissionReview
1 parent f3c5069 commit f979cfb

File tree

157 files changed

+1051
-872
lines changed

Some content is hidden

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

157 files changed

+1051
-872
lines changed

.github/workflows/ci.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,16 @@ jobs:
137137
id: kind
138138
uses: engineerd/[email protected]
139139
with:
140+
<<<<<<< HEAD
140141
version: v0.11.1
141142
image: kindest/node:v1.20.2
143+
||||||| parent of 78afe7e38 (Drop v1beta1 from ingress nginx (#7156))
144+
version: v0.10.0
145+
image: kindest/node:v1.20.2
146+
=======
147+
version: v0.11.1
148+
image: kindest/node:v1.21.1
149+
>>>>>>> 78afe7e38 (Drop v1beta1 from ingress nginx (#7156))
142150

143151
- name: Test
144152
env:
@@ -159,7 +167,13 @@ jobs:
159167
160168
strategy:
161169
matrix:
170+
<<<<<<< HEAD
162171
k8s: [v1.16.15, v1.17.17, v1.18.19, v1.19.11, v1.20.7, v1.21.2]
172+
||||||| parent of 78afe7e38 (Drop v1beta1 from ingress nginx (#7156))
173+
k8s: [v1.16.15, v1.17.17, v1.18.15, v1.19.7, v1.20.2]
174+
=======
175+
k8s: [v1.19.11, v1.20.7, v1.21.1]
176+
>>>>>>> 78afe7e38 (Drop v1beta1 from ingress nginx (#7156))
163177

164178
steps:
165179

charts/ingress-nginx/templates/NOTES.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Get the application URL by running these commands:
2929

3030
An example Ingress that makes use of the controller:
3131

32-
apiVersion: networking.k8s.io/v1beta1
32+
apiVersion: networking.k8s.io/v1
3333
kind: Ingress
3434
metadata:
3535
annotations:

charts/ingress-nginx/templates/admission-webhooks/validating-webhook.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ webhooks:
1818
- apiGroups:
1919
- networking.k8s.io
2020
apiVersions:
21-
- v1beta1
21+
- v1
2222
operations:
2323
- CREATE
2424
- UPDATE
@@ -28,12 +28,11 @@ webhooks:
2828
sideEffects: None
2929
admissionReviewVersions:
3030
- v1
31-
- v1beta1
3231
clientConfig:
3332
service:
3433
namespace: {{ .Release.Namespace | quote }}
3534
name: {{ include "ingress-nginx.controller.fullname" . }}-admission
36-
path: /networking/v1beta1/ingresses
35+
path: /networking/v1/ingresses
3736
{{- if .Values.controller.admissionWebhooks.timeoutSeconds }}
3837
timeoutSeconds: {{ .Values.controller.admissionWebhooks.timeoutSeconds }}
3938
{{- end }}

cmd/nginx/main.go

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -104,36 +104,29 @@ func main() {
104104
conf.FakeCertificate = ssl.GetFakeSSLCert()
105105
klog.InfoS("SSL fake certificate created", "file", conf.FakeCertificate.PemFileName)
106106

107-
var isNetworkingIngressAvailable bool
108-
109-
isNetworkingIngressAvailable, k8s.IsIngressV1Beta1Ready, _ = k8s.NetworkingIngressAvailable(kubeClient)
110-
if !isNetworkingIngressAvailable {
111-
klog.Fatalf("ingress-nginx requires Kubernetes v1.14.0 or higher")
107+
if !k8s.NetworkingIngressAvailable(kubeClient) {
108+
klog.Fatalf("ingress-nginx requires Kubernetes v1.19.0 or higher")
112109
}
113110

114-
if k8s.IsIngressV1Beta1Ready {
115-
klog.InfoS("Enabling new Ingress features available since Kubernetes v1.18")
116-
k8s.IngressClass, err = kubeClient.NetworkingV1beta1().IngressClasses().
117-
Get(context.TODO(), class.IngressClass, metav1.GetOptions{})
118-
if err != nil {
119-
if !errors.IsNotFound(err) {
120-
if !errors.IsUnauthorized(err) && !errors.IsForbidden(err) {
121-
klog.Fatalf("Error searching IngressClass: %v", err)
122-
}
123-
124-
klog.ErrorS(err, "Searching IngressClass", "class", class.IngressClass)
111+
k8s.IngressClass, err = kubeClient.NetworkingV1().IngressClasses().
112+
Get(context.TODO(), class.IngressClass, metav1.GetOptions{})
113+
if err != nil {
114+
if !errors.IsNotFound(err) {
115+
if !errors.IsUnauthorized(err) && !errors.IsForbidden(err) {
116+
klog.Fatalf("Error searching IngressClass: %v", err)
125117
}
118+
klog.ErrorS(err, "Searching IngressClass", "class", class.IngressClass)
119+
}
126120

127-
klog.Warningf("No IngressClass resource with name %v found. Only annotation will be used.", class.IngressClass)
121+
klog.Warningf("No IngressClass resource with name %v found. Only annotation will be used.", class.IngressClass)
122+
// TODO: remove once this is fixed in client-go
123+
k8s.IngressClass = nil
128124

129-
// TODO: remove once this is fixed in client-go
130-
k8s.IngressClass = nil
131-
}
125+
}
132126

133-
if k8s.IngressClass != nil && k8s.IngressClass.Spec.Controller != k8s.IngressNGINXController {
134-
klog.Errorf(`Invalid IngressClass (Spec.Controller) value "%v". Should be "%v"`, k8s.IngressClass.Spec.Controller, k8s.IngressNGINXController)
135-
klog.Fatalf("IngressClass with name %v is not valid for ingress-nginx (invalid Spec.Controller)", class.IngressClass)
136-
}
127+
if k8s.IngressClass != nil && k8s.IngressClass.Spec.Controller != k8s.IngressNGINXController {
128+
klog.Errorf(`Invalid IngressClass (Spec.Controller) value "%v". Should be "%v"`, k8s.IngressClass.Spec.Controller, k8s.IngressNGINXController)
129+
klog.Fatalf("IngressClass with name %v is not valid for ingress-nginx (invalid Spec.Controller)", class.IngressClass)
137130
}
138131

139132
conf.Client = kubeClient

cmd/plugin/commands/ingresses/ingresses.go

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ import (
2222
"text/tabwriter"
2323

2424
"github.com/spf13/cobra"
25-
networking "k8s.io/api/networking/v1beta1"
25+
networking "k8s.io/api/networking/v1"
26+
"k8s.io/apimachinery/pkg/util/intstr"
2627
"k8s.io/cli-runtime/pkg/genericclioptions"
2728

2829
"k8s.io/ingress-nginx/cmd/plugin/request"
@@ -157,9 +158,10 @@ func getIngressRows(ingresses *[]networking.Ingress) []ingressRow {
157158

158159
defaultBackendService := ""
159160
defaultBackendPort := ""
160-
if ing.Spec.Backend != nil {
161-
defaultBackendService = ing.Spec.Backend.ServiceName
162-
defaultBackendPort = ing.Spec.Backend.ServicePort.String()
161+
if ing.Spec.DefaultBackend != nil {
162+
name, port := serviceToNameAndPort(ing.Spec.DefaultBackend.Service)
163+
defaultBackendService = name
164+
defaultBackendPort = port.String()
163165
}
164166

165167
// Handle catch-all ingress
@@ -197,14 +199,15 @@ func getIngressRows(ingresses *[]networking.Ingress) []ingressRow {
197199
}
198200

199201
for _, path := range rule.HTTP.Paths {
202+
svcName, svcPort := serviceToNameAndPort(path.Backend.Service)
200203
row := ingressRow{
201204
Namespace: ing.Namespace,
202205
IngressName: ing.Name,
203206
Host: rule.Host,
204207
Path: path.Path,
205208
TLS: hasTLS,
206-
ServiceName: path.Backend.ServiceName,
207-
ServicePort: path.Backend.ServicePort.String(),
209+
ServiceName: svcName,
210+
ServicePort: svcPort.String(),
208211
Address: address,
209212
}
210213

@@ -215,3 +218,17 @@ func getIngressRows(ingresses *[]networking.Ingress) []ingressRow {
215218

216219
return rows
217220
}
221+
222+
func serviceToNameAndPort(svc *networking.IngressServiceBackend) (string, intstr.IntOrString) {
223+
var svcName string
224+
if svc != nil {
225+
svcName = svc.Name
226+
if svc.Port.Number > 0 {
227+
return svcName, intstr.FromInt(int(svc.Port.Number))
228+
}
229+
if svc.Port.Name != "" {
230+
return svcName, intstr.FromString(svc.Port.String())
231+
}
232+
}
233+
return "", intstr.IntOrString{}
234+
}

cmd/plugin/commands/lint/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222
"github.com/spf13/cobra"
2323

2424
appsv1 "k8s.io/api/apps/v1"
25-
networking "k8s.io/api/networking/v1beta1"
25+
networking "k8s.io/api/networking/v1"
2626
kmeta "k8s.io/apimachinery/pkg/apis/meta/v1"
2727
"k8s.io/cli-runtime/pkg/genericclioptions"
2828

cmd/plugin/lints/ingress.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"fmt"
2121
"strings"
2222

23-
networking "k8s.io/api/networking/v1beta1"
23+
networking "k8s.io/api/networking/v1"
2424
kmeta "k8s.io/apimachinery/pkg/apis/meta/v1"
2525
"k8s.io/ingress-nginx/cmd/plugin/util"
2626
)

cmd/plugin/request/request.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ import (
2222

2323
appsv1 "k8s.io/api/apps/v1"
2424
apiv1 "k8s.io/api/core/v1"
25-
networking "k8s.io/api/networking/v1beta1"
25+
networking "k8s.io/api/networking/v1"
2626
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2727
"k8s.io/cli-runtime/pkg/genericclioptions"
2828
appsv1client "k8s.io/client-go/kubernetes/typed/apps/v1"
2929
corev1 "k8s.io/client-go/kubernetes/typed/core/v1"
30-
typednetworking "k8s.io/client-go/kubernetes/typed/networking/v1beta1"
30+
typednetworking "k8s.io/client-go/kubernetes/typed/networking/v1"
3131

3232
"k8s.io/ingress-nginx/cmd/plugin/util"
3333
)

deploy/static/provider/aws/deploy-tls-termination.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ webhooks:
440440
- apiGroups:
441441
- networking.k8s.io
442442
apiVersions:
443-
- v1beta1
443+
- v1
444444
operations:
445445
- CREATE
446446
- UPDATE
@@ -450,12 +450,11 @@ webhooks:
450450
sideEffects: None
451451
admissionReviewVersions:
452452
- v1
453-
- v1beta1
454453
clientConfig:
455454
service:
456455
namespace: ingress-nginx
457456
name: ingress-nginx-controller-admission
458-
path: /networking/v1beta1/ingresses
457+
path: /networking/v1/ingresses
459458
---
460459
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
461460
apiVersion: v1

deploy/static/provider/aws/deploy.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ webhooks:
427427
- apiGroups:
428428
- networking.k8s.io
429429
apiVersions:
430-
- v1beta1
430+
- v1
431431
operations:
432432
- CREATE
433433
- UPDATE
@@ -437,12 +437,11 @@ webhooks:
437437
sideEffects: None
438438
admissionReviewVersions:
439439
- v1
440-
- v1beta1
441440
clientConfig:
442441
service:
443442
namespace: ingress-nginx
444443
name: ingress-nginx-controller-admission
445-
path: /networking/v1beta1/ingresses
444+
path: /networking/v1/ingresses
446445
---
447446
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
448447
apiVersion: v1

deploy/static/provider/baremetal/deploy.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ webhooks:
422422
- apiGroups:
423423
- networking.k8s.io
424424
apiVersions:
425-
- v1beta1
425+
- v1
426426
operations:
427427
- CREATE
428428
- UPDATE
@@ -432,12 +432,11 @@ webhooks:
432432
sideEffects: None
433433
admissionReviewVersions:
434434
- v1
435-
- v1beta1
436435
clientConfig:
437436
service:
438437
namespace: ingress-nginx
439438
name: ingress-nginx-controller-admission
440-
path: /networking/v1beta1/ingresses
439+
path: /networking/v1/ingresses
441440
---
442441
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
443442
apiVersion: v1

deploy/static/provider/cloud/deploy.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -424,7 +424,7 @@ webhooks:
424424
- apiGroups:
425425
- networking.k8s.io
426426
apiVersions:
427-
- v1beta1
427+
- v1
428428
operations:
429429
- CREATE
430430
- UPDATE
@@ -434,12 +434,11 @@ webhooks:
434434
sideEffects: None
435435
admissionReviewVersions:
436436
- v1
437-
- v1beta1
438437
clientConfig:
439438
service:
440439
namespace: ingress-nginx
441440
name: ingress-nginx-controller-admission
442-
path: /networking/v1beta1/ingresses
441+
path: /networking/v1/ingresses
443442
---
444443
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
445444
apiVersion: v1

deploy/static/provider/do/deploy.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ webhooks:
426426
- apiGroups:
427427
- networking.k8s.io
428428
apiVersions:
429-
- v1beta1
429+
- v1
430430
operations:
431431
- CREATE
432432
- UPDATE
@@ -436,12 +436,11 @@ webhooks:
436436
sideEffects: None
437437
admissionReviewVersions:
438438
- v1
439-
- v1beta1
440439
clientConfig:
441440
service:
442441
namespace: ingress-nginx
443442
name: ingress-nginx-controller-admission
444-
path: /networking/v1beta1/ingresses
443+
path: /networking/v1/ingresses
445444
---
446445
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
447446
apiVersion: v1

deploy/static/provider/exoscale/deploy.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,7 @@ webhooks:
432432
- apiGroups:
433433
- networking.k8s.io
434434
apiVersions:
435-
- v1beta1
435+
- v1
436436
operations:
437437
- CREATE
438438
- UPDATE
@@ -442,12 +442,11 @@ webhooks:
442442
sideEffects: None
443443
admissionReviewVersions:
444444
- v1
445-
- v1beta1
446445
clientConfig:
447446
service:
448447
namespace: ingress-nginx
449448
name: ingress-nginx-controller-admission
450-
path: /networking/v1beta1/ingresses
449+
path: /networking/v1/ingresses
451450
---
452451
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
453452
apiVersion: v1

deploy/static/provider/kind/deploy.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ webhooks:
434434
- apiGroups:
435435
- networking.k8s.io
436436
apiVersions:
437-
- v1beta1
437+
- v1
438438
operations:
439439
- CREATE
440440
- UPDATE
@@ -444,12 +444,11 @@ webhooks:
444444
sideEffects: None
445445
admissionReviewVersions:
446446
- v1
447-
- v1beta1
448447
clientConfig:
449448
service:
450449
namespace: ingress-nginx
451450
name: ingress-nginx-controller-admission
452-
path: /networking/v1beta1/ingresses
451+
path: /networking/v1/ingresses
453452
---
454453
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
455454
apiVersion: v1

deploy/static/provider/scw/deploy.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ webhooks:
426426
- apiGroups:
427427
- networking.k8s.io
428428
apiVersions:
429-
- v1beta1
429+
- v1
430430
operations:
431431
- CREATE
432432
- UPDATE
@@ -436,12 +436,11 @@ webhooks:
436436
sideEffects: None
437437
admissionReviewVersions:
438438
- v1
439-
- v1beta1
440439
clientConfig:
441440
service:
442441
namespace: ingress-nginx
443442
name: ingress-nginx-controller-admission
444-
path: /networking/v1beta1/ingresses
443+
path: /networking/v1/ingresses
445444
---
446445
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
447446
apiVersion: v1

0 commit comments

Comments
 (0)