Skip to content

Commit 24dfc71

Browse files
Merge b32805e into 3f45ca9
2 parents 3f45ca9 + b32805e commit 24dfc71

File tree

24 files changed

+22
-1503
lines changed

24 files changed

+22
-1503
lines changed

cmd/ingress/ingress.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,6 @@ For Kubernetes cluster version older than v1.19.0, you should always set the --i
8080
--kubeconfig /path/to/kubeconfig \
8181
--ingress-version networking/v1beta1
8282
83-
If your Kubernetes cluster version is prior to v1.14+, only ingress.extensions/v1beta1 can be used.
84-
85-
apisix-ingress-controller ingress \
86-
--default-apisix-cluster-base-url http://apisix-service:9180/apisix/admin \
87-
--kubeconfig /path/to/kubeconfig \
88-
--ingress-version extensions/v1beta1
89-
9083
If you run apisix-ingress-controller outside the Kubernetes cluster, --kubeconfig option (or kubeconfig item in configuration file) should be specified explicitly,
9184
or if you run it inside cluster, leave it alone and in-cluster configuration will be discovered and used.
9285

pkg/config/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ func (cfg *Config) Validate() error {
207207
return errors.New("apisix base url is required")
208208
}
209209
switch cfg.Kubernetes.IngressVersion {
210-
case IngressNetworkingV1, IngressNetworkingV1beta1, IngressExtensionsV1beta1:
210+
case IngressNetworkingV1, IngressNetworkingV1beta1:
211211
break
212212
default:
213213
return errors.New("unsupported ingress version")

pkg/kube/ingress.go

Lines changed: 9 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@ package kube
1717
import (
1818
"errors"
1919

20-
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
2120
networkingv1 "k8s.io/api/networking/v1"
2221
networkingv1beta1 "k8s.io/api/networking/v1beta1"
2322
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
24-
listersextensionsv1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
2523
listersnetworkingv1 "k8s.io/client-go/listers/networking/v1"
2624
listersnetworkingv1beta1 "k8s.io/client-go/listers/networking/v1beta1"
2725
)
@@ -31,8 +29,6 @@ const (
3129
IngressV1 = "networking/v1"
3230
// IngressV1beta1 represents the Ingress in networking/v1beta1 group version.
3331
IngressV1beta1 = "networking/v1beta1"
34-
// IngressExtensionsV1beta1 represents the Ingress in extensions/v1beta1 group version.
35-
IngressExtensionsV1beta1 = "extensions/v1beta1"
3632
)
3733

3834
// IngressLister is an encapsulation for the lister of Kubernetes
@@ -42,8 +38,6 @@ type IngressLister interface {
4238
V1(string, string) (Ingress, error)
4339
// V1beta1 gets the ingress in networking/v1beta1.
4440
V1beta1(string, string) (Ingress, error)
45-
// ExtensionsV1beta1 gets the ingress in extensions/v1beta1.
46-
ExtensionsV1beta1(string, string) (Ingress, error)
4741
}
4842

4943
// IngressInformer is an encapsulation for the informer of Kubernetes
@@ -64,9 +58,6 @@ type Ingress interface {
6458
// V1beta1 returns the ingress in networking/v1beta1, the real
6559
// ingress must be in networking/v1beta1, or V1beta1() will panic.
6660
V1beta1() *networkingv1beta1.Ingress
67-
// ExtensionsV1beta1 returns the ingress in extensions/v1beta1, the real
68-
// ingress must be in extensions/v1beta1, or ExtensionsV1beta1() will panic.
69-
ExtensionsV1beta1() *extensionsv1beta1.Ingress
7061
// ResourceVersion returns the the resource version field inside
7162
// the real Ingress.
7263
ResourceVersion() string
@@ -83,10 +74,9 @@ type IngressEvent struct {
8374
}
8475

8576
type ingress struct {
86-
groupVersion string
87-
v1 *networkingv1.Ingress
88-
v1beta1 *networkingv1beta1.Ingress
89-
extensionsV1beta1 *extensionsv1beta1.Ingress
77+
groupVersion string
78+
v1 *networkingv1.Ingress
79+
v1beta1 *networkingv1beta1.Ingress
9080
metav1.Object
9181
}
9282

@@ -104,31 +94,20 @@ func (ing *ingress) V1beta1() *networkingv1beta1.Ingress {
10494
return ing.v1beta1
10595
}
10696

107-
func (ing *ingress) ExtensionsV1beta1() *extensionsv1beta1.Ingress {
108-
if ing.groupVersion != IngressExtensionsV1beta1 {
109-
panic("not a extensions/v1beta1 ingress")
110-
}
111-
return ing.extensionsV1beta1
112-
}
113-
11497
func (ing *ingress) GroupVersion() string {
11598
return ing.groupVersion
11699
}
117100

118101
func (ing *ingress) ResourceVersion() string {
119-
if ing.GroupVersion() == IngressV1 {
120-
return ing.V1().ResourceVersion
121-
}
122102
if ing.GroupVersion() == IngressV1beta1 {
123103
return ing.V1beta1().ResourceVersion
124104
}
125-
return ing.ExtensionsV1beta1().ResourceVersion
105+
return ing.V1().ResourceVersion
126106
}
127107

128108
type ingressLister struct {
129-
v1Lister listersnetworkingv1.IngressLister
130-
v1beta1Lister listersnetworkingv1beta1.IngressLister
131-
extensionsV1beta1Lister listersextensionsv1beta1.IngressLister
109+
v1Lister listersnetworkingv1.IngressLister
110+
v1beta1Lister listersnetworkingv1beta1.IngressLister
132111
}
133112

134113
func (l *ingressLister) V1(namespace, name string) (Ingress, error) {
@@ -155,18 +134,6 @@ func (l *ingressLister) V1beta1(namespace, name string) (Ingress, error) {
155134
}, nil
156135
}
157136

158-
func (l *ingressLister) ExtensionsV1beta1(namespace, name string) (Ingress, error) {
159-
ing, err := l.extensionsV1beta1Lister.Ingresses(namespace).Get(name)
160-
if err != nil {
161-
return nil, err
162-
}
163-
return &ingress{
164-
groupVersion: IngressExtensionsV1beta1,
165-
extensionsV1beta1: ing,
166-
Object: ing,
167-
}, nil
168-
}
169-
170137
// MustNewIngress creates a kube.Ingress object according to the
171138
// type of obj.
172139
func MustNewIngress(obj interface{}) Ingress {
@@ -183,12 +150,6 @@ func MustNewIngress(obj interface{}) Ingress {
183150
v1beta1: ing,
184151
Object: ing,
185152
}
186-
case *extensionsv1beta1.Ingress:
187-
return &ingress{
188-
groupVersion: IngressExtensionsV1beta1,
189-
extensionsV1beta1: ing,
190-
Object: ing,
191-
}
192153
default:
193154
panic("invalid ingress type")
194155
}
@@ -211,23 +172,15 @@ func NewIngress(obj interface{}) (Ingress, error) {
211172
v1beta1: ing,
212173
Object: ing,
213174
}, nil
214-
case *extensionsv1beta1.Ingress:
215-
return &ingress{
216-
groupVersion: IngressExtensionsV1beta1,
217-
extensionsV1beta1: ing,
218-
Object: ing,
219-
}, nil
220175
default:
221176
return nil, errors.New("invalid ingress type")
222177
}
223178
}
224179

