diff --git a/pkg/konnector/models/helper.go b/pkg/konnector/models/helper.go index d00a6c17..404ad1f7 100644 --- a/pkg/konnector/models/helper.go +++ b/pkg/konnector/models/helper.go @@ -18,4 +18,5 @@ package models const ( AnnotationProviderClusterID = "provider.kube-bind.appscode.com/cluster-id" + KonnectorNamespace = "ace" ) diff --git a/pkg/kubectl/base/kubeconfig.go b/pkg/kubectl/base/kubeconfig.go index bf079725..422c1220 100644 --- a/pkg/kubectl/base/kubeconfig.go +++ b/pkg/kubectl/base/kubeconfig.go @@ -20,6 +20,8 @@ import ( "context" "fmt" + "go.bytebuilders.dev/kube-bind/pkg/konnector/models" + corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -48,12 +50,12 @@ func ParseRemoteKubeconfig(kubeconfig []byte) (host string, ns string, err error func FindRemoteKubeconfig(ctx context.Context, kubeClient *kubernetes.Clientset, remoteNamespace string, remoteHost string) (string, error) { logger := klog.FromContext(ctx) - secrets, err := kubeClient.CoreV1().Secrets("kube-bind").List(ctx, v1.ListOptions{}) + secrets, err := kubeClient.CoreV1().Secrets(models.KonnectorNamespace).List(ctx, v1.ListOptions{}) if err != nil { return "", err } for _, s := range secrets.Items { - logger := logger.WithValues("namespace", "kube-bind", "name", s.Name) + logger := logger.WithValues("namespace", models.KonnectorNamespace, "name", s.Name) bs, found := s.Data["kubeconfig"] if !found { logger.V(6).Info("secret does not contain kubeconfig") @@ -92,7 +94,7 @@ func EnsureKubeconfigSecret(ctx context.Context, kubeconfig, name string, client if name == "" { secret := &corev1.Secret{ ObjectMeta: v1.ObjectMeta{ - Namespace: "kube-bind", + Namespace: models.KonnectorNamespace, GenerateName: "kubeconfig-", }, Data: map[string][]byte{ @@ -100,7 +102,7 @@ func EnsureKubeconfigSecret(ctx context.Context, kubeconfig, name string, client }, } - secret, err := client.CoreV1().Secrets("kube-bind").Create(ctx, secret, v1.CreateOptions{}) + secret, err := client.CoreV1().Secrets(models.KonnectorNamespace).Create(ctx, secret, v1.CreateOptions{}) if err != nil { return nil, false, err } @@ -111,13 +113,13 @@ func EnsureKubeconfigSecret(ctx context.Context, kubeconfig, name string, client var secret *corev1.Secret if err := retry.RetryOnConflict(retry.DefaultRetry, func() error { var err error - secret, err = client.CoreV1().Secrets("kube-bind").Get(ctx, name, v1.GetOptions{}) + secret, err = client.CoreV1().Secrets(models.KonnectorNamespace).Get(ctx, name, v1.GetOptions{}) if err != nil { return err } bs, found := secret.Data["kubeconfig"] if !found { - return fmt.Errorf("secret %s/%s does not contain a kubeconfig", "kube-bind", name) + return fmt.Errorf("secret %s/%s does not contain a kubeconfig", models.KonnectorNamespace, name) } existingHost, existingNamespace, err := ParseRemoteKubeconfig(bs) if err != nil { @@ -127,7 +129,7 @@ func EnsureKubeconfigSecret(ctx context.Context, kubeconfig, name string, client return errors.NewAlreadyExists(corev1.Resource("secret"), secret.Name) } secret.Data["kubeconfig"] = []byte(kubeconfig) - if _, err := client.CoreV1().Secrets("kube-bind").Update(ctx, secret, v1.UpdateOptions{}); err != nil { + if _, err := client.CoreV1().Secrets(models.KonnectorNamespace).Update(ctx, secret, v1.UpdateOptions{}); err != nil { return err } return nil diff --git a/pkg/kubectl/bind-apiservice/plugin/konnector.go b/pkg/kubectl/bind-apiservice/plugin/konnector.go index 2231d0bb..1db1ba7a 100644 --- a/pkg/kubectl/bind-apiservice/plugin/konnector.go +++ b/pkg/kubectl/bind-apiservice/plugin/konnector.go @@ -24,6 +24,7 @@ import ( bindclient "go.bytebuilders.dev/kube-bind/client/clientset/versioned" "go.bytebuilders.dev/kube-bind/hack/deploy/konnector" + "go.bytebuilders.dev/kube-bind/pkg/konnector/models" "go.bytebuilders.dev/kube-bind/pkg/version" "github.com/blang/semver/v4" @@ -131,7 +132,7 @@ func (b *BindAPIServiceOptions) deployKonnector(ctx context.Context, config *res } func currentKonnectorVersion(ctx context.Context, kubeClient kubeclient.Interface) (string, bool, error) { - deployment, err := kubeClient.AppsV1().Deployments("kube-bind").Get(ctx, "konnector", metav1.GetOptions{}) + deployment, err := kubeClient.AppsV1().Deployments(models.KonnectorNamespace).Get(ctx, "konnector", metav1.GetOptions{}) if err != nil && !errors.IsNotFound(err) { return "", false, err } else if errors.IsNotFound(err) { diff --git a/pkg/kubectl/bind-apiservice/plugin/secret.go b/pkg/kubectl/bind-apiservice/plugin/secret.go index bb737aaa..0856aa46 100644 --- a/pkg/kubectl/bind-apiservice/plugin/secret.go +++ b/pkg/kubectl/bind-apiservice/plugin/secret.go @@ -20,6 +20,7 @@ import ( "context" "fmt" + "go.bytebuilders.dev/kube-bind/pkg/konnector/models" "go.bytebuilders.dev/kube-bind/pkg/kubectl/base" corev1 "k8s.io/api/core/v1" @@ -38,7 +39,7 @@ func (b *BindAPIServiceOptions) createKubeconfigSecret(ctx context.Context, conf // create kube-bind namespace if _, err := kubeClient.CoreV1().Namespaces().Create(ctx, &corev1.Namespace{ ObjectMeta: metav1.ObjectMeta{ - Name: "kube-bind", + Name: models.KonnectorNamespace, }, }, metav1.CreateOptions{}); err != nil && !apierrors.IsAlreadyExists(err) { return "", err @@ -76,9 +77,9 @@ func (b *BindAPIServiceOptions) ensureKubeconfigSecretWithLogging(ctx context.Co if b.remoteKubeconfigFile != "" { if created { - fmt.Fprintf(b.Options.ErrOut, "🔒 Created secret %s/%s for host %s, namespace %s\n", "kube-bind", secret.Name, remoteHost, remoteNamespace) + fmt.Fprintf(b.Options.ErrOut, "🔒 Created secret %s/%s for host %s, namespace %s\n", models.KonnectorNamespace, secret.Name, remoteHost, remoteNamespace) } else { - fmt.Fprintf(b.Options.ErrOut, "🔒 Updated secret %s/%s for host %s, namespace %s\n", "kube-bind", secret.Name, remoteHost, remoteNamespace) + fmt.Fprintf(b.Options.ErrOut, "🔒 Updated secret %s/%s for host %s, namespace %s\n", models.KonnectorNamespace, secret.Name, remoteHost, remoteNamespace) } } diff --git a/pkg/kubectl/bind-apiservice/plugin/servicebindings.go b/pkg/kubectl/bind-apiservice/plugin/servicebindings.go index e493cd83..dce6e2e9 100644 --- a/pkg/kubectl/bind-apiservice/plugin/servicebindings.go +++ b/pkg/kubectl/bind-apiservice/plugin/servicebindings.go @@ -24,6 +24,7 @@ import ( "go.bytebuilders.dev/kube-bind/apis/kubebind/v1alpha1" "go.bytebuilders.dev/kube-bind/apis/kubebind/v1alpha1/helpers" bindclient "go.bytebuilders.dev/kube-bind/client/clientset/versioned" + "go.bytebuilders.dev/kube-bind/pkg/konnector/models" apiextensionsclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" apierrors "k8s.io/apimachinery/pkg/api/errors" @@ -34,10 +35,6 @@ import ( "kmodules.xyz/client-go/conditions" ) -const ( - kubeconfigSecretNamespace = "kube-bind" -) - func (b *BindAPIServiceOptions) createAPIServiceBindings(ctx context.Context, config *rest.Config, request *v1alpha1.APIServiceExportRequest, secretName string) ([]*v1alpha1.APIServiceBinding, error) { bindClient, err := bindclient.NewForConfig(config) if err != nil { @@ -61,7 +58,7 @@ func (b *BindAPIServiceOptions) createAPIServiceBindings(ctx context.Context, co hasSecret := false for _, secRef := range existing.Spec.KubeconfigSecretRefs { - if secRef.Namespace == kubeconfigSecretNamespace && secRef.Name == secretName { + if secRef.Namespace == models.KonnectorNamespace && secRef.Name == secretName { hasSecret = true fmt.Fprintf(b.Options.IOStreams.ErrOut, "✅ Existing APIServiceBinding \"%s\" already has the secret \"%s\".\n", existing.Name, secretName) // nolint: errcheck break @@ -78,7 +75,7 @@ func (b *BindAPIServiceOptions) createAPIServiceBindings(ctx context.Context, co Name: secretName, Key: "kubeconfig", }, - Namespace: kubeconfigSecretNamespace, + Namespace: models.KonnectorNamespace, }) existing, err = bindClient.KubeBindV1alpha1().APIServiceBindings().Update(ctx, existing, metav1.UpdateOptions{}) @@ -110,7 +107,7 @@ func (b *BindAPIServiceOptions) createAPIServiceBindings(ctx context.Context, co created, err := bindClient.KubeBindV1alpha1().APIServiceBindings().Create(ctx, &v1alpha1.APIServiceBinding{ ObjectMeta: metav1.ObjectMeta{ Name: resource.Resource + "." + resource.Group, - Namespace: "kube-bind", + Namespace: models.KonnectorNamespace, }, Spec: v1alpha1.APIServiceBindingSpec{ KubeconfigSecretRefs: []v1alpha1.ClusterSecretKeyRef{ @@ -119,7 +116,7 @@ func (b *BindAPIServiceOptions) createAPIServiceBindings(ctx context.Context, co Name: secretName, Key: "kubeconfig", }, - Namespace: "kube-bind", + Namespace: models.KonnectorNamespace, }, }, }, diff --git a/pkg/kubectl/bind/plugin/bind.go b/pkg/kubectl/bind/plugin/bind.go index 030bd9e7..248a3ff0 100644 --- a/pkg/kubectl/bind/plugin/bind.go +++ b/pkg/kubectl/bind/plugin/bind.go @@ -32,6 +32,7 @@ import ( "time" "go.bytebuilders.dev/kube-bind/apis/kubebind/v1alpha1" + "go.bytebuilders.dev/kube-bind/pkg/konnector/models" "go.bytebuilders.dev/kube-bind/pkg/kubectl/base" "go.bytebuilders.dev/kube-bind/pkg/kubectl/bind/authenticator" @@ -158,19 +159,19 @@ func (b *BindOptions) Run(ctx context.Context, urlCh chan<- string) error { return fmt.Errorf("unsupported binding provider version: %q", provider.APIVersion) } - ns, err := kubeClient.CoreV1().Namespaces().Get(ctx, "kube-bind", metav1.GetOptions{}) + ns, err := kubeClient.CoreV1().Namespaces().Get(ctx, models.KonnectorNamespace, metav1.GetOptions{}) if err != nil && !apierrors.IsNotFound(err) { return err } else if apierrors.IsNotFound(err) { ns = &corev1.Namespace{ ObjectMeta: metav1.ObjectMeta{ - Name: "kube-bind", + Name: models.KonnectorNamespace, }, } if ns, err = kubeClient.CoreV1().Namespaces().Create(ctx, ns, metav1.CreateOptions{}); err != nil { return err } else { - fmt.Fprintf(b.Options.IOStreams.ErrOut, "📦 Created kube-bind namespace.\n") // nolint: errcheck + fmt.Fprintf(b.Options.IOStreams.ErrOut, "📦 Created ace namespace.\n") // nolint: errcheck } } @@ -241,9 +242,9 @@ func (b *BindOptions) Run(ctx context.Context, urlCh chan<- string) error { return err } if created { - fmt.Fprintf(b.Options.ErrOut, "🔒 Created secret %s/%s for host %s, namespace %s\n", "kube-bind", secret.Name, remoteHost, remoteNamespace) + fmt.Fprintf(b.Options.ErrOut, "🔒 Created secret %s/%s for host %s, namespace %s\n", models.KonnectorNamespace, secret.Name, remoteHost, remoteNamespace) } else { - fmt.Fprintf(b.Options.ErrOut, "🔒 Updated secret %s/%s for host %s, namespace %s\n", "kube-bind", secret.Name, remoteHost, remoteNamespace) + fmt.Fprintf(b.Options.ErrOut, "🔒 Updated secret %s/%s for host %s, namespace %s\n", models.KonnectorNamespace, secret.Name, remoteHost, remoteNamespace) } // print the request in dry-run mode