func createKubeConfig()

in cmd/resource/kube.go [47:101]


func createKubeConfig(esvc EKSAPI, ssvc STSAPI, secsvc SecretsManagerAPI, cluster *string, kubeconfig *string, customKubeconfig []byte) error {
	switch {
	case cluster != nil && kubeconfig != nil:
		return errors.New("both ClusterID or KubeConfig can not be specified")
	case cluster != nil:
		defaultConfig := api.NewConfig()
		c, err := getClusterDetails(esvc, *cluster)
		if err != nil {
			return genericError("Getting Cluster details", err)
		}
		defaultConfig.Clusters[*cluster] = &api.Cluster{
			Server:                   c.endpoint,
			CertificateAuthorityData: []byte(c.CAData),
		}
		token, err := generateKubeToken(ssvc, cluster)
		if err != nil {
			return err
		}
		defaultConfig.AuthInfos["aws"] = &api.AuthInfo{
			Token: *token,
		}
		defaultConfig.Contexts["aws"] = &api.Context{
			Cluster:  *cluster,
			AuthInfo: "aws",
		}
		defaultConfig.CurrentContext = "aws"
		log.Printf("Writing kubeconfig file to %s", KubeConfigLocalPath)

		err = clientcmd.WriteToFile(*defaultConfig, KubeConfigLocalPath)
		if err != nil {
			return genericError("Write file: ", err)
		}
		return nil
	case kubeconfig != nil:
		s, err := getSecretsManager(secsvc, kubeconfig)
		if err != nil {
			return err
		}
		log.Printf("Writing kubeconfig file to %s", KubeConfigLocalPath)
		err = ioutil.WriteFile(KubeConfigLocalPath, s, 0600)
		if err != nil {
			return genericError("Write file: ", err)
		}
		return nil
	case customKubeconfig != nil:
		log.Printf("Writing kubeconfig file to %s", KubeConfigLocalPath)
		err := ioutil.WriteFile(KubeConfigLocalPath, customKubeconfig, 0600)
		if err != nil {
			return genericError("Write file: ", err)
		}
		return nil
	default:
		return errors.New("either ClusterID or KubeConfig must be specified")
	}
}