Refactoring of kubernetes informers and local caches
This commit is contained in:
parent
8975800740
commit
e9a00ff916
23 changed files with 1704 additions and 817 deletions
|
|
@ -40,8 +40,6 @@ import (
|
|||
"k8s.io/client-go/tools/record"
|
||||
"k8s.io/kubernetes/pkg/kubelet/util/sliceutils"
|
||||
|
||||
"k8s.io/ingress-nginx/internal/ingress/annotations/class"
|
||||
"k8s.io/ingress-nginx/internal/ingress/store"
|
||||
"k8s.io/ingress-nginx/internal/k8s"
|
||||
"k8s.io/ingress-nginx/internal/task"
|
||||
)
|
||||
|
|
@ -56,6 +54,11 @@ type Sync interface {
|
|||
Shutdown()
|
||||
}
|
||||
|
||||
type ingressLister interface {
|
||||
// ListIngresses returns the list of Ingresses
|
||||
ListIngresses() []*extensions.Ingress
|
||||
}
|
||||
|
||||
// Config ...
|
||||
type Config struct {
|
||||
Client clientset.Interface
|
||||
|
|
@ -68,7 +71,7 @@ type Config struct {
|
|||
|
||||
UseNodeInternalIP bool
|
||||
|
||||
IngressLister store.IngressLister
|
||||
IngressLister ingressLister
|
||||
|
||||
DefaultIngressClass string
|
||||
IngressClass string
|
||||
|
|
@ -297,20 +300,14 @@ func sliceToStatus(endpoints []string) []apiv1.LoadBalancerIngress {
|
|||
|
||||
// updateStatus changes the status information of Ingress rules
|
||||
func (s *statusSync) updateStatus(newIngressPoint []apiv1.LoadBalancerIngress) {
|
||||
ings := s.IngressLister.List()
|
||||
ings := s.IngressLister.ListIngresses()
|
||||
|
||||
p := pool.NewLimited(10)
|
||||
defer p.Close()
|
||||
|
||||
batch := p.Batch()
|
||||
|
||||
for _, cur := range ings {
|
||||
ing := cur.(*extensions.Ingress)
|
||||
|
||||
if !class.IsValid(ing) {
|
||||
continue
|
||||
}
|
||||
|
||||
for _, ing := range ings {
|
||||
batch.Queue(runUpdate(ing, newIngressPoint, s.Client))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,10 +25,8 @@ import (
|
|||
extensions "k8s.io/api/extensions/v1beta1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
testclient "k8s.io/client-go/kubernetes/fake"
|
||||
"k8s.io/client-go/tools/cache"
|
||||
|
||||
"k8s.io/ingress-nginx/internal/ingress/annotations/class"
|
||||
"k8s.io/ingress-nginx/internal/ingress/store"
|
||||
"k8s.io/ingress-nginx/internal/k8s"
|
||||
"k8s.io/ingress-nginx/internal/task"
|
||||
)
|
||||
|
|
@ -212,14 +210,18 @@ func buildExtensionsIngresses() []extensions.Ingress {
|
|||
}
|
||||
}
|
||||
|
||||
func buildIngressListener() store.IngressLister {
|
||||
s := cache.NewStore(cache.MetaNamespaceKeyFunc)
|
||||
s.Add(&extensions.Ingress{
|
||||
type testIngressLister struct {
|
||||
}
|
||||
|
||||
func (til *testIngressLister) ListIngresses() []*extensions.Ingress {
|
||||
var ingresses []*extensions.Ingress
|
||||
ingresses = append(ingresses, &extensions.Ingress{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo_ingress_non_01",
|
||||
Namespace: apiv1.NamespaceDefault,
|
||||
}})
|
||||
s.Add(&extensions.Ingress{
|
||||
|
||||
ingresses = append(ingresses, &extensions.Ingress{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo_ingress_1",
|
||||
Namespace: apiv1.NamespaceDefault,
|
||||
|
|
@ -231,7 +233,11 @@ func buildIngressListener() store.IngressLister {
|
|||
},
|
||||
})
|
||||
|
||||
return store.IngressLister{Store: s}
|
||||
return ingresses
|
||||
}
|
||||
|
||||
func buildIngressLister() ingressLister {
|
||||
return &testIngressLister{}
|
||||
}
|
||||
|
||||
func buildStatusSync() statusSync {
|
||||
|
|
@ -247,7 +253,7 @@ func buildStatusSync() statusSync {
|
|||
Config: Config{
|
||||
Client: buildSimpleClientSet(),
|
||||
PublishService: apiv1.NamespaceDefault + "/" + "foo",
|
||||
IngressLister: buildIngressListener(),
|
||||
IngressLister: buildIngressLister(),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
|
@ -259,7 +265,7 @@ func TestStatusActions(t *testing.T) {
|
|||
c := Config{
|
||||
Client: buildSimpleClientSet(),
|
||||
PublishService: "",
|
||||
IngressLister: buildIngressListener(),
|
||||
IngressLister: buildIngressLister(),
|
||||
DefaultIngressClass: "nginx",
|
||||
IngressClass: "",
|
||||
UpdateStatusOnShutdown: true,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue