Merge pull request #2409 from lonelyCZ/pr-init-print

Optimize `karmadactl init` to output example
This commit is contained in:
karmada-bot 2022-08-25 16:36:53 +08:00 committed by GitHub
commit 54d0a2d07a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 52 additions and 23 deletions

View File

@ -26,6 +26,7 @@ import (
"github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/bootstraptoken/clusterinfo"
"github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/options"
"github.com/karmada-io/karmada/pkg/karmadactl/cmdinit/utils"
tokenutil "github.com/karmada-io/karmada/pkg/karmadactl/util/bootstraptoken"
)
const (
@ -107,6 +108,38 @@ func InitKarmadaResources(dir, caBase64, systemNamespace string) error {
return nil
}
// InitKarmadaBootstrapToken create initial bootstrap token
func InitKarmadaBootstrapToken(dir string) (string, error) {
restConfig, err := utils.RestConfig("", filepath.Join(dir, options.KarmadaKubeConfigName))
if err != nil {
return "", err
}
clientSet, err := utils.NewClientSet(restConfig)
if err != nil {
return "", err
}
// Create initial bootstrap token
klog.Info("Initialize karmada bootstrap token")
bootstrapToken, err := tokenutil.GenerateRandomBootstrapToken(&metav1.Duration{Duration: tokenutil.DefaultTokenDuration}, "", tokenutil.DefaultGroups, tokenutil.DefaultUsages)
if err != nil {
return "", err
}
if err := tokenutil.CreateNewToken(clientSet, bootstrapToken); err != nil {
return "", err
}
tokenStr := bootstrapToken.Token.ID + "." + bootstrapToken.Token.Secret
registerCommand, err := tokenutil.GenerateRegisterCommand(filepath.Join(dir, options.KarmadaKubeConfigName), "", tokenStr)
if err != nil {
return "", fmt.Errorf("failed to get register command, err: %w", err)
}
return registerCommand, nil
}
func createExtralResources(clientSet *kubernetes.Clientset, dir string) error {
// grant proxy permission to "system:admin".
if err := grantProxyPermissionToAdmin(clientSet); err != nil {

View File

@ -471,12 +471,18 @@ func (i *CommandInitOption) RunInit(parentCommand string) error {
return err
}
// Create bootstarp token in karmada
registerCommand, err := karmada.InitKarmadaBootstrapToken(i.KarmadaDataPath)
if err != nil {
return err
}
// install karmada Component
if err := i.initKarmadaComponent(); err != nil {
return err
}
utils.GenExamples(i.KarmadaDataPath, parentCommand)
utils.GenExamples(i.KarmadaDataPath, parentCommand, registerCommand)
return nil
}

View File

@ -75,6 +75,7 @@ spec:
- --karmada-kubeconfig=/etc/kubeconfig/karmada-kubeconfig
- --karmada-context=%s
- --cluster-name={member_cluster_name}
- --cluster-api-endpoint={member_cluster_api_endpoint}
- --cluster-status-update-frequency=10s
- --bind-address=0.0.0.0
- --secure-port=10357
@ -150,7 +151,7 @@ spec:
)
// GenExamples Generate sample files
func GenExamples(path, parentCommand string) {
func GenExamples(path, parentCommand, printRegisterCommand string) {
karmadaAgentStr := fmt.Sprintf(karmadaAgent, options.ClusterName)
if err := BytesToFile(path, "karmada-agent.yaml", []byte(karmadaAgentStr)); err != nil {
klog.Warning(err)
@ -178,32 +179,21 @@ Register Kubernetes cluster to Karmada control plane.
Register cluster with 'Push' mode
Step 1: Use `+parentCommand+` join to register the cluster to Karmada control panel. --cluster-kubeconfig is members kubeconfig.
(In karmada)~# MEMBER_CLUSTER_NAME=%scat ~/.kube/config | grep current-context | sed 's/: /\n/g'| sed '1d'%s
(In karmada)~# `+parentCommand+` --kubeconfig %s/karmada-apiserver.config join ${MEMBER_CLUSTER_NAME} --cluster-kubeconfig=$HOME/.kube/config
Step 1: Use "%[2]s join" command to register the cluster to Karmada control plane. --cluster-kubeconfig is kubeconfig of the member cluster.
(In karmada)~# MEMBER_CLUSTER_NAME="cat ~/.kube/config | grep current-context | sed 's/: /\n/g'| sed '1d'"
(In karmada)~# %[2]s --kubeconfig %[1]s/karmada-apiserver.config join ${MEMBER_CLUSTER_NAME} --cluster-kubeconfig=$HOME/.kube/config
Step 2: Show members of karmada
(In karmada)~# kubectl --kubeconfig %s/karmada-apiserver.config get clusters
(In karmada)~# kubectl --kubeconfig %[1]s/karmada-apiserver.config get clusters
Register cluster with 'Pull' mode
Step 1: Send karmada kubeconfig and karmada-agent.yaml to member kubernetes
(In karmada)~# scp %s/karmada-apiserver.config %s/karmada-agent.yaml {member kubernetes}:~
Step 2: Create karmada kubeconfig secret
Notice:
Cross-network, need to change the config server address.
(In member kubernetes)~# kubectl create ns karmada-system
(In member kubernetes)~# kubectl create secret generic karmada-kubeconfig --from-file=karmada-kubeconfig=/root/karmada-apiserver.config -n karmada-system
Step 1: Use "%[2]s register" command to register the cluster to Karmada control plane. "--cluster-name" is set to cluster of current-context by default.
(In member cluster)~# %[2]s%[3]s
Step 3: Create karmada agent
(In member kubernetes)~# MEMBER_CLUSTER_NAME="demo"
(In member kubernetes)~# sed -i "s/{member_cluster_name}/${MEMBER_CLUSTER_NAME}/g" karmada-agent.yaml
(In member kubernetes)~# kubectl apply -f karmada-agent.yaml
Step 4: Show members of karmada
(In karmada)~# kubectl --kubeconfig %s/karmada-apiserver.config get clusters
Step 2: Show members of karmada
(In karmada)~# kubectl --kubeconfig %[1]s/karmada-apiserver.config get clusters
`, "`", "`", path, path, path, path, path)
`, path, parentCommand, printRegisterCommand)
}

View File

@ -3,5 +3,5 @@ package utils
import "testing"
func TestGenExamples(t *testing.T) {
GenExamples("/tmp", "kubectl karmada")
GenExamples("/tmp", "kubectl karmada", " register")
}