mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-06 17:46:57 +02:00
feat(source/istio): speed up processing with indexers
Signed-off-by: ivan katliarchuk <ivan.katliarchuk@gmail.com>
This commit is contained in:
parent
8c7af680c0
commit
fd55f6cc33
@ -191,7 +191,7 @@ func (sc *gatewaySource) Endpoints(ctx context.Context) ([]*endpoint.Endpoint, e
|
|||||||
endpoints = append(endpoints, gwEndpoints...)
|
endpoints = append(endpoints, gwEndpoints...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: sort on endpoint creation
|
// TODO: sort on endpoint creation (performance)
|
||||||
for _, ep := range endpoints {
|
for _, ep := range endpoints {
|
||||||
sort.Sort(ep.Targets)
|
sort.Sort(ep.Targets)
|
||||||
}
|
}
|
||||||
@ -241,6 +241,7 @@ func (sc *gatewaySource) targetsFromIngress(ctx context.Context, ingressStr stri
|
|||||||
|
|
||||||
targets := make(endpoint.Targets, 0)
|
targets := make(endpoint.Targets, 0)
|
||||||
|
|
||||||
|
// TODO: should be informer as currently this is make an API call for each gateway (performance)
|
||||||
ingress, err := sc.kubeClient.NetworkingV1().Ingresses(namespace).Get(ctx, name, metav1.GetOptions{})
|
ingress, err := sc.kubeClient.NetworkingV1().Ingresses(namespace).Get(ctx, name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err)
|
log.Error(err)
|
||||||
|
@ -1477,7 +1477,7 @@ func testGatewayEndpoints(t *testing.T) {
|
|||||||
t.Run(ti.title, func(t *testing.T) {
|
t.Run(ti.title, func(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
fakeKubernetesClient := fake.NewSimpleClientset()
|
fakeKubernetesClient := fake.NewClientset()
|
||||||
|
|
||||||
for _, lb := range ti.lbServices {
|
for _, lb := range ti.lbServices {
|
||||||
service := lb.Service()
|
service := lb.Service()
|
||||||
@ -1524,7 +1524,7 @@ func testGatewayEndpoints(t *testing.T) {
|
|||||||
|
|
||||||
// gateway specific helper functions
|
// gateway specific helper functions
|
||||||
func newTestGatewaySource(loadBalancerList []fakeIngressGatewayService, ingressList []fakeIngress) (*gatewaySource, error) {
|
func newTestGatewaySource(loadBalancerList []fakeIngressGatewayService, ingressList []fakeIngress) (*gatewaySource, error) {
|
||||||
fakeKubernetesClient := fake.NewSimpleClientset()
|
fakeKubernetesClient := fake.NewClientset()
|
||||||
fakeIstioClient := istiofake.NewSimpleClientset()
|
fakeIstioClient := istiofake.NewSimpleClientset()
|
||||||
|
|
||||||
for _, lb := range loadBalancerList {
|
for _, lb := range loadBalancerList {
|
||||||
|
@ -109,10 +109,10 @@ func NewIstioVirtualServiceSource(
|
|||||||
istioInformerFactory.Start(ctx.Done())
|
istioInformerFactory.Start(ctx.Done())
|
||||||
|
|
||||||
// wait for the local cache to be populated.
|
// wait for the local cache to be populated.
|
||||||
if err := informers.WaitForCacheSync(context.Background(), informerFactory); err != nil {
|
if err := informers.WaitForCacheSync(ctx, informerFactory); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if err := informers.WaitForCacheSync(context.Background(), istioInformerFactory); err != nil {
|
if err := informers.WaitForCacheSync(ctx, istioInformerFactory); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,7 +183,7 @@ func (sc *virtualServiceSource) Endpoints(ctx context.Context) ([]*endpoint.Endp
|
|||||||
endpoints = append(endpoints, gwEndpoints...)
|
endpoints = append(endpoints, gwEndpoints...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: sort on endpoint creation
|
// TODO: sort on endpoint creation (performance)
|
||||||
for _, ep := range endpoints {
|
for _, ep := range endpoints {
|
||||||
sort.Sort(ep.Targets)
|
sort.Sort(ep.Targets)
|
||||||
}
|
}
|
||||||
@ -419,6 +419,7 @@ func (sc *virtualServiceSource) targetsFromIngress(ctx context.Context, ingressS
|
|||||||
namespace = gateway.Namespace
|
namespace = gateway.Namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: should be informer as currently this is making an API call for each gateway (performance)
|
||||||
ingress, err := sc.kubeClient.NetworkingV1().Ingresses(namespace).Get(ctx, name, metav1.GetOptions{})
|
ingress, err := sc.kubeClient.NetworkingV1().Ingresses(namespace).Get(ctx, name, metav1.GetOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err)
|
log.Error(err)
|
||||||
|
@ -49,7 +49,7 @@ type VirtualServiceSuite struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (suite *VirtualServiceSuite) SetupTest() {
|
func (suite *VirtualServiceSuite) SetupTest() {
|
||||||
fakeKubernetesClient := fake.NewSimpleClientset()
|
fakeKubernetesClient := fake.NewClientset()
|
||||||
fakeIstioClient := istiofake.NewSimpleClientset()
|
fakeIstioClient := istiofake.NewSimpleClientset()
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ func TestNewIstioVirtualServiceSource(t *testing.T) {
|
|||||||
|
|
||||||
_, err := NewIstioVirtualServiceSource(
|
_, err := NewIstioVirtualServiceSource(
|
||||||
context.TODO(),
|
context.TODO(),
|
||||||
fake.NewSimpleClientset(),
|
fake.NewClientset(),
|
||||||
istiofake.NewSimpleClientset(),
|
istiofake.NewSimpleClientset(),
|
||||||
"",
|
"",
|
||||||
ti.annotationFilter,
|
ti.annotationFilter,
|
||||||
|
Loading…
Reference in New Issue
Block a user