This is an automated email from the ASF dual-hosted git repository.
zhangjintao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git
The following commit(s) were added to refs/heads/master by this push:
new 3fa789df chore: remove support for Ingress in the extensions/v1beta1
API version (#1840)
3fa789df is described below
commit 3fa789df1fdf996b7dcac806633b076432581ce4
Author: Jintao Zhang <[email protected]>
AuthorDate: Thu Aug 3 09:27:40 2023 +0800
chore: remove support for Ingress in the extensions/v1beta1 API version
(#1840)
Signed-off-by: Jintao Zhang <[email protected]>
---
cmd/ingress/ingress.go | 7 -
pkg/config/config.go | 2 +-
pkg/kube/ingress.go | 65 ++-------
pkg/providers/controller.go | 15 +-
pkg/providers/ingress/ingress.go | 45 +-----
pkg/providers/ingress/ingress_test.go | 40 ------
pkg/providers/ingress/translation/translator.go | 151 --------------------
pkg/providers/utils/ingress_status.go | 43 ------
pkg/providers/utils/ingress_status_test.go | 72 ----------
test/e2e/suite-annotations/authorization.go | 92 -------------
test/e2e/suite-annotations/cors.go | 85 ------------
test/e2e/suite-annotations/csrf.go | 54 --------
test/e2e/suite-annotations/forward_auth.go | 43 +-----
test/e2e/suite-annotations/http_method.go | 70 ----------
test/e2e/suite-annotations/iprestriction.go | 58 --------
test/e2e/suite-annotations/plugin_conifg.go | 29 ----
test/e2e/suite-annotations/redirect.go | 95 -------------
test/e2e/suite-annotations/response_rewrite.go | 99 --------------
test/e2e/suite-annotations/rewrite.go | 59 --------
test/e2e/suite-annotations/svc_namespace.go | 78 -----------
test/e2e/suite-annotations/upstreamprotocol.go | 33 -----
test/e2e/suite-annotations/websocket.go | 84 ------------
test/e2e/suite-chore/consistency.go | 54 --------
.../suite-ingress-resource/ingress.go | 152 +--------------------
24 files changed, 22 insertions(+), 1503 deletions(-)
diff --git a/cmd/ingress/ingress.go b/cmd/ingress/ingress.go
index 638a4ddd..03666b9d 100644
--- a/cmd/ingress/ingress.go
+++ b/cmd/ingress/ingress.go
@@ -80,13 +80,6 @@ For Kubernetes cluster version older than v1.19.0, you
should always set the --i
--kubeconfig /path/to/kubeconfig \
--ingress-version networking/v1beta1
-If your Kubernetes cluster version is prior to v1.14+, only
ingress.extensions/v1beta1 can be used.
-
- apisix-ingress-controller ingress \
- --default-apisix-cluster-base-url
http://apisix-service:9180/apisix/admin \
- --kubeconfig /path/to/kubeconfig \
- --ingress-version extensions/v1beta1
-
If you run apisix-ingress-controller outside the Kubernetes cluster,
--kubeconfig option (or kubeconfig item in configuration file) should be
specified explicitly,
or if you run it inside cluster, leave it alone and in-cluster configuration
will be discovered and used.
diff --git a/pkg/config/config.go b/pkg/config/config.go
index 0b31f87f..c164affa 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -207,7 +207,7 @@ func (cfg *Config) Validate() error {
return errors.New("apisix base url is required")
}
switch cfg.Kubernetes.IngressVersion {
- case IngressNetworkingV1, IngressNetworkingV1beta1,
IngressExtensionsV1beta1:
+ case IngressNetworkingV1, IngressNetworkingV1beta1:
break
default:
return errors.New("unsupported ingress version")
diff --git a/pkg/kube/ingress.go b/pkg/kube/ingress.go
index 84b7ba31..91e2e11d 100644
--- a/pkg/kube/ingress.go
+++ b/pkg/kube/ingress.go
@@ -17,11 +17,9 @@ package kube
import (
"errors"
- extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
networkingv1 "k8s.io/api/networking/v1"
networkingv1beta1 "k8s.io/api/networking/v1beta1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- listersextensionsv1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
listersnetworkingv1 "k8s.io/client-go/listers/networking/v1"
listersnetworkingv1beta1 "k8s.io/client-go/listers/networking/v1beta1"
)
@@ -31,8 +29,6 @@ const (
IngressV1 = "networking/v1"
// IngressV1beta1 represents the Ingress in networking/v1beta1 group
version.
IngressV1beta1 = "networking/v1beta1"
- // IngressExtensionsV1beta1 represents the Ingress in
extensions/v1beta1 group version.
- IngressExtensionsV1beta1 = "extensions/v1beta1"
)
// IngressLister is an encapsulation for the lister of Kubernetes
@@ -42,8 +38,6 @@ type IngressLister interface {
V1(string, string) (Ingress, error)
// V1beta1 gets the ingress in networking/v1beta1.
V1beta1(string, string) (Ingress, error)
- // ExtensionsV1beta1 gets the ingress in extensions/v1beta1.
- ExtensionsV1beta1(string, string) (Ingress, error)
}
// IngressInformer is an encapsulation for the informer of Kubernetes
@@ -64,9 +58,6 @@ type Ingress interface {
// V1beta1 returns the ingress in networking/v1beta1, the real
// ingress must be in networking/v1beta1, or V1beta1() will panic.
V1beta1() *networkingv1beta1.Ingress
- // ExtensionsV1beta1 returns the ingress in extensions/v1beta1, the real
- // ingress must be in extensions/v1beta1, or ExtensionsV1beta1() will
panic.
- ExtensionsV1beta1() *extensionsv1beta1.Ingress
// ResourceVersion returns the the resource version field inside
// the real Ingress.
ResourceVersion() string
@@ -83,10 +74,9 @@ type IngressEvent struct {
}
type ingress struct {
- groupVersion string
- v1 *networkingv1.Ingress
- v1beta1 *networkingv1beta1.Ingress
- extensionsV1beta1 *extensionsv1beta1.Ingress
+ groupVersion string
+ v1 *networkingv1.Ingress
+ v1beta1 *networkingv1beta1.Ingress
metav1.Object
}
@@ -104,31 +94,20 @@ func (ing *ingress) V1beta1() *networkingv1beta1.Ingress {
return ing.v1beta1
}
-func (ing *ingress) ExtensionsV1beta1() *extensionsv1beta1.Ingress {
- if ing.groupVersion != IngressExtensionsV1beta1 {
- panic("not a extensions/v1beta1 ingress")
- }
- return ing.extensionsV1beta1
-}
-
func (ing *ingress) GroupVersion() string {
return ing.groupVersion
}
func (ing *ingress) ResourceVersion() string {
- if ing.GroupVersion() == IngressV1 {
- return ing.V1().ResourceVersion
- }
if ing.GroupVersion() == IngressV1beta1 {
return ing.V1beta1().ResourceVersion
}
- return ing.ExtensionsV1beta1().ResourceVersion
+ return ing.V1().ResourceVersion
}
type ingressLister struct {
- v1Lister listersnetworkingv1.IngressLister
- v1beta1Lister listersnetworkingv1beta1.IngressLister
- extensionsV1beta1Lister listersextensionsv1beta1.IngressLister
+ v1Lister listersnetworkingv1.IngressLister
+ v1beta1Lister listersnetworkingv1beta1.IngressLister
}
func (l *ingressLister) V1(namespace, name string) (Ingress, error) {
@@ -155,18 +134,6 @@ func (l *ingressLister) V1beta1(namespace, name string)
(Ingress, error) {
}, nil
}
-func (l *ingressLister) ExtensionsV1beta1(namespace, name string) (Ingress,
error) {
- ing, err := l.extensionsV1beta1Lister.Ingresses(namespace).Get(name)
- if err != nil {
- return nil, err
- }
- return &ingress{
- groupVersion: IngressExtensionsV1beta1,
- extensionsV1beta1: ing,
- Object: ing,
- }, nil
-}
-
// MustNewIngress creates a kube.Ingress object according to the
// type of obj.
func MustNewIngress(obj interface{}) Ingress {
@@ -183,12 +150,6 @@ func MustNewIngress(obj interface{}) Ingress {
v1beta1: ing,
Object: ing,
}
- case *extensionsv1beta1.Ingress:
- return &ingress{
- groupVersion: IngressExtensionsV1beta1,
- extensionsV1beta1: ing,
- Object: ing,
- }
default:
panic("invalid ingress type")
}
@@ -211,23 +172,15 @@ func NewIngress(obj interface{}) (Ingress, error) {
v1beta1: ing,
Object: ing,
}, nil
- case *extensionsv1beta1.Ingress:
- return &ingress{
- groupVersion: IngressExtensionsV1beta1,
- extensionsV1beta1: ing,
- Object: ing,
- }, nil
default:
return nil, errors.New("invalid ingress type")
}
}
// NewIngressLister creates an version-neutral Ingress lister.
-func NewIngressLister(v1 listersnetworkingv1.IngressLister, v1beta1
listersnetworkingv1beta1.IngressLister,
- extensionsv1beta1 listersextensionsv1beta1.IngressLister) IngressLister
{
+func NewIngressLister(v1 listersnetworkingv1.IngressLister, v1beta1
listersnetworkingv1beta1.IngressLister) IngressLister {
return &ingressLister{
- v1Lister: v1,
- v1beta1Lister: v1beta1,
- extensionsV1beta1Lister: extensionsv1beta1,
+ v1Lister: v1,
+ v1beta1Lister: v1beta1,
}
}
diff --git a/pkg/providers/controller.go b/pkg/providers/controller.go
index fc1f97c5..63ee65a4 100644
--- a/pkg/providers/controller.go
+++ b/pkg/providers/controller.go
@@ -27,7 +27,6 @@ import (
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/client-go/kubernetes/scheme"
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
- extensionsv1beta1 "k8s.io/client-go/listers/extensions/v1beta1"
networkingv1 "k8s.io/client-go/listers/networking/v1"
networkingv1beta1 "k8s.io/client-go/listers/networking/v1beta1"
"k8s.io/client-go/tools/cache"
@@ -225,9 +224,8 @@ func (c *Controller) initSharedInformers()
*providertypes.ListerInformer {
var (
ingressInformer cache.SharedIndexInformer
- ingressListerV1 networkingv1.IngressLister
- ingressListerV1beta1 networkingv1beta1.IngressLister
- ingressListerExtensionsV1beta1 extensionsv1beta1.IngressLister
+ ingressListerV1 networkingv1.IngressLister
+ ingressListerV1beta1 networkingv1beta1.IngressLister
)
var (
@@ -292,18 +290,15 @@ func (c *Controller) initSharedInformers()
*providertypes.ListerInformer {
configmapLister := kubeFactory.Core().V1().ConfigMaps().Lister()
switch c.cfg.Kubernetes.IngressVersion {
- case config.IngressNetworkingV1:
- ingressInformer =
kubeFactory.Networking().V1().Ingresses().Informer()
- ingressListerV1 =
kubeFactory.Networking().V1().Ingresses().Lister()
case config.IngressNetworkingV1beta1:
ingressInformer =
kubeFactory.Networking().V1beta1().Ingresses().Informer()
ingressListerV1beta1 =
kubeFactory.Networking().V1beta1().Ingresses().Lister()
default:
- ingressInformer =
kubeFactory.Extensions().V1beta1().Ingresses().Informer()
- ingressListerExtensionsV1beta1 =
kubeFactory.Extensions().V1beta1().Ingresses().Lister()
+ ingressInformer =
kubeFactory.Networking().V1().Ingresses().Informer()
+ ingressListerV1 =
kubeFactory.Networking().V1().Ingresses().Lister()
}
- ingressLister := kube.NewIngressLister(ingressListerV1,
ingressListerV1beta1, ingressListerExtensionsV1beta1)
+ ingressLister := kube.NewIngressLister(ingressListerV1,
ingressListerV1beta1)
listerInformer := &providertypes.ListerInformer{
ApisixFactory: apisixFactory,
diff --git a/pkg/providers/ingress/ingress.go b/pkg/providers/ingress/ingress.go
index 49bb1d17..d89ec3c8 100644
--- a/pkg/providers/ingress/ingress.go
+++ b/pkg/providers/ingress/ingress.go
@@ -25,7 +25,6 @@ import (
"go.uber.org/zap"
"gopkg.in/go-playground/pool.v3"
corev1 "k8s.io/api/core/v1"
- extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
networkingv1 "k8s.io/api/networking/v1"
networkingv1beta1 "k8s.io/api/networking/v1beta1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
@@ -122,11 +121,9 @@ func (c *ingressController) sync(ctx context.Context, ev
*types.Event) error {
ing, err = c.IngressLister.V1(namespace, name)
case kube.IngressV1beta1:
ing, err = c.IngressLister.V1beta1(namespace, name)
- case kube.IngressExtensionsV1beta1:
- ing, err = c.IngressLister.ExtensionsV1beta1(namespace, name)
default:
- err = fmt.Errorf("unsupported group version %s, one of
(%s/%s/%s) is expected", ingEv.GroupVersion,
- kube.IngressV1, kube.IngressV1beta1,
kube.IngressExtensionsV1beta1)
+ err = fmt.Errorf("unsupported group version %s, one of (%s/%s)
is expected", ingEv.GroupVersion,
+ kube.IngressV1, kube.IngressV1beta1)
}
if err != nil {
@@ -163,10 +160,6 @@ func (c *ingressController) sync(ctx context.Context, ev
*types.Event) error {
for _, tls := range ing.V1beta1().Spec.TLS {
secrets = append(secrets, tls.SecretName)
}
- case kube.IngressExtensionsV1beta1:
- for _, tls := range ing.ExtensionsV1beta1().Spec.TLS {
- secrets = append(secrets, tls.SecretName)
- }
}
for _, secret := range secrets {
@@ -283,8 +276,6 @@ func (c *ingressController) UpdateStatus(obj kube.Ingress) {
ing, err = c.IngressLister.V1(namespace, name)
case kube.IngressV1beta1:
ing, err = c.IngressLister.V1beta1(namespace, name)
- case kube.IngressExtensionsV1beta1:
- ing, err = c.IngressLister.ExtensionsV1beta1(namespace, name)
}
if err != nil {
if !k8serrors.IsNotFound(err) {
@@ -304,8 +295,6 @@ func (c *ingressController) UpdateStatus(obj kube.Ingress) {
c.recordStatus(obj.V1())
case kube.IngressV1beta1:
c.recordStatus(obj.V1beta1())
- case kube.IngressExtensionsV1beta1:
- c.recordStatus(obj.ExtensionsV1beta1())
}
}
@@ -362,11 +351,6 @@ func (c *ingressController) onUpdate(oldObj, newObj
interface{}) {
!reflect.DeepEqual(prev.V1beta1().Status,
curr.V1beta1().Status) {
return
}
- case kube.IngressExtensionsV1beta1:
- if reflect.DeepEqual(prev.ExtensionsV1beta1().Spec,
curr.ExtensionsV1beta1().Spec) &&
-
!reflect.DeepEqual(prev.ExtensionsV1beta1().Status,
curr.ExtensionsV1beta1().Status) {
- return
- }
}
}
@@ -457,10 +441,8 @@ func (c *ingressController) isIngressEffective(ing
kube.Ingress) bool {
} else if ing.GroupVersion() == kube.IngressV1beta1 {
ic = ing.V1beta1().Spec.IngressClassName
ica = ing.V1beta1().GetAnnotations()[_ingressKey]
- } else {
- ic = ing.ExtensionsV1beta1().Spec.IngressClassName
- ica = ing.ExtensionsV1beta1().GetAnnotations()[_ingressKey]
}
+
if configIngressClass == config.IngressClassApisixAndAll {
configIngressClass = config.IngressClass
}
@@ -554,27 +536,6 @@ func (c *ingressController) recordStatus(at
runtime.Object) {
)
}
}
- case *extensionsv1beta1.Ingress:
- // set to status
- lbips, err := c.ingressLBStatusIPs()
- if err != nil {
- log.Errorw("failed to get APISIX gateway external IPs",
- zap.Error(err),
- )
-
- }
-
- ingressLB := utils.CoreV1ToExtensionsV1beta1LB(lbips)
- if
!utils.CompareExtensionsV1beta1LBEqual(v.Status.LoadBalancer.Ingress,
ingressLB) {
- v.Status.LoadBalancer.Ingress = ingressLB
- if _, errRecord :=
client.ExtensionsV1beta1().Ingresses(v.Namespace).UpdateStatus(context.TODO(),
v, metav1.UpdateOptions{}); errRecord != nil {
- log.Errorw("failed to record status change for
IngressExtensionsv1beta1",
- zap.Error(errRecord),
- zap.String("name", v.Name),
- zap.String("namespace", v.Namespace),
- )
- }
- }
default:
// This should not be executed
log.Errorf("unsupported resource record: %s", v)
diff --git a/pkg/providers/ingress/ingress_test.go
b/pkg/providers/ingress/ingress_test.go
index 2f8bb98f..06be9bda 100644
--- a/pkg/providers/ingress/ingress_test.go
+++ b/pkg/providers/ingress/ingress_test.go
@@ -18,7 +18,6 @@ import (
"testing"
"github.com/stretchr/testify/assert"
- extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
networkingv1 "k8s.io/api/networking/v1"
networkingv1beta1 "k8s.io/api/networking/v1beta1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -132,43 +131,4 @@ func TestIsIngressEffective(t *testing.T) {
assert.Nil(t, err)
// Spec.IngressClassName takes the precedence.
assert.Equal(t, false, c.isIngressEffective(ing))
-
- ingExtV1beta1 := &extensionsv1beta1.Ingress{
- TypeMeta: metav1.TypeMeta{
- Kind: "ingress",
- APIVersion: "extensions/v1beta1",
- },
- ObjectMeta: metav1.ObjectMeta{
- Namespace: "default",
- Name: "v1extbeta1-ing",
- Annotations: map[string]string{
- _ingressKey: "apisix",
- },
- },
- Spec: extensionsv1beta1.IngressSpec{
- IngressClassName: &cn,
- },
- }
- ing, err = kube.NewIngress(ingExtV1beta1)
- assert.Nil(t, err)
- // Annotations takes precedence.
- assert.Equal(t, true, c.isIngressEffective(ing))
-
- ingExtV1beta1 = &extensionsv1beta1.Ingress{
- TypeMeta: metav1.TypeMeta{
- Kind: "ingress",
- APIVersion: "extensions/v1beta1",
- },
- ObjectMeta: metav1.ObjectMeta{
- Namespace: "default",
- Name: "v1extbeta1-ing",
- },
- Spec: extensionsv1beta1.IngressSpec{
- IngressClassName: &cn,
- },
- }
- ing, err = kube.NewIngress(ingExtV1beta1)
- assert.Nil(t, err)
- // Spec.IngressClassName takes the precedence.
- assert.Equal(t, false, c.isIngressEffective(ing))
}
diff --git a/pkg/providers/ingress/translation/translator.go
b/pkg/providers/ingress/translation/translator.go
index 92545a46..3b0a87f2 100644
--- a/pkg/providers/ingress/translation/translator.go
+++ b/pkg/providers/ingress/translation/translator.go
@@ -23,7 +23,6 @@ import (
"strings"
"go.uber.org/zap"
- extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
networkingv1 "k8s.io/api/networking/v1"
networkingv1beta1 "k8s.io/api/networking/v1beta1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
@@ -116,8 +115,6 @@ func (t *translator) TranslateIngress(ing kube.Ingress,
args ...bool) (*translat
return t.translateIngressV1(ing.V1(), skipVerify)
case kube.IngressV1beta1:
return t.translateIngressV1beta1(ing.V1beta1(), skipVerify)
- case kube.IngressExtensionsV1beta1:
- return
t.translateIngressExtensionsV1beta1(ing.ExtensionsV1beta1(), skipVerify)
default:
return nil, fmt.Errorf("translator: source group version not
supported: %s", ing.GroupVersion())
}
@@ -129,8 +126,6 @@ func (t *translator) TranslateIngressDeleteEvent(ing
kube.Ingress, args ...bool)
return t.translateOldIngressV1(ing.V1())
case kube.IngressV1beta1:
return t.translateOldIngressV1beta1(ing.V1beta1())
- case kube.IngressExtensionsV1beta1:
- return
t.translateOldIngressExtensionsv1beta1(ing.ExtensionsV1beta1())
default:
return nil, fmt.Errorf("translator: source group version not
supported: %s", ing.GroupVersion())
}
@@ -407,113 +402,6 @@ func (t *translator)
translateUpstreamFromIngressV1(namespace string, backend *n
return ups, nil
}
-func (t *translator) translateIngressExtensionsV1beta1(ing
*extensionsv1beta1.Ingress, skipVerify bool) (*translation.TranslateContext,
error) {
- ctx := translation.DefaultEmptyTranslateContext()
- ingress := t.TranslateAnnotations(ing.Annotations)
-
- // add https
- for _, tls := range ing.Spec.TLS {
- ssl, err := t.TranslateIngressTLS(ing.Namespace, ing.Name,
tls.SecretName, tls.Hosts)
- if err != nil {
- log.Errorw("failed to translate ingress tls to apisix
tls",
- zap.Error(err),
- zap.Any("ingress", ing),
- )
- return nil, err
- }
- ctx.AddSSL(ssl)
- }
- ns := ing.Namespace
- if ingress.ServiceNamespace != "" {
- ns = ingress.ServiceNamespace
- }
- for _, rule := range ing.Spec.Rules {
- for _, pathRule := range rule.HTTP.Paths {
- var (
- ups *apisixv1.Upstream
- err error
- )
- if pathRule.Backend.ServiceName != "" {
- // Structure here is same to
ingress.extensions/v1beta1, so just use this method.
- if skipVerify {
- ups =
t.translateDefaultUpstreamFromIngressV1beta1(ns, pathRule.Backend.ServiceName,
pathRule.Backend.ServicePort)
- } else {
- ups, err =
t.translateUpstreamFromIngressV1beta1(ns, pathRule.Backend.ServiceName,
pathRule.Backend.ServicePort)
- if err != nil {
- log.Errorw("failed to translate
ingress backend to upstream",
- zap.Error(err),
- zap.Any("ingress", ing),
- )
- return nil, err
- }
- }
- if ingress.UpstreamScheme != "" {
- ups.Scheme = ingress.UpstreamScheme
- }
- ctx.AddUpstream(ups)
- }
- uris := []string{pathRule.Path}
- var nginxVars []kubev2.ApisixRouteHTTPMatchExpr
- if pathRule.PathType != nil {
- if *pathRule.PathType ==
extensionsv1beta1.PathTypePrefix {
- // As per the specification of Ingress
path matching rule:
- // if the last element of the path is a
substring of the
- // last element in request path, it is
not a match, e.g. /foo/bar
- // matches /foo/bar/baz, but does not
match /foo/barbaz.
- // While in APISIX, /foo/bar matches
both /foo/bar/baz and
- // /foo/barbaz.
- // In order to be conformant with
Ingress specification, here
- // we create two paths here, the first
is the path itself
- // (exact match), the other is path +
"/*" (prefix match).
- prefix := pathRule.Path
- if strings.HasSuffix(prefix, "/") {
- prefix += "*"
- } else {
- prefix += "/*"
- }
- uris = append(uris, prefix)
- } else if *pathRule.PathType ==
extensionsv1beta1.PathTypeImplementationSpecific && ingress.UseRegex {
- nginxVars = append(nginxVars,
kubev2.ApisixRouteHTTPMatchExpr{
- Subject:
kubev2.ApisixRouteHTTPMatchExprSubject{
- Scope:
apisixconst.ScopePath,
- },
- Op: apisixconst.OpRegexMatch,
- Value: &pathRule.Path,
- })
- uris = []string{"/*"}
- }
- }
- route := apisixv1.NewDefaultRoute()
- route.Name = composeIngressRouteName(ing.Namespace,
ing.Name, rule.Host, pathRule.Path)
- route.ID = id.GenID(route.Name)
- route.Host = rule.Host
- route.Uris = uris
- route.EnableWebsocket = ingress.EnableWebSocket
- if len(nginxVars) > 0 {
- routeVars, err :=
t.ApisixTranslator.TranslateRouteMatchExprs(nginxVars)
- if err != nil {
- return nil, err
- }
- route.Vars = routeVars
- route.Priority = _regexPriority
- }
- if len(ingress.Plugins) > 0 {
- route.Plugins = *(ingress.Plugins.DeepCopy())
- }
-
- if ingress.PluginConfigName != "" {
- route.PluginConfigId =
id.GenID(apisixv1.ComposePluginConfigName(ing.Namespace,
ingress.PluginConfigName))
- }
-
- if ups != nil {
- route.UpstreamId = ups.ID
- }
- ctx.AddRoute(route)
- }
- }
- return ctx, nil
-}
-
func (t *translator) translateDefaultUpstreamFromIngressV1beta1(namespace
string, svcName string, svcPort intstr.IntOrString) *apisixv1.Upstream {
var portNumber int32
if svcPort.Type == intstr.String {
@@ -574,8 +462,6 @@ func (t *translator) TranslateOldIngress(ing kube.Ingress)
(*translation.Transla
return t.translateOldIngressV1(ing.V1())
case kube.IngressV1beta1:
return t.translateOldIngressV1beta1(ing.V1beta1())
- case kube.IngressExtensionsV1beta1:
- return
t.translateOldIngressExtensionsv1beta1(ing.ExtensionsV1beta1())
default:
return nil, fmt.Errorf("translator: source group version not
supported: %s", ing.GroupVersion())
}
@@ -665,43 +551,6 @@ func (t *translator) translateOldIngressV1beta1(ing
*networkingv1beta1.Ingress)
return oldCtx, nil
}
-func (t *translator) translateOldIngressExtensionsv1beta1(ing
*extensionsv1beta1.Ingress) (*translation.TranslateContext, error) {
- oldCtx := translation.DefaultEmptyTranslateContext()
-
- for _, tls := range ing.Spec.TLS {
- ssl, err := t.translateOldIngressTLS(ing.Namespace, ing.Name,
tls.SecretName, tls.Hosts)
- if err != nil {
- log.Errorw("failed to translate ingress tls to apisix
tls",
- zap.Error(err),
- zap.Any("ingress", ing),
- )
- continue
- }
- oldCtx.AddSSL(ssl)
- }
- for _, rule := range ing.Spec.Rules {
- for _, pathRule := range rule.HTTP.Paths {
- name := composeIngressRouteName(ing.Namespace,
ing.Name, rule.Host, pathRule.Path)
- r, err :=
t.Apisix.Cluster(t.ClusterName).Route().Get(context.Background(), name)
- if err != nil {
- continue
- }
- if r.UpstreamId != "" {
- ups := apisixv1.NewDefaultUpstream()
- ups.ID = r.UpstreamId
- oldCtx.AddUpstream(ups)
- }
- if r.PluginConfigId != "" {
- pc := apisixv1.NewDefaultPluginConfig()
- pc.ID = r.PluginConfigId
- oldCtx.AddPluginConfig(pc)
- }
- oldCtx.AddRoute(r)
- }
- }
- return oldCtx, nil
-}
-
// In the past, we used host + path directly to form its route name for
readability,
// but this method can cause problems in some scenarios.
// For example, the generated name is too long.
diff --git a/pkg/providers/utils/ingress_status.go
b/pkg/providers/utils/ingress_status.go
index c106a19b..3cafca85 100644
--- a/pkg/providers/utils/ingress_status.go
+++ b/pkg/providers/utils/ingress_status.go
@@ -24,7 +24,6 @@ import (
"time"
corev1 "k8s.io/api/core/v1"
- extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
networkingv1 "k8s.io/api/networking/v1"
networkingv1beta1 "k8s.io/api/networking/v1beta1"
listerscorev1 "k8s.io/client-go/listers/core/v1"
@@ -138,18 +137,6 @@ func lessNetworkingV1beta1LB(addrs
[]networkingv1beta1.IngressLoadBalancerIngres
}
}
-func lessExtensionsV1beta1LB(addrs
[]extensionsv1beta1.IngressLoadBalancerIngress) func(int, int) bool {
- return func(a, b int) bool {
- switch strings.Compare(addrs[a].Hostname, addrs[b].Hostname) {
- case -1:
- return true
- case 1:
- return false
- }
- return addrs[a].IP < addrs[b].IP
- }
-}
-
func CompareNetworkingV1LBEqual(lb1 []networkingv1.IngressLoadBalancerIngress,
lb2 []networkingv1.IngressLoadBalancerIngress) bool {
if len(lb1) != len(lb2) {
return false
@@ -186,24 +173,6 @@ func CompareNetworkingV1beta1LBEqual(lb1
[]networkingv1beta1.IngressLoadBalancer
return true
}
-func CompareExtensionsV1beta1LBEqual(lb1
[]extensionsv1beta1.IngressLoadBalancerIngress, lb2
[]extensionsv1beta1.IngressLoadBalancerIngress) bool {
- if len(lb1) != len(lb2) {
- return false
- }
- sort.SliceStable(lb1, lessExtensionsV1beta1LB(lb1))
- sort.SliceStable(lb2, lessExtensionsV1beta1LB(lb2))
- size := len(lb1)
- for i := 0; i < size; i++ {
- if lb1[i].IP != lb2[i].IP {
- return false
- }
- if lb1[i].Hostname != lb2[i].Hostname {
- return false
- }
- }
- return true
-}
-
// CoreV1ToNetworkV1LB convert []corev1.LoadBalancerIngress to
[]networkingv1.IngressLoadBalancerIngress
func CoreV1ToNetworkV1LB(lbips []corev1.LoadBalancerIngress)
[]networkingv1.IngressLoadBalancerIngress {
t := make([]networkingv1.IngressLoadBalancerIngress, 0, len(lbips))
@@ -228,18 +197,6 @@ func CoreV1ToNetworkV1beta1LB(lbips
[]corev1.LoadBalancerIngress) []networkingv1
return t
}
-// CoreV1ToExtensionsV1beta1LB convert []corev1.LoadBalancerIngress to
[]extensionsv1beta1.IngressLoadBalancerIngress
-func CoreV1ToExtensionsV1beta1LB(lbips []corev1.LoadBalancerIngress)
[]extensionsv1beta1.IngressLoadBalancerIngress {
- t := make([]extensionsv1beta1.IngressLoadBalancerIngress, 0, len(lbips))
- for _, lbip := range lbips {
- t = append(t, extensionsv1beta1.IngressLoadBalancerIngress{
- Hostname: lbip.Hostname,
- IP: lbip.IP,
- })
- }
- return t
-}
-
func CoreV1ToGatewayV1beta1Addr(lbips []corev1.LoadBalancerIngress)
[]gatewayv1beta1.GatewayAddress {
t := make([]gatewayv1beta1.GatewayAddress, 0, len(lbips))
diff --git a/pkg/providers/utils/ingress_status_test.go
b/pkg/providers/utils/ingress_status_test.go
index cb2b1bab..2df02de4 100644
--- a/pkg/providers/utils/ingress_status_test.go
+++ b/pkg/providers/utils/ingress_status_test.go
@@ -20,7 +20,6 @@ import (
"testing"
"github.com/stretchr/testify/assert"
- extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
networkingv1 "k8s.io/api/networking/v1"
networkingv1beta1 "k8s.io/api/networking/v1beta1"
)
@@ -184,74 +183,3 @@ func TestCompareNetworkingV1beta1LBEqual(t *testing.T) {
}
assert.Equal(t, true, CompareNetworkingV1beta1LBEqual(lb1, lb2))
}
-
-func TestCompareExtensionsV1beta1LBEqual(t *testing.T) {
- lb1 := []extensionsv1beta1.IngressLoadBalancerIngress{
- {
- IP: "0.0.0.0",
- },
- }
- lb2 := []extensionsv1beta1.IngressLoadBalancerIngress{
- {
- IP: "0.0.0.0",
- },
- }
- assert.Equal(t, true, CompareExtensionsV1beta1LBEqual(lb1, lb2))
-
- lb1 = []extensionsv1beta1.IngressLoadBalancerIngress{
- {
- IP: "0.0.0.0",
- },
- }
- lb2 = []extensionsv1beta1.IngressLoadBalancerIngress{
- {
- IP: "0.0.0.0",
- },
- {
- Hostname: "test.com",
- },
- }
- assert.Equal(t, false, CompareExtensionsV1beta1LBEqual(lb1, lb2))
-
- lb1 = []extensionsv1beta1.IngressLoadBalancerIngress{
- {
- IP: "127.0.0.1",
- },
- {
- IP: "1.1.1.1",
- },
- }
- lb2 = []extensionsv1beta1.IngressLoadBalancerIngress{
- {
- IP: "127.0.0.1",
- },
- {
- IP: "0.0.0.0",
- },
- }
- assert.Equal(t, false, CompareExtensionsV1beta1LBEqual(lb1, lb2))
-
- lb1 = []extensionsv1beta1.IngressLoadBalancerIngress{
- {
- Hostname: "test.com",
- },
- {
- IP: "127.0.0.1",
- },
- {
- IP: "0.0.0.0",
- },
- }
- lb2 = []extensionsv1beta1.IngressLoadBalancerIngress{
- {
- IP: "0.0.0.0",
- },
- {
- IP: "127.0.0.1",
- },
- {
- Hostname: "test.com",
- },
- }
- assert.Equal(t, true, CompareExtensionsV1beta1LBEqual(lb1, lb2))
-}
diff --git a/test/e2e/suite-annotations/authorization.go
b/test/e2e/suite-annotations/authorization.go
index 7d7300ec..f946c245 100644
--- a/test/e2e/suite-annotations/authorization.go
+++ b/test/e2e/suite-annotations/authorization.go
@@ -123,52 +123,6 @@ spec:
Status(http.StatusOK)
})
- ginkgo.It("enable keyAuth in ingress extensions/v1beta1",
func() {
- err := s.ApisixConsumerKeyAuthCreated("foo", "bar")
- assert.Nil(ginkgo.GinkgoT(), err, "creating keyAuth
ApisixConsumer")
-
- // Wait until the ApisixConsumer create event was
delivered.
- time.Sleep(6 * time.Second)
-
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/auth-type: "keyAuth"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err = s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- msg401 := s.NewAPISIXClient().GET("/ip").
- WithHeader("Host", "httpbin.org").
- Expect().
- Status(http.StatusUnauthorized).
- Body().
- Raw()
- assert.Contains(ginkgo.GinkgoT(), msg401, "Missing API
key found in request")
-
- _ = s.NewAPISIXClient().GET("/ip").
- WithHeader("Host", "httpbin.org").
- WithHeader("apikey", "bar").
- Expect().
- Status(http.StatusOK)
- })
-
ginkgo.It("enable basicAuth in ingress networking/v1", func() {
err := s.ApisixConsumerBasicAuthCreated("jack1",
"jack1-username", "jack1-password")
assert.Nil(ginkgo.GinkgoT(), err, "creating keyAuth
ApisixConsumer")
@@ -262,52 +216,6 @@ spec:
Expect().
Status(http.StatusOK)
})
-
- ginkgo.It("enable basicAuth in ingress networking/v1beta1",
func() {
- err := s.ApisixConsumerBasicAuthCreated("jack1",
"jack1-username", "jack1-password")
- assert.Nil(ginkgo.GinkgoT(), err, "creating keyAuth
ApisixConsumer")
-
- // Wait until the ApisixConsumer create event was
delivered.
- time.Sleep(6 * time.Second)
-
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/auth-type: "basicAuth"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err = s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- msg401 := s.NewAPISIXClient().GET("/ip").
- WithHeader("Host", "httpbin.org").
- Expect().
- Status(http.StatusUnauthorized).
- Body().
- Raw()
- assert.Contains(ginkgo.GinkgoT(), msg401, "Missing
authorization in request")
-
- _ = s.NewAPISIXClient().GET("/ip").
- WithHeader("Host", "httpbin.org").
- WithHeader("Authorization", "Basic
amFjazEtdXNlcm5hbWU6amFjazEtcGFzc3dvcmQ=").
- Expect().
- Status(http.StatusOK)
- })
}
ginkgo.Describe("suite-annotations: scaffold v2", func() {
diff --git a/test/e2e/suite-annotations/cors.go
b/test/e2e/suite-annotations/cors.go
index f2c8838d..8b408f7a 100644
--- a/test/e2e/suite-annotations/cors.go
+++ b/test/e2e/suite-annotations/cors.go
@@ -208,89 +208,4 @@ spec:
resp.Header("Access-Control-Allow-Methods").Empty()
resp.Header("Access-Control-Allow-Headers").Empty()
})
-
- ginkgo.It("enable in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/enable-cors: "true"
- k8s.apisix.apache.org/cors-allow-origin: https://foo.com,https://bar.com
- k8s.apisix.apache.org/cors-allow-headers: x-foo-1,x-foo-2
- k8s.apisix.apache.org/cors-allow-methods: GET,POST,PUT
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
- resp.Status(http.StatusOK)
- // As httpbin itself adds this header, we don't check it here.
- // resp.Header("Access-Control-Allow-Origin").Empty()
- resp.Header("Access-Control-Allow-Methods").Empty()
- resp.Header("Access-Control-Allow-Headers").Empty()
-
- resp = s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").WithHeader("Origin", "https://baz.com").Expect()
- resp.Status(http.StatusOK)
- // As httpbin itself adds this header, we don't check it here.
- // resp.Header("Access-Control-Allow-Origin").Empty()
- resp.Header("Access-Control-Allow-Methods").Empty()
- resp.Header("Access-Control-Allow-Headers").Empty()
-
- resp = s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").WithHeader("Origin", "https://foo.com").Expect()
- resp.Status(http.StatusOK)
-
resp.Header("Access-Control-Allow-Origin").Equal("https://foo.com")
-
resp.Header("Access-Control-Allow-Methods").Equal("GET,POST,PUT")
-
resp.Header("Access-Control-Allow-Headers").Equal("x-foo-1,x-foo-2")
- })
-
- ginkgo.It("disable in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/enable-cors: "false"
- k8s.apisix.apache.org/cors-allow-origin: https://foo.com,https://bar.com
- k8s.apisix.apache.org/cors-allow-headers: x-foo-1,x-foo-2
- k8s.apisix.apache.org/cors-allow-methods: GET,POST,PUT
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").WithHeader("Origin", "https://foo.com").Expect()
- resp.Status(http.StatusOK)
- // As httpbin itself adds this header, we don't check it here.
- // resp.Header("Access-Control-Allow-Origin").Empty()
- resp.Header("Access-Control-Allow-Methods").Empty()
- resp.Header("Access-Control-Allow-Headers").Empty()
- })
})
diff --git a/test/e2e/suite-annotations/csrf.go
b/test/e2e/suite-annotations/csrf.go
index ddc11c44..383fe8bb 100644
--- a/test/e2e/suite-annotations/csrf.go
+++ b/test/e2e/suite-annotations/csrf.go
@@ -138,58 +138,4 @@ spec:
Expect().
Status(http.StatusOK)
})
-
- ginkgo.It("enable csrf in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/enable-csrf: "true"
- k8s.apisix.apache.org/csrf-key: "foo-key"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /*
- pathType: Prefix
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- assert.Nil(ginkgo.GinkgoT(), s.CreateResourceFromString(ing),
"creating ingress")
-
- time.Sleep(5 * time.Second)
-
- msg401 := s.NewAPISIXClient().
- POST("/anything").
- WithHeader("Host", "httpbin.org").
- Expect().
- Status(http.StatusUnauthorized).
- Body().
- Raw()
- assert.Contains(ginkgo.GinkgoT(), msg401, "no csrf token in
headers")
-
- resp := s.NewAPISIXClient().
- GET("/anything").
- WithHeader("Host", "httpbin.org").
- Expect().
- Status(http.StatusOK)
- resp.Header("Set-Cookie").NotEmpty()
-
- cookie := resp.Cookie("apisix-csrf-token")
- token := cookie.Value().Raw()
-
- _ = s.NewAPISIXClient().
- POST("/anything").
- WithHeader("Host", "httpbin.org").
- WithHeader("apisix-csrf-token", token).
- WithCookie("apisix-csrf-token", token).
- Expect().
- Status(http.StatusOK)
- })
})
diff --git a/test/e2e/suite-annotations/forward_auth.go
b/test/e2e/suite-annotations/forward_auth.go
index a473e158..4d28f5dc 100644
--- a/test/e2e/suite-annotations/forward_auth.go
+++ b/test/e2e/suite-annotations/forward_auth.go
@@ -88,7 +88,7 @@ spec:
})
})
- ginkgo.It("enable in ingress networking/v1", func() {
+ ginkgo.It("enable in ingress networking/v1beta1", func() {
backendSvc, backendPort := s.DefaultHTTPBackend()
ing := fmt.Sprintf(`
apiVersion: networking.k8s.io/v1beta1
@@ -126,45 +126,4 @@ spec:
"Location": []string{"http://example.com/auth"},
})
})
-
- ginkgo.It("enable in ingress networking/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/auth-uri: %s
- k8s.apisix.apache.org/auth-request-headers: Authorization
- k8s.apisix.apache.org/auth-upstream-headers: X-User-ID
- k8s.apisix.apache.org/auth-client-headers: Location
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, "http://127.0.0.1:9080/auth", backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- ginkgo.GinkgoT().Logf("ingress: %s", ing)
- ginkgo.GinkgoT().Logf("create ingress: %v", err)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").WithHeader("Authorization", "123").Expect()
- resp.Status(http.StatusOK)
- resp = s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").WithHeader("Authorization", "321").Expect()
- resp.Status(http.StatusOK)
- resp = s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
- resp.Status(http.StatusForbidden)
- resp.Headers().ContainsMap(map[string]interface{}{
- "Location": []string{"http://example.com/auth"},
- })
- })
})
diff --git a/test/e2e/suite-annotations/http_method.go
b/test/e2e/suite-annotations/http_method.go
index 60304535..1655e189 100644
--- a/test/e2e/suite-annotations/http_method.go
+++ b/test/e2e/suite-annotations/http_method.go
@@ -99,41 +99,6 @@ spec:
respPut := s.NewAPISIXClient().PUT("/put").WithHeader("Host",
"httpbin.org").Expect()
respPut.Status(http.StatusOK)
})
-
- ginkgo.It("enable in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/http-allow-methods: POST,PUT
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /*
- pathType: Prefix
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- respGet := s.NewAPISIXClient().GET("/get").WithHeader("Host",
"httpbin.org").Expect()
- respGet.Status(http.StatusMethodNotAllowed)
-
- respPost :=
s.NewAPISIXClient().POST("/post").WithHeader("Host", "httpbin.org").Expect()
- respPost.Status(http.StatusOK)
-
- respPut := s.NewAPISIXClient().PUT("/put").WithHeader("Host",
"httpbin.org").Expect()
- respPut.Status(http.StatusOK)
- })
})
var _ = ginkgo.Describe("suite-annotations: blocklist-http-methods
annotations", func() {
@@ -210,39 +175,4 @@ spec:
respPut := s.NewAPISIXClient().PUT("/put").WithHeader("Host",
"httpbin.org").Expect()
respPut.Status(http.StatusOK)
})
-
- ginkgo.It("enable in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/http-block-methods: GET
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /*
- pathType: Prefix
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- respGet := s.NewAPISIXClient().GET("/get").WithHeader("Host",
"httpbin.org").Expect()
- respGet.Status(http.StatusMethodNotAllowed)
-
- respPost :=
s.NewAPISIXClient().POST("/post").WithHeader("Host", "httpbin.org").Expect()
- respPost.Status(http.StatusOK)
-
- respPut := s.NewAPISIXClient().PUT("/put").WithHeader("Host",
"httpbin.org").Expect()
- respPut.Status(http.StatusOK)
- })
})
diff --git a/test/e2e/suite-annotations/iprestriction.go
b/test/e2e/suite-annotations/iprestriction.go
index 84621d94..d1bb1843 100644
--- a/test/e2e/suite-annotations/iprestriction.go
+++ b/test/e2e/suite-annotations/iprestriction.go
@@ -87,35 +87,6 @@ spec:
resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
resp.Status(http.StatusForbidden)
})
-
- ginkgo.It("enable in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/allowlist-source-range: "10.0.5.0/16"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
- resp.Status(http.StatusForbidden)
- })
})
var _ = ginkgo.Describe("suite-annotations: blocklist-source-range
annotations", func() {
@@ -180,33 +151,4 @@ spec:
resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
resp.Status(http.StatusForbidden)
})
-
- ginkgo.It("enable in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/blocklist-source-range: "127.0.0.1"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
- resp.Status(http.StatusForbidden)
- })
})
diff --git a/test/e2e/suite-annotations/plugin_conifg.go
b/test/e2e/suite-annotations/plugin_conifg.go
index 3f8e740b..ea9d726a 100644
--- a/test/e2e/suite-annotations/plugin_conifg.go
+++ b/test/e2e/suite-annotations/plugin_conifg.go
@@ -134,32 +134,3 @@ spec:
_assert(s, ing)
})
})
-
-var _ = ginkgo.Describe("suite-annotations: annotations.extensions/v1beta1
with ApisixPluginConfig", func() {
- s := scaffold.NewDefaultScaffold()
- ginkgo.It("extensions/v1beta1", func() {
- _createAPC(s)
-
- backendSvc, backendPorts := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: ingress-ext-v1beta1
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/plugin-config-name: echo-and-cors-apc
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPorts[0])
- _assert(s, ing)
- })
-})
diff --git a/test/e2e/suite-annotations/redirect.go
b/test/e2e/suite-annotations/redirect.go
index 6767c947..b2f4c019 100644
--- a/test/e2e/suite-annotations/redirect.go
+++ b/test/e2e/suite-annotations/redirect.go
@@ -91,36 +91,6 @@ spec:
resp.Header("Location").Equal("https://httpbin.org:9443/sample")
})
- ginkgo.It("redirect http-to-https in ingress extensions/v1beta1",
func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/http-to-https: "true"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /sample
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/sample").WithHeader("Host",
"httpbin.org").Expect()
- resp.Status(http.StatusMovedPermanently)
- resp.Header("Location").Equal("https://httpbin.org:9443/sample")
- })
-
ginkgo.It("redirect http-redirect in ingress networking/v1", func() {
backendSvc, backendPort := s.DefaultHTTPBackend()
ing := fmt.Sprintf(`
@@ -185,37 +155,6 @@ spec:
resp.Header("Location").Equal("/anything/ip")
})
- ginkgo.It("redirect http-redirect in ingress extensions/v1beta1",
func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/http-redirect: "/anything$uri"
- k8s.apisix.apache.org/http-redirect-code: "308"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /*
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
- resp.Status(http.StatusPermanentRedirect)
- resp.Header("Location").Equal("/anything/ip")
- })
-
ginkgo.It("redirect http-redirect external link in ingress
networking/v1", func() {
backendSvc, backendPort := s.DefaultHTTPBackend()
ing := fmt.Sprintf(`
@@ -285,38 +224,4 @@ spec:
body := httpexpect.New(ginkgo.GinkgoT(),
url).GET("").Expect().Status(http.StatusOK).Body().Raw()
assert.Contains(ginkgo.GinkgoT(), body,
"https://httpbin.org/get")
})
-
- ginkgo.It("redirect http-redirect external link in ingress
extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/http-redirect: "https://httpbin.org/get"
- k8s.apisix.apache.org/http-redirect-code: "308"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /*
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
- resp.Status(http.StatusPermanentRedirect)
- url :=
resp.Header("Location").Equal("https://httpbin.org/get").Raw()
-
- body := httpexpect.New(ginkgo.GinkgoT(),
url).GET("").Expect().Status(http.StatusOK).Body().Raw()
- assert.Contains(ginkgo.GinkgoT(), body,
"https://httpbin.org/get")
- })
})
diff --git a/test/e2e/suite-annotations/response_rewrite.go
b/test/e2e/suite-annotations/response_rewrite.go
index 9ff1b91f..d8e309d1 100644
--- a/test/e2e/suite-annotations/response_rewrite.go
+++ b/test/e2e/suite-annotations/response_rewrite.go
@@ -232,103 +232,4 @@ spec:
resp.Status(http.StatusOK)
resp.Body().NotEqual("bar-body")
})
-
- ginkgo.It("enable in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/enable-response-rewrite: "true"
- k8s.apisix.apache.org/response-rewrite-status-code: "400"
- k8s.apisix.apache.org/response-rewrite-body: "bar-body"
- k8s.apisix.apache.org/response-rewrite-body-base64: "false"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
- resp.Status(http.StatusBadRequest)
- resp.Body().Equal("bar-body")
- })
-
- ginkgo.It("enable base64 body in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/enable-response-rewrite: "true"
- k8s.apisix.apache.org/response-rewrite-status-code: "400"
- k8s.apisix.apache.org/response-rewrite-body: "YmFyLWJvZHk="
- k8s.apisix.apache.org/response-rewrite-body-base64: "true"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
- resp.Status(http.StatusBadRequest)
- resp.Body().Equal("bar-body")
- })
-
- ginkgo.It("disable in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/enable-response-rewrite: "false"
- k8s.apisix.apache.org/response-rewrite-status-code: "400"
- k8s.apisix.apache.org/response-rewrite-body: "bar-body"
- k8s.apisix.apache.org/response-rewrite-body-base64: "false"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect()
- resp.Status(http.StatusOK)
- resp.Body().NotEqual("bar-body")
- })
})
diff --git a/test/e2e/suite-annotations/rewrite.go
b/test/e2e/suite-annotations/rewrite.go
index 68c7969a..d3795600 100644
--- a/test/e2e/suite-annotations/rewrite.go
+++ b/test/e2e/suite-annotations/rewrite.go
@@ -87,35 +87,6 @@ spec:
_ = s.NewAPISIXClient().GET("/sample").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusOK)
_ = s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusNotFound)
})
-
- ginkgo.It("enable in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/rewrite-target: "/ip"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /sample
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- _ = s.NewAPISIXClient().GET("/sample").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusOK)
- _ = s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusNotFound)
- })
})
var _ = ginkgo.Describe("suite-annotations: rewrite regex annotations", func()
{
@@ -182,34 +153,4 @@ spec:
_ = s.NewAPISIXClient().GET("/sample/ip").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusOK)
_ = s.NewAPISIXClient().GET("/sample/get").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusOK)
})
-
- ginkgo.It("enable in ingress extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/rewrite-target-regex: "/sample/(.*)"
- k8s.apisix.apache.org/rewrite-target-regex-template: "/$1"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /sample
- pathType: Prefix
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- assert.Nil(ginkgo.GinkgoT(), err, "creating ingress")
- time.Sleep(5 * time.Second)
-
- _ = s.NewAPISIXClient().GET("/sample/ip").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusOK)
- _ = s.NewAPISIXClient().GET("/sample/get").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusOK)
- })
})
diff --git a/test/e2e/suite-annotations/svc_namespace.go
b/test/e2e/suite-annotations/svc_namespace.go
index 910c20c1..6831a9dd 100644
--- a/test/e2e/suite-annotations/svc_namespace.go
+++ b/test/e2e/suite-annotations/svc_namespace.go
@@ -69,42 +69,6 @@ spec:
Raw()
})
- ginkgo.It("extensions/v1beta1", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/svc-namespace: "%s"
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /*
- pathType: Prefix
- backend:
- serviceName: %s
- servicePort: %d
-`, s.Namespace(), backendSvc, backendPort[0])
- err := s.CreateResourceFromString(ing)
- if err != nil {
- assert.Fail(ginkgo.GinkgoT(), err.Error(), "creating
ingress")
- }
- time.Sleep(5 * time.Second)
-
- _ = s.NewAPISIXClient().
- POST("/anything").
- WithHeader("Host", "httpbin.org").
- Expect().
- Status(http.StatusOK).
- Body().
- Raw()
- })
-
ginkgo.It("networking/v1beta1", func() {
backendSvc, backendPort := s.DefaultHTTPBackend()
ing := fmt.Sprintf(`
@@ -159,48 +123,6 @@ var _ = ginkgo.Describe("suite-annotations: svc-namespace
annotations cross-name
_ = k8s.DeleteNamespaceE(ginkgo.GinkgoT(),
&k8s.KubectlOptions{ConfigPath: scaffold.GetKubeconfig()}, namespace)
}
- ginkgo.It("extensions/v1beta1", func() {
-
- newNs := fmt.Sprintf("second-svc-namespace-%d",
time.Now().Nanosecond())
- oldNs := s.Namespace()
- createNamespace(newNs, oldNs)
- defer deleteNamespace(newNs)
-
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/svc-namespace: %s
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /*
- pathType: Prefix
- backend:
- serviceName: %s
- servicePort: %d
-`, oldNs, backendSvc, backendPort[0])
- err := s.CreateResourceFromStringWithNamespace(ing, newNs)
- if err != nil {
- assert.Fail(ginkgo.GinkgoT(), err.Error(), "creating
ingress")
- }
- time.Sleep(5 * time.Second)
-
- _ = s.NewAPISIXClient().
- POST("/anything").
- WithHeader("Host", "httpbin.org").
- Expect().
- Status(http.StatusOK).
- Body().
- Raw()
- })
-
ginkgo.It("networking/v1beta1", func() {
newNs := fmt.Sprintf("second-svc-namespace-%d",
time.Now().Nanosecond())
diff --git a/test/e2e/suite-annotations/upstreamprotocol.go
b/test/e2e/suite-annotations/upstreamprotocol.go
index a8d7bd4a..05124ff5 100644
--- a/test/e2e/suite-annotations/upstreamprotocol.go
+++ b/test/e2e/suite-annotations/upstreamprotocol.go
@@ -126,36 +126,3 @@ spec:
assert.Equal(ginkgo.GinkgoT(), ups[0].Scheme, "grpcs")
})
})
-
-var _ = ginkgo.Describe("suite-annotations: annotations.extensions/v1beta1
upstream scheme", func() {
- s := scaffold.NewDefaultScaffold()
- ginkgo.It("sanity", func() {
- ing := `
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/upstream-scheme: grpcs
- name: ingress-ext-v1beta1
-spec:
- rules:
- - host: e2e.apisix.local
- http:
- paths:
- - path: /helloworld.Greeter/SayHello
- pathType: ImplementationSpecific
- backend:
- serviceName: test-backend-service-e2e-test
- servicePort: 50053
-`
- assert.NoError(ginkgo.GinkgoT(),
s.CreateResourceFromString(ing))
- err := s.EnsureNumApisixUpstreamsCreated(1)
- assert.Nil(ginkgo.GinkgoT(), err, "Checking number of
upstreams")
- time.Sleep(2 * time.Second)
- ups, err := s.ListApisixUpstreams()
- assert.Nil(ginkgo.GinkgoT(), err)
- assert.Len(ginkgo.GinkgoT(), ups, 1)
- assert.Equal(ginkgo.GinkgoT(), ups[0].Scheme, "grpcs")
- })
-})
diff --git a/test/e2e/suite-annotations/websocket.go
b/test/e2e/suite-annotations/websocket.go
index cf75c2aa..71d1ab25 100644
--- a/test/e2e/suite-annotations/websocket.go
+++ b/test/e2e/suite-annotations/websocket.go
@@ -196,87 +196,3 @@ spec:
assert.Nil(ginkgo.GinkgoT(), conn.Close(), "closing ws
connection")
})
})
-
-var _ = ginkgo.Describe("suite-annotations: ingress.networking/v1beta1 with
websocket", func() {
- s := scaffold.NewDefaultScaffold()
- ginkgo.It("sanity", func() {
- resources := `
-apiVersion: v1
-kind: Pod
-metadata:
- name: websocket-server
- labels:
- app: websocket-server
-spec:
- containers:
- - name: websocket-server
- image: localhost:5000/echo-server:dev
- ports:
- - containerPort: 8080
----
-apiVersion: v1
-kind: Service
-metadata:
- name: websocket-server-service
-spec:
- selector:
- app: websocket-server
- ports:
- - name: ws
- port: 48733
- protocol: TCP
- targetPort: 8080
-`
- err := s.CreateResourceFromString(resources)
- assert.Nil(ginkgo.GinkgoT(), err)
- time.Sleep(5 * time.Second)
-
- ing := `
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: ingress-ext-v1beta1
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/enable-websocket: 'true'
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /echo
- pathType: Exact
- backend:
- serviceName: websocket-server-service
- servicePort: 48733
-`
- assert.Nil(ginkgo.GinkgoT(), s.CreateResourceFromString(ing))
- err = s.EnsureNumApisixUpstreamsCreated(1)
- assert.Nil(ginkgo.GinkgoT(), err, "Checking number of
upstreams")
- err = s.EnsureNumApisixRoutesCreated(1)
- assert.Nil(ginkgo.GinkgoT(), err, "Checking number of routes")
-
- dialer := websocket.Dialer{}
- u := url.URL{
- Scheme: "ws",
- Host: s.APISIXGatewayServiceEndpoint(),
- Path: "/echo",
- }
- header := http.Header{
- "Host": []string{"httpbin.org"},
- }
- conn, resp, err := dialer.Dial(u.String(), header)
- assert.Nil(ginkgo.GinkgoT(), err, "websocket handshake failure")
- assert.Equal(ginkgo.GinkgoT(), resp.StatusCode,
http.StatusSwitchingProtocols)
-
- assert.Nil(ginkgo.GinkgoT(),
conn.WriteMessage(websocket.TextMessage, []byte("hello, I'm gorilla")),
"writing message")
- msgType, buf, err := conn.ReadMessage()
- assert.Nil(ginkgo.GinkgoT(), err, "reading message")
- assert.Equal(ginkgo.GinkgoT(), string(buf), "Request served by
websocket-server")
- msgType, buf, err = conn.ReadMessage()
- assert.Nil(ginkgo.GinkgoT(), err, "reading message")
- assert.Equal(ginkgo.GinkgoT(), msgType, websocket.TextMessage)
- assert.Equal(ginkgo.GinkgoT(), string(buf), "hello, I'm
gorilla")
- assert.Nil(ginkgo.GinkgoT(), conn.Close(), "closing ws
connection")
- })
-})
diff --git a/test/e2e/suite-chore/consistency.go
b/test/e2e/suite-chore/consistency.go
index 35678daf..8a2edf6d 100644
--- a/test/e2e/suite-chore/consistency.go
+++ b/test/e2e/suite-chore/consistency.go
@@ -96,24 +96,6 @@ spec:
backend:
serviceName: %s
servicePort: %d
-`
- _ingressExtensionsV1beta1Config = `
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- name: ingress-extensions-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /*
- pathType: Prefix
- backend:
- serviceName: %s
- servicePort: %d
`
)
@@ -234,42 +216,6 @@ var _ = ginkgo.Describe("suite-chore: Consistency between
APISIX and the Ingress
s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusOK)
})
-
- ginkgo.It("Ingress extensionsV1beta1 and APISIX of route and upstream",
func() {
- httpService := fmt.Sprintf(_httpServiceConfig, "port1", 9080,
9080)
- assert.Nil(ginkgo.GinkgoT(),
s.CreateResourceFromString(httpService))
-
- ing := fmt.Sprintf(_ingressExtensionsV1beta1Config,
"httpbin-service-e2e-test", 9080)
- assert.Nil(ginkgo.GinkgoT(), s.CreateResourceFromString(ing))
-
- assert.Nil(ginkgo.GinkgoT(), s.EnsureNumApisixRoutesCreated(1))
- assert.Nil(ginkgo.GinkgoT(),
s.EnsureNumApisixUpstreamsCreated(1))
-
- upstreams, err := s.ListApisixUpstreams()
- assert.Nil(ginkgo.GinkgoT(), err)
- assert.Len(ginkgo.GinkgoT(), upstreams, 1)
- assert.Contains(ginkgo.GinkgoT(), upstreams[0].Name,
"httpbin-service-e2e-test_9080")
- // The correct httpbin pod port is 80
- s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusBadGateway)
-
- httpService = fmt.Sprintf(_httpServiceConfig, "port2", 80, 80)
- assert.Nil(ginkgo.GinkgoT(),
s.CreateResourceFromString(httpService))
-
- ing = fmt.Sprintf(_ingressExtensionsV1beta1Config,
"httpbin-service-e2e-test", 80)
- assert.Nil(ginkgo.GinkgoT(), s.CreateResourceFromString(ing))
-
- time.Sleep(6 * time.Second)
-
- routes, err := s.ListApisixRoutes()
- assert.Nil(ginkgo.GinkgoT(), err)
- assert.Len(ginkgo.GinkgoT(), routes, 1)
- upstreams, err = s.ListApisixUpstreams()
- assert.Nil(ginkgo.GinkgoT(), err)
- assert.Len(ginkgo.GinkgoT(), upstreams, 1)
- assert.Contains(ginkgo.GinkgoT(), upstreams[0].Name,
"httpbin-service-e2e-test_80")
-
- s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusOK)
- })
})
var _ = ginkgo.Describe("suite-chore: apisix route labels sync", func() {
diff --git a/test/e2e/suite-ingress/suite-ingress-resource/ingress.go
b/test/e2e/suite-ingress/suite-ingress-resource/ingress.go
index 923117f4..5681d692 100644
--- a/test/e2e/suite-ingress/suite-ingress-resource/ingress.go
+++ b/test/e2e/suite-ingress/suite-ingress-resource/ingress.go
@@ -156,57 +156,6 @@
w174RSQoNMc+odHxn95mxtYdYVE5PKkzgrfxqymLa5Y0LMPCpKOq4XB0paZPtrOt
k1XbogS6EYyEdbkTDdXdUENvDrU7hzJXSVxJYADiqr44DGfWm6hK0bq9ZPc=
-----END RSA PRIVATE KEY-----
`
- ginkgo.It("should support ingress extensions/v1beta1 with tls", func() {
- // create secrets
- err := s.NewSecret(serverCertSecret, serverCert, serverKey)
- assert.Nil(ginkgo.GinkgoT(), err, "create server cert secret
error")
-
- // create ingress
- host := "mtls.httpbin.local"
- // create route
- backendSvc, backendSvcPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: httpbin-ingress-https
- annotations:
- kubernetes.io/ingress.class: apisix
-spec:
- tls:
- - hosts:
- - %s
- secretName: %s
- rules:
- - host: %s
- http:
- paths:
- - path: /*
- backend:
- serviceName: %s
- servicePort: %d
-`, host, serverCertSecret, host, backendSvc, backendSvcPort[0])
- assert.Nil(ginkgo.GinkgoT(), s.CreateResourceFromString(ing))
- assert.Nil(ginkgo.GinkgoT(), s.EnsureNumApisixRoutesCreated(1))
-
- apisixRoutes, err := s.ListApisixRoutes()
- assert.Nil(ginkgo.GinkgoT(), err, "list routes error")
- assert.Len(ginkgo.GinkgoT(), apisixRoutes, 1, "route number not
expect")
-
- apisixSsls, err := s.ListApisixSsl()
- assert.Nil(ginkgo.GinkgoT(), err, "list SSLs error")
- assert.Len(ginkgo.GinkgoT(), apisixSsls, 1, "SSL number should
be 1")
- assert.Equal(ginkgo.GinkgoT(),
id.GenID(s.Namespace()+"_httpbin-ingress-https-tls"), apisixSsls[0].ID, "SSL
name")
- assert.Equal(ginkgo.GinkgoT(), apisixSsls[0].Snis,
[]string{host}, "SSL configuration")
-
- caCertPool := x509.NewCertPool()
- ok := caCertPool.AppendCertsFromPEM([]byte(rootCA))
- assert.True(ginkgo.GinkgoT(), ok, "Append cert to CA pool")
-
- s.NewAPISIXHttpsClientWithCertificates(host, true, caCertPool,
[]tls.Certificate{}).
- GET("/ip").WithHeader("Host",
host).Expect().Status(http.StatusOK)
- })
-
ginkgo.It("should support ingress v1beta1 with tls", func() {
// create secrets
err := s.NewSecret(serverCertSecret, serverCert, serverKey)
@@ -434,7 +383,7 @@ spec:
_ = s.NewAPISIXClient().GET("/status/200").WithHeader("Host",
"a.httpbin.org").Expect().Status(http.StatusNotFound)
})
- ginkgo.It("path regex match", func() {
+ ginkgo.It("path regex match networking.k8s.io/v1", func() {
backendSvc, backendPort := s.DefaultHTTPBackend()
ing := fmt.Sprintf(`
apiVersion: networking.k8s.io/v1
@@ -564,7 +513,7 @@ spec:
_ = s.NewAPISIXClient().GET("/status/200").WithHeader("Host",
"a.httpbin.org").Expect().Status(http.StatusNotFound)
})
- ginkgo.It("path regex match", func() {
+ ginkgo.It("path regex match networking.k8s.io/v1beta1", func() {
backendSvc, backendPort := s.DefaultHTTPBackend()
ing := fmt.Sprintf(`
apiVersion: networking.k8s.io/v1beta1
@@ -596,101 +545,6 @@ spec:
})
})
-var _ = ginkgo.Describe("suite-ingress-resource: support
ingress.extensions/v1beta1", func() {
- s := scaffold.NewDefaultScaffold()
-
- ginkgo.It("path exact match", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- name: ingress-ext-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /ip
- pathType: Exact
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- assert.Nil(ginkgo.GinkgoT(), s.CreateResourceFromString(ing),
"creating ingress")
- assert.Nil(ginkgo.GinkgoT(), s.EnsureNumApisixRoutesCreated(1))
-
- _ = s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusOK)
- // Exact path, doesn't match /ip/aha
- _ = s.NewAPISIXClient().GET("/ip/aha").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusNotFound)
- // Mismatched host
- _ = s.NewAPISIXClient().GET("/ip/aha").WithHeader("Host",
"a.httpbin.org").Expect().Status(http.StatusNotFound)
- })
-
- ginkgo.It("path prefix match", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- name: ingress-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /status
- pathType: Prefix
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- assert.Nil(ginkgo.GinkgoT(), s.CreateResourceFromString(ing),
"creating ingress")
- assert.Nil(ginkgo.GinkgoT(), s.EnsureNumApisixRoutesCreated(1))
-
- _ = s.NewAPISIXClient().GET("/status/500").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusInternalServerError)
- _ = s.NewAPISIXClient().GET("/status/504").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusGatewayTimeout)
- _ = s.NewAPISIXClient().GET("/statusaaa").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusNotFound).Body().Contains("404 Route
Not Found")
- // Mismatched host
- _ = s.NewAPISIXClient().GET("/status/200").WithHeader("Host",
"a.httpbin.org").Expect().Status(http.StatusNotFound)
- })
-
- ginkgo.It("path regex match", func() {
- backendSvc, backendPort := s.DefaultHTTPBackend()
- ing := fmt.Sprintf(`
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- annotations:
- kubernetes.io/ingress.class: apisix
- k8s.apisix.apache.org/use-regex: 'true'
- name: ingress-v1beta1
-spec:
- rules:
- - host: httpbin.org
- http:
- paths:
- - path: /anything/.*/ok
- pathType: ImplementationSpecific
- backend:
- serviceName: %s
- servicePort: %d
-`, backendSvc, backendPort[0])
- assert.Nil(ginkgo.GinkgoT(), s.CreateResourceFromString(ing),
"creating ingress")
- assert.Nil(ginkgo.GinkgoT(), s.EnsureNumApisixRoutesCreated(1))
-
- _ =
s.NewAPISIXClient().GET("/anything/aaa/ok").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusOK)
- _ =
s.NewAPISIXClient().GET("/anything/aaa/notok").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusNotFound).Body().Contains("404 Route
Not Found")
- _ = s.NewAPISIXClient().GET("/statusaaa").WithHeader("Host",
"httpbin.org").Expect().Status(http.StatusNotFound).Body().Contains("404 Route
Not Found")
- // Mismatched host
- _ =
s.NewAPISIXClient().GET("/anything/aaa/ok").WithHeader("Host",
"a.httpbin.org").Expect().Status(http.StatusNotFound)
- })
-})
-
var _ = ginkgo.Describe("suite-ingress-resource: support ingress.networking/v1
with headless service backend", func() {
s := scaffold.NewDefaultScaffold()
@@ -793,7 +647,7 @@ spec:
_ = s.NewAPISIXClient().GET("/status/200").WithHeader("Host",
"a.httpbin.org").Expect().Status(http.StatusNotFound)
})
- ginkgo.It("path regex match", func() {
+ ginkgo.It("path regex match networking.k8s.io/v1", func() {
ing := fmt.Sprintf(`
apiVersion: networking.k8s.io/v1
kind: Ingress