diff --git a/mk/e2e.new.mk b/mk/e2e.new.mk index 41c79e653294..bf45119b521c 100644 --- a/mk/e2e.new.mk +++ b/mk/e2e.new.mk @@ -55,7 +55,7 @@ test/e2e/debug: build/kumactl images docker/build/universal test/e2e/kind/start K8SCLUSTERS="$(K8SCLUSTERS)" \ KUMACTLBIN=${BUILD_ARTIFACTS_DIR}/kumactl/kumactl \ GINKGO_EDITOR_INTEGRATION=true \ - ginkgo --failFast ./test/e2e/... + ginkgo --failFast $(GOFLAGS) $(LD_FLAGS) ./test/e2e/... $(MAKE) test/e2e/kind/stop .PHONY: test/e2e diff --git a/pkg/dns/vips_allocator.go b/pkg/dns/vips_allocator.go index 2870ccf28b62..dd2386a6c83c 100644 --- a/pkg/dns/vips_allocator.go +++ b/pkg/dns/vips_allocator.go @@ -96,6 +96,8 @@ func (d *VIPsAllocator) createOrUpdateVIPConfigs(meshes ...string) (errs error) return err } + updateResolver := false + forEachMesh := func(mesh string, meshed vips.List) error { serviceSet, err := BuildServiceSet(d.rm, mesh) if err != nil { @@ -106,12 +108,12 @@ func (d *VIPsAllocator) createOrUpdateVIPConfigs(meshes ...string) (errs error) if !updated { return updError } + updateResolver = updateResolver || updated + global.Append(meshed) if err := d.persistence.Set(mesh, meshed); err != nil { return multierr.Append(updError, err) } - - d.resolver.SetVIPs(meshed) return updError } @@ -125,6 +127,10 @@ func (d *VIPsAllocator) createOrUpdateVIPConfigs(meshes ...string) (errs error) } } + if updateResolver { + d.resolver.SetVIPs(global) + } + return errs } diff --git a/pkg/dns/vips_allocator_test.go b/pkg/dns/vips_allocator_test.go index 7671b8396541..53022e2fd624 100644 --- a/pkg/dns/vips_allocator_test.go +++ b/pkg/dns/vips_allocator_test.go @@ -42,11 +42,13 @@ var _ = Describe("VIP Allocator", func() { var rm manager.ResourceManager var cm config_manager.ConfigManager var allocator *dns.VIPsAllocator + var r resolver.DNSResolver BeforeEach(func() { s := memory.NewStore() rm = manager.NewResourceManager(s) cm = config_manager.NewConfigManager(s) + r = resolver.NewDNSResolver("mesh") err := rm.Create(context.Background(), &mesh.MeshResource{}, store.CreateByKey("mesh-1", model.NoMesh)) Expect(err).ToNot(HaveOccurred()) @@ -63,7 +65,7 @@ var _ = Describe("VIP Allocator", func() { err = rm.Create(context.Background(), &mesh.DataplaneResource{Spec: *dp("web")}, store.CreateByKey("dp-3", "mesh-2")) Expect(err).ToNot(HaveOccurred()) - allocator, err = dns.NewVIPsAllocator(rm, cm, "240.0.0.0/24", resolver.NewDNSResolver("mesh")) + allocator, err = dns.NewVIPsAllocator(rm, cm, "240.0.0.0/24", r) Expect(err).ToNot(HaveOccurred()) }) @@ -82,6 +84,12 @@ var _ = Describe("VIP Allocator", func() { vipList, err = persistence.GetByMesh("mesh-2") Expect(err).ToNot(HaveOccurred()) + for _, service := range []string{"backend", "frontend", "web"} { + ip, err := r.ForwardLookup(service) + Expect(err).ToNot(HaveOccurred()) + Expect(ip).To(HavePrefix("240.0.0")) + } + Expect(vipList).To(HaveLen(1)) })