225180
// NewIngressLister creates an version-neutral Ingress lister.
226-
func NewIngressLister(v1 listersnetworkingv1.IngressLister, v1beta1 listersnetworkingv1beta1.IngressLister,
227-
extensionsv1beta1 listersextensionsv1beta1.IngressLister) IngressLister {
181+
func NewIngressLister(v1 listersnetworkingv1.IngressLister, v1beta1 listersnetworkingv1beta1.IngressLister) IngressLister {
228182
return &ingressLister{
229-
v1Lister: v1,
230-
v1beta1Lister: v1beta1,
231-
extensionsV1beta1Lister: extensionsv1beta1,
183+
v1Lister: v1,
184+
v1beta1Lister: v1beta1,
232185
}
233186
}

pkg/providers/controller.go

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
2828
"k8s.io/client-go/kubernetes/scheme"
2929
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
30-
extensionsv1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
3130
networkingv1 "k8s.io/client-go/listers/networking/v1"
3231
networkingv1beta1 "k8s.io/client-go/listers/networking/v1beta1"
3332
"k8s.io/client-go/tools/cache"
@@ -225,9 +224,8 @@ func (c *Controller) initSharedInformers() *providertypes.ListerInformer {
225224
var (
226225
ingressInformer cache.SharedIndexInformer
227226

228-
ingressListerV1 networkingv1.IngressLister
229-
ingressListerV1beta1 networkingv1beta1.IngressLister
230-
ingressListerExtensionsV1beta1 extensionsv1beta1.IngressLister
227+
ingressListerV1 networkingv1.IngressLister
228+
ingressListerV1beta1 networkingv1beta1.IngressLister
231229
)
232230

233231
var (
@@ -292,18 +290,15 @@ func (c *Controller) initSharedInformers() *providertypes.ListerInformer {
292290
configmapLister := kubeFactory.Core().V1().ConfigMaps().Lister()
293291

294292
switch c.cfg.Kubernetes.IngressVersion {
295-
case config.IngressNetworkingV1:
296-
ingressInformer = kubeFactory.Networking().V1().Ingresses().Informer()
297-
ingressListerV1 = kubeFactory.Networking().V1().Ingresses().Lister()
298293
case config.IngressNetworkingV1beta1:
299294
ingressInformer = kubeFactory.Networking().V1beta1().Ingresses().Informer()
300295
ingressListerV1beta1 = kubeFactory.Networking().V1beta1().Ingresses().Lister()
301296
default:
302-
ingressInformer = kubeFactory.Extensions().V1beta1().Ingresses().Informer()
303-
ingressListerExtensionsV1beta1 = kubeFactory.Extensions().V1beta1().Ingresses().Lister()
297+
ingressInformer = kubeFactory.Networking().V1().Ingresses().Informer()
298+
ingressListerV1 = kubeFactory.Networking().V1().Ingresses().Lister()
304299
}
305300

306-
ingressLister := kube.NewIngressLister(ingressListerV1, ingressListerV1beta1, ingressListerExtensionsV1beta1)
301+
ingressLister := kube.NewIngressLister(ingressListerV1, ingressListerV1beta1)
307302

308303
listerInformer := &providertypes.ListerInformer{
309304
ApisixFactory: apisixFactory,

pkg/providers/ingress/ingress.go

Lines changed: 3 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import (
2525
"go.uber.org/zap"
2626
"gopkg.in/go-playground/pool.v3"
2727
corev1 "k8s.io/api/core/v1"
28-
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
2928
networkingv1 "k8s.io/api/networking/v1"
3029
networkingv1beta1 "k8s.io/api/networking/v1beta1"
3130
k8serrors "k8s.io/apimachinery/pkg/api/errors"
@@ -122,11 +121,9 @@ func (c *ingressController) sync(ctx context.Context, ev *types.Event) error {
122121
ing, err = c.IngressLister.V1(namespace, name)
123122
case kube.IngressV1beta1:
124123
ing, err = c.IngressLister.V1beta1(namespace, name)
125-
case kube.IngressExtensionsV1beta1:
126-
ing, err = c.IngressLister.ExtensionsV1beta1(namespace, name)
127124
default:
128-
err = fmt.Errorf("unsupported group version %s, one of (%s/%s/%s) is expected", ingEv.GroupVersion,
129-
kube.IngressV1, kube.IngressV1beta1, kube.IngressExtensionsV1beta1)
125+
err = fmt.Errorf("unsupported group version %s, one of (%s/%s) is expected", ingEv.GroupVersion,
126+
kube.IngressV1, kube.IngressV1beta1)
130127
}
131128

132129
if err != nil {
@@ -163,10 +160,6 @@ func (c *ingressController) sync(ctx context.Context, ev *types.Event) error {
163160
for _, tls := range ing.V1beta1().Spec.TLS {
164161
secrets = append(secrets, tls.SecretName)
165162
}
166-
case kube.IngressExtensionsV1beta1:
167-
for _, tls := range ing.ExtensionsV1beta1().Spec.TLS {
168-
secrets = append(secrets, tls.SecretName)
169-
}
170163
}
171164

172165
for _, secret := range secrets {
@@ -283,8 +276,6 @@ func (c *ingressController) UpdateStatus(obj kube.Ingress) {
283276
ing, err = c.IngressLister.V1(namespace, name)
284277
case kube.IngressV1beta1:
285278
ing, err = c.IngressLister.V1beta1(namespace, name)
286-
case kube.IngressExtensionsV1beta1:
287-
ing, err = c.IngressLister.ExtensionsV1beta1(namespace, name)
288279
}
289280
if err != nil {
290281
if !k8serrors.IsNotFound(err) {
@@ -304,8 +295,6 @@ func (c *ingressController) UpdateStatus(obj kube.Ingress) {
304295
c.recordStatus(obj.V1())
305296
case kube.IngressV1beta1:
306297
c.recordStatus(obj.V1beta1())
307-
case kube.IngressExtensionsV1beta1:
308-
c.recordStatus(obj.ExtensionsV1beta1())
309298
}
310299
}
311300

@@ -362,11 +351,6 @@ func (c *ingressController) onUpdate(oldObj, newObj interface{}) {
362351
!reflect.DeepEqual(prev.V1beta1().Status, curr.V1beta1().Status) {
363352
return
364353
}
365-
case kube.IngressExtensionsV1beta1:
366-
if reflect.DeepEqual(prev.ExtensionsV1beta1().Spec, curr.ExtensionsV1beta1().Spec) &&
367-
!reflect.DeepEqual(prev.ExtensionsV1beta1().Status, curr.ExtensionsV1beta1().Status) {
368-
return
369-
}
370354
}
371355
}
372356

@@ -457,10 +441,8 @@ func (c *ingressController) isIngressEffective(ing kube.Ingress) bool {
457441
} else if ing.GroupVersion() == kube.IngressV1beta1 {
458442
ic = ing.V1beta1().Spec.IngressClassName
459443
ica = ing.V1beta1().GetAnnotations()[_ingressKey]
460-
} else {
461-
ic = ing.ExtensionsV1beta1().Spec.IngressClassName
462-
ica = ing.ExtensionsV1beta1().GetAnnotations()[_ingressKey]
463444
}
445+
464446
if configIngressClass == config.IngressClassApisixAndAll {
465447
configIngressClass = config.IngressClass
466448
}
@@ -554,27 +536,6 @@ func (c *ingressController) recordStatus(at runtime.Object) {
554536
)
555537
}
556538
}
557-
case *extensionsv1beta1.Ingress:
558-
// set to status
559-
lbips, err := c.ingressLBStatusIPs()
560-
if err != nil {
561-
log.Errorw("failed to get APISIX gateway external IPs",
562-
zap.Error(err),
563-
)
564-
565-
}
566-
567-
ingressLB := utils.CoreV1ToExtensionsV1beta1LB(lbips)
568-
if !utils.CompareExtensionsV1beta1LBEqual(v.Status.LoadBalancer.Ingress, ingressLB) {
569-
v.Status.LoadBalancer.Ingress = ingressLB
570-
if _, errRecord := client.ExtensionsV1beta1().Ingresses(v.Namespace).UpdateStatus(context.TODO(), v, metav1.UpdateOptions{}); errRecord != nil {
571-
log.Errorw("failed to record status change for IngressExtensionsv1beta1",
572-
zap.Error(errRecord),
573-
zap.String("name", v.Name),
574-
zap.String("namespace", v.Namespace),
575-
)
576-
}
577-
}
578539
default:
579540
// This should not be executed
580541
log.Errorf("unsupported resource record: %s", v)

pkg/providers/ingress/ingress_test.go

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"testing"
1919

2020
"github.com/stretchr/testify/assert"
21-
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
2221
networkingv1 "k8s.io/api/networking/v1"
2322
networkingv1beta1 "k8s.io/api/networking/v1beta1"
2423
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -132,43 +131,4 @@ func TestIsIngressEffective(t *testing.T) {
132131
assert.Nil(t, err)
133132
// Spec.IngressClassName takes the precedence.
134133
assert.Equal(t, false, c.isIngressEffective(ing))
135-
136-
ingExtV1beta1 := &extensionsv1beta1.Ingress{
137-
TypeMeta: metav1.TypeMeta{
138-
Kind: "ingress",
139-
APIVersion: "extensions/v1beta1",
140-
},
141-
ObjectMeta: metav1.ObjectMeta{
142-
Namespace: "default",
143-
Name: "v1extbeta1-ing",
144-
Annotations: map[string]string{
145-
_ingressKey: "apisix",
146-
},
147-
},
148-
Spec: extensionsv1beta1.IngressSpec{
149-
IngressClassName: &cn,
150-
},
151-
}
152-
ing, err = kube.NewIngress(ingExtV1beta1)
153-
assert.Nil(t, err)
154-
// Annotations takes precedence.
155-
assert.Equal(t, true, c.isIngressEffective(ing))
156-
157-
ingExtV1beta1 = &extensionsv1beta1.Ingress{
158-
TypeMeta: metav1.TypeMeta{
159-
Kind: "ingress",
160-
APIVersion: "extensions/v1beta1",
161-
},
162-
ObjectMeta: metav1.ObjectMeta{
163-
Namespace: "default",
164-
Name: "v1extbeta1-ing",
165-
},
166-
Spec: extensionsv1beta1.IngressSpec{
167-
IngressClassName: &cn,
168-
},
169-
}
170-
ing, err = kube.NewIngress(ingExtV1beta1)
171-
assert.Nil(t, err)
172-
// Spec.IngressClassName takes the precedence.
173-
assert.Equal(t, false, c.isIngressEffective(ing))
174134
}

0 commit comments

Comments
 (0)