func workerJoin()

in projects/aws/bottlerocket-bootstrap/pkg/kubeadm/worker_join.go [13:64]


func workerJoin() error {
	err := setHostName(kubeadmJoinFile)
	if err != nil {
		return errors.Wrap(err, "Error replacing hostname on kubeadm")
	}

	cmd := exec.Command(kubeadmBinary, utils.LogVerbosity, "join", "phase", "kubelet-start", "--config", kubeadmJoinFile)
	cmd.Stdout = os.Stdout
	if err := cmd.Start(); err != nil {
		return errors.Wrapf(err, "Error running command: %v", cmd)
	}

	err = killCmdAfterJoinFilesGeneration(cmd)
	if err != nil {
		return errors.Wrap(err, "Error waiting for worker join files")
	}

	apiServer, token, err := getBootstrapFromJoinConfig(kubeadmJoinFile)
	if err != nil {
		return errors.Wrap(err, "Error getting api server and token from kubeadm join config")
	}
	b64CA, err := getEncodedCA()
	if err != nil {
		return errors.Wrap(err, "Error reading the ca data")
	}
	dns, err := getDNSFromJoinConfig(kubeletConfigFile)
	if err != nil {
		return errors.Wrap(err, "Error getting dns from kubelet config")
	}
	fmt.Println(dns)

	cmd = exec.Command(utils.ApiclientBinary, "set",
		"kubernetes.api-server="+apiServer,
		"kubernetes.cluster-certificate="+b64CA,
		"kubernetes.cluster-dns-ip="+string(dns),
		"kubernetes.bootstrap-token="+token,
		"kubernetes.authentication-mode=tls",
		"kubernetes.standalone-mode=false")
	out, err := cmd.CombinedOutput()
	if err != nil {
		return errors.Wrapf(err, "Error running command: %v, output: %s\n", cmd, string(out))
	}
	fmt.Printf("Ran apiclient set call: %v\n", string(out))

	// wait for kubelet to come up before killing the bootstrap container
	err = waitForActiveKubelet()
	if err != nil {
		fmt.Printf("Error waiting for kubelet: %v", err)
		return err
	}
	return nil
}