Merge pull request #511 from Garrybest/agent-deploy
fix bugs of agent deployment
This commit is contained in:
commit
9495cf398f
|
@ -7,6 +7,7 @@ import (
|
|||
"os"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
kubeclientset "k8s.io/client-go/kubernetes"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
|
@ -18,7 +19,6 @@ import (
|
|||
"github.com/karmada-io/karmada/pkg/controllers/execution"
|
||||
"github.com/karmada-io/karmada/pkg/controllers/mcs"
|
||||
"github.com/karmada-io/karmada/pkg/controllers/status"
|
||||
karmadaclientset "github.com/karmada-io/karmada/pkg/generated/clientset/versioned"
|
||||
"github.com/karmada-io/karmada/pkg/karmadactl"
|
||||
"github.com/karmada-io/karmada/pkg/util"
|
||||
"github.com/karmada-io/karmada/pkg/util/gclient"
|
||||
|
@ -152,15 +152,22 @@ func setupControllers(mgr controllerruntime.Manager, opts *options.Options, stop
|
|||
}
|
||||
|
||||
func registerWithControlPlaneAPIServer(controlPlaneRestConfig *restclient.Config, memberClusterName string) error {
|
||||
karmadaClient := karmadaclientset.NewForConfigOrDie(controlPlaneRestConfig)
|
||||
client := gclient.NewForConfigOrDie(controlPlaneRestConfig)
|
||||
|
||||
namespaceObj := &corev1.Namespace{}
|
||||
namespaceObj.Name = util.NamespaceClusterLease
|
||||
|
||||
if err := util.CreateNamespaceIfNotExist(client, namespaceObj); err != nil {
|
||||
klog.Errorf("Failed to create namespace(%s) object, error: %v", namespaceObj.Name, err)
|
||||
return err
|
||||
}
|
||||
|
||||
clusterObj := &clusterv1alpha1.Cluster{}
|
||||
clusterObj.Name = memberClusterName
|
||||
clusterObj.Spec.SyncMode = clusterv1alpha1.Pull
|
||||
|
||||
_, err := karmadactl.CreateClusterObject(karmadaClient, clusterObj, false)
|
||||
if err != nil {
|
||||
klog.Errorf("failed to create cluster object. cluster name: %s, error: %v", memberClusterName, err)
|
||||
if err := util.CreateClusterIfNotExist(client, clusterObj); err != nil {
|
||||
klog.Errorf("Failed to create cluster(%s) object, error: %v", clusterObj.Name, err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,9 @@ MEMBER_CLUSTER_NAME=$4
|
|||
source "${REPO_ROOT}"/hack/util.sh
|
||||
|
||||
# install agent to member cluster
|
||||
if [ -n "${KUBECONFIG+x}" ];then
|
||||
CURR_KUBECONFIG=$KUBECONFIG # backup current kubeconfig
|
||||
fi
|
||||
export KUBECONFIG="${MEMBER_CLUSTER_KUBECONFIG}" # switch to member cluster
|
||||
kubectl config use-context "${MEMBER_CLUSTER_NAME}"
|
||||
|
||||
|
@ -92,5 +94,9 @@ kubectl apply -f "${TEMP_PATH}"/karmada-agent.yaml
|
|||
# Wait for karmada-etcd to come up before launching the rest of the components.
|
||||
util::wait_pod_ready "${AGENT_POD_LABEL}" "${KARMADA_SYSTEM_NAMESPACE}"
|
||||
|
||||
# recover the kubeconfig before installing agent
|
||||
# recover the kubeconfig before installing agent if necessary
|
||||
if [ -n "${CURR_KUBECONFIG+x}" ];then
|
||||
export KUBECONFIG="${CURR_KUBECONFIG}"
|
||||
else
|
||||
unset KUBECONFIG
|
||||
fi
|
||||
|
|
|
@ -3,6 +3,7 @@ package util
|
|||
import (
|
||||
"context"
|
||||
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/api/meta"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
|
@ -28,3 +29,17 @@ func GetCluster(hostClient client.Client, clusterName string) (*v1alpha1.Cluster
|
|||
}
|
||||
return cluster, nil
|
||||
}
|
||||
|
||||
// CreateClusterIfNotExist try to create the cluster if it does not exist.
|
||||
func CreateClusterIfNotExist(client client.Client, clusterObj *v1alpha1.Cluster) error {
|
||||
cluster := &v1alpha1.Cluster{}
|
||||
if err := client.Get(context.TODO(), types.NamespacedName{Name: clusterObj.Name}, cluster); err != nil {
|
||||
if !apierrors.IsNotFound(err) {
|
||||
return err
|
||||
}
|
||||
if err := client.Create(context.TODO(), clusterObj); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -6,7 +6,9 @@ import (
|
|||
corev1 "k8s.io/api/core/v1"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
kubeclient "k8s.io/client-go/kubernetes"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
)
|
||||
|
||||
// IsNamespaceExist tells if specific already exists.
|
||||
|
@ -45,3 +47,17 @@ func DeleteNamespace(client kubeclient.Interface, namespace string) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateNamespaceIfNotExist try to create the namespace if it does not exist.
|
||||
func CreateNamespaceIfNotExist(client client.Client, namespaceObj *corev1.Namespace) error {
|
||||
namespace := &corev1.Namespace{}
|
||||
if err := client.Get(context.TODO(), types.NamespacedName{Name: namespaceObj.Name}, namespace); err != nil {
|
||||
if !apierrors.IsNotFound(err) {
|
||||
return err
|
||||
}
|
||||
if err := client.Create(context.TODO(), namespaceObj); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue