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")
}
}