diff --git a/cmd/ccm/main.go b/cmd/ccm/main.go index fe12e17..10c5725 100644 --- a/cmd/ccm/main.go +++ b/cmd/ccm/main.go @@ -23,6 +23,7 @@ import ( "os" "os/signal" "path/filepath" + "strings" "syscall" "go.uber.org/zap/zapcore" @@ -113,6 +114,11 @@ func main() { opts.BindFlags(flag.CommandLine) flag.Parse() + // If clusterName is not prefixed with "tenant-" then prefix it + if !strings.HasPrefix(clusterName, "tenant-") { + clusterName = "tenant-" + clusterName + } + if enableGatewayAPI { utilruntime.Must(gwapiv1.Install(scheme)) } diff --git a/hack/ci/e2e/config/ccm/tenant-1/kustomization.yaml b/hack/ci/e2e/config/ccm/tenant-1/kustomization.yaml index a78f404..59d14da 100644 --- a/hack/ci/e2e/config/ccm/tenant-1/kustomization.yaml +++ b/hack/ci/e2e/config/ccm/tenant-1/kustomization.yaml @@ -1,10 +1,10 @@ resources: - ../base -namespace: cluster-tenant1 +namespace: tenant-primary patches: - patch: |- - op: add path: "/spec/template/spec/containers/0/args/-" - value: "--cluster-name=cluster-tenant1" + value: "--cluster-name=tenant-primary" target: kind: Deployment diff --git a/hack/ci/e2e/config/ccm/tenant-2/kustomization.yaml b/hack/ci/e2e/config/ccm/tenant-2/kustomization.yaml index 247ece8..b5ae6e3 100644 --- a/hack/ci/e2e/config/ccm/tenant-2/kustomization.yaml +++ b/hack/ci/e2e/config/ccm/tenant-2/kustomization.yaml @@ -1,10 +1,10 @@ resources: - ../base -namespace: cluster-tenant2 +namespace: tenant-secondary patches: - patch: |- - op: add path: "/spec/template/spec/containers/0/args/-" - value: "--cluster-name=cluster-tenant2" + value: "--cluster-name=tenant-secondary" target: kind: Deployment diff --git a/hack/ci/e2e/deploy-kubelb.sh b/hack/ci/e2e/deploy-kubelb.sh index 59f0b69..f8f5e53 100755 --- a/hack/ci/e2e/deploy-kubelb.sh +++ b/hack/ci/e2e/deploy-kubelb.sh @@ -56,11 +56,15 @@ kind load docker-image --name=kubelb kubermatic.io/ccm:e2e echodate "Install kubelb" make install make e2e-deploy-kubelb -for i in 1 2; do - echodate "Install ccm for cluster-tenant${i}" - kubectl create ns "cluster-tenant${i}" - kubectl label ns "cluster-tenant${i}" kubelb.k8c.io/managed-by=kubelb - kubectl config set-context $(kubectl config current-context) --namespace="cluster-tenant${i}" + +tenants=("tenant-primary" "tenant-secondary") +i=1 +for tenant in "${tenants[@]}"; do + echodate "Install ccm for $tenant" + kubectl create ns "$tenant" + kubectl label ns "$tenant" kubelb.k8c.io/managed-by=kubelb + kubectl config set-context $(kubectl config current-context) --namespace="$tenant" kubectl create secret generic kubelb-cluster --from-file=kubelb="${TMPDIR}"/kubelb.kubeconfig --from-file=tenant="${TMPDIR}/tenant${i}.kubeconfig" make "e2e-deploy-ccm-tenant-${i}" + i=$((i + 1)) done diff --git a/hack/ci/e2e/tests/basic_test.go b/hack/ci/e2e/tests/basic_test.go index 40f42e8..59d44fb 100644 --- a/hack/ci/e2e/tests/basic_test.go +++ b/hack/ci/e2e/tests/basic_test.go @@ -68,14 +68,14 @@ func TestSimpleService(t *testing.T) { expectHTTPGet(testServiceURL, "nginx/1.24.0") lb := v1alpha1.LoadBalancer{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant1", Name: string(svc.UID)}, &lb)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-primary", Name: string(svc.UID)}, &lb)).To(Succeed()) Expect(len(lb.Spec.Endpoints)).To(Equal(1)) Expect(len(lb.Spec.Endpoints[0].Ports)).To(Equal(1)) Expect(lb.Spec.Endpoints[0].AddressesReference).ToNot(BeNil()) // Retrieve the endpoint addresses and make sure they are correct addresses := v1alpha1.Addresses{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant1", Name: string(*&lb.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-primary", Name: string(*&lb.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) Expect(len(addresses.Spec.Addresses)).To(Equal(1)) } @@ -95,14 +95,14 @@ func TestMultiNodeService(t *testing.T) { expectHTTPGet(testServiceURL, "nginx/1.24.0") lb := v1alpha1.LoadBalancer{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(svc.UID)}, &lb)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(svc.UID)}, &lb)).To(Succeed()) Expect(len(lb.Spec.Endpoints)).To(Equal(1)) Expect(len(lb.Spec.Endpoints[0].Ports)).To(Equal(1)) Expect(lb.Spec.Endpoints[0].AddressesReference).ToNot(BeNil()) // Retrieve the endpoint addresses and make sure they are correct addresses := v1alpha1.Addresses{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(*&lb.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(*&lb.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) Expect(len(addresses.Spec.Addresses)).To(Equal(4)) } @@ -123,14 +123,14 @@ func TestMultiPortService(t *testing.T) { expectHTTPGet(fmt.Sprintf("%v:9901", testServiceURL), "envoy") lb := v1alpha1.LoadBalancer{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant1", Name: string(svc.UID)}, &lb)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-primary", Name: string(svc.UID)}, &lb)).To(Succeed()) Expect(len(lb.Spec.Endpoints)).To(Equal(1)) Expect(len(lb.Spec.Endpoints[0].Ports)).To(Equal(2)) Expect(lb.Spec.Endpoints[0].AddressesReference).ToNot(BeNil()) // Retrieve the endpoint addresses and make sure they are correct addresses := v1alpha1.Addresses{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(*&lb.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(*&lb.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) Expect(len(addresses.Spec.Addresses)).To(Equal(4)) } @@ -151,14 +151,14 @@ func TestMultiPortMultiNodeService(t *testing.T) { expectHTTPGet(fmt.Sprintf("%v:9901", testServiceURL), "envoy") lb := v1alpha1.LoadBalancer{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(svc.UID)}, &lb)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(svc.UID)}, &lb)).To(Succeed()) Expect(len(lb.Spec.Endpoints)).To(Equal(1)) Expect(len(lb.Spec.Endpoints[0].Ports)).To(Equal(2)) Expect(lb.Spec.Endpoints[0].AddressesReference).ToNot(BeNil()) // Retrieve the endpoint addresses and make sure they are correct addresses := v1alpha1.Addresses{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(*&lb.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(*&lb.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) Expect(len(addresses.Spec.Addresses)).To(Equal(4)) } @@ -190,25 +190,25 @@ func TestDuplicateService(t *testing.T) { expectHTTPGet(fmt.Sprintf("%v:8080", testServiceURL2), "envoy") lb1 := v1alpha1.LoadBalancer{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant1", Name: string(svc1.UID)}, &lb1)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-primary", Name: string(svc1.UID)}, &lb1)).To(Succeed()) Expect(len(lb1.Spec.Endpoints)).To(Equal(1)) Expect(len(lb1.Spec.Endpoints[0].Ports)).To(Equal(2)) Expect(lb1.Spec.Endpoints[0].AddressesReference).ToNot(BeNil()) // Retrieve the endpoint addresses and make sure they are correct addresses := v1alpha1.Addresses{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant1", Name: string(*&lb1.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-primary", Name: string(*&lb1.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) Expect(len(addresses.Spec.Addresses)).To(Equal(1)) lb2 := v1alpha1.LoadBalancer{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(svc2.UID)}, &lb2)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(svc2.UID)}, &lb2)).To(Succeed()) Expect(len(lb2.Spec.Endpoints)).To(Equal(1)) Expect(len(lb2.Spec.Endpoints[0].Ports)).To(Equal(2)) Expect(lb2.Spec.Endpoints[0].AddressesReference).ToNot(BeNil()) // Retrieve the endpoint addresses and make sure they are correct addresses = v1alpha1.Addresses{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(*&lb2.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(*&lb2.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) Expect(len(addresses.Spec.Addresses)).To(Equal(4)) } @@ -252,24 +252,24 @@ func TestMultipleServices(t *testing.T) { wg.Wait() lb1 := v1alpha1.LoadBalancer{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(svc1.UID)}, &lb1)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(svc1.UID)}, &lb1)).To(Succeed()) Expect(len(lb1.Spec.Endpoints)).To(Equal(1)) Expect(len(lb1.Spec.Endpoints[0].Ports)).To(Equal(2)) Expect(lb1.Spec.Endpoints[0].AddressesReference).ToNot(BeNil()) // Retrieve the endpoint addresses and make sure they are correct addresses := v1alpha1.Addresses{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(*&lb1.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(*&lb1.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) Expect(len(addresses.Spec.Addresses)).To(Equal(4)) lb2 := v1alpha1.LoadBalancer{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(svc2.UID)}, &lb2)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(svc2.UID)}, &lb2)).To(Succeed()) Expect(len(lb2.Spec.Endpoints)).To(Equal(1)) Expect(len(lb2.Spec.Endpoints[0].Ports)).To(Equal(2)) Expect(lb2.Spec.Endpoints[0].AddressesReference).ToNot(BeNil()) // Retrieve the endpoint addresses and make sure they are correct addresses = v1alpha1.Addresses{} - Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "cluster-tenant2", Name: string(*&lb2.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) + Expect(kubelbK8sClient.Get(ctx, types.NamespacedName{Namespace: "tenant-secondary", Name: string(*&lb2.Spec.Endpoints[0].AddressesReference.Name)}, &addresses)).To(Succeed()) Expect(len(addresses.Spec.Addresses)).To(Equal(4)) }