diff --git a/pkg/kubenest/controller/virtualcluster.node.controller/node_controller.go b/pkg/kubenest/controller/virtualcluster.node.controller/node_controller.go index 66ab8d65f..44c052b89 100644 --- a/pkg/kubenest/controller/virtualcluster.node.controller/node_controller.go +++ b/pkg/kubenest/controller/virtualcluster.node.controller/node_controller.go @@ -163,6 +163,8 @@ func (r *NodeController) UpdateVirtualClusterStatus(ctx context.Context, virtual return fmt.Errorf("update virtualcluster %s status namespace %s failed: %s", virtualCluster.Name, virtualCluster.Namespace, retryErr) } + r.EventRecorder.Event(&virtualCluster, v1.EventTypeWarning, "VCStatusPending", fmt.Sprintf("Name: %s, Namespace: %s, reason: %s", virtualCluster.Name, virtualCluster.Namespace, reason)) + return nil } diff --git a/pkg/kubenest/manifest/controlplane/apiserver/mainfests_deployment.go b/pkg/kubenest/manifest/controlplane/apiserver/mainfests_deployment.go index e7c0a2a45..e0d054251 100644 --- a/pkg/kubenest/manifest/controlplane/apiserver/mainfests_deployment.go +++ b/pkg/kubenest/manifest/controlplane/apiserver/mainfests_deployment.go @@ -548,6 +548,17 @@ spec: audience: system:konnectivity-server --- apiVersion: v1 +kind: Service +metadata: + name: konnectivity-server + namespace: kube-system +spec: + ports: + - port: {{ .AgentPort }} + name: proxy-server + targetPort: {{ .AgentPort }} +--- +apiVersion: v1 kind: Endpoints metadata: name: konnectivity-server @@ -560,16 +571,5 @@ subsets: ports: - port: {{ .AgentPort }} name: proxy-server ---- -apiVersion: v1 -kind: Service -metadata: - name: konnectivity-server - namespace: kube-system -spec: - ports: - - port: {{ .AgentPort }} - name: proxy-server - targetPort: {{ .AgentPort }} ` ) diff --git a/pkg/kubenest/tasks/anp.go b/pkg/kubenest/tasks/anp.go index 43a6c772d..d26ed071c 100644 --- a/pkg/kubenest/tasks/anp.go +++ b/pkg/kubenest/tasks/anp.go @@ -259,7 +259,7 @@ func installAnpAgent(data InitData) error { // create the object return apiclient.TryRunCommand(func() error { return util.ReplaceObject(vcClient, u) - }, 3) + }, apiclient.DefaultRetryCount) } return util.ForEachObjectInYAML(context.TODO(), vcClient, []byte(anpAgentManifestBytes), "", actionFunc) } @@ -411,14 +411,17 @@ func runUploadProxyAgentCert(r workflow.RunData) error { if err != nil { return fmt.Errorf("failed to get virtual cluster client, err: %w", err) } - err = createOrUpdateSecret(vcClient, &v1.Secret{ - ObjectMeta: metav1.ObjectMeta{ - Name: util.GetCertName(data.GetName()), - Namespace: "kube-system", - Labels: VirtualClusterControllerLabel, - }, - Data: certsData, - }) + + err = apiclient.TryRunCommand(func() error { + return createOrUpdateSecret(vcClient, &v1.Secret{ + ObjectMeta: metav1.ObjectMeta{ + Name: util.GetCertName(data.GetName()), + Namespace: "kube-system", + Labels: VirtualClusterControllerLabel, + }, + Data: certsData, + }) + }, apiclient.DefaultRetryCount) if err != nil { return fmt.Errorf("failed to upload agent cert to tenant, err: %w", err) } diff --git a/pkg/kubenest/util/api-client/check.go b/pkg/kubenest/util/api-client/check.go index 1efd26d76..54d9ebe4f 100644 --- a/pkg/kubenest/util/api-client/check.go +++ b/pkg/kubenest/util/api-client/check.go @@ -13,6 +13,8 @@ import ( "github.com/kosmos.io/kosmos/pkg/kubenest/constants" ) +const DefaultRetryCount = 3 + type Checker interface { WaitForAPI() error WaitForSomePods(label, namespace string, podNum int32) error