in pkg/config/config.go [142:174]
func getTokenSourceAndProjectID(ctx context.Context, gceConfigFilePath, gceServiceAccount string) (oauth2.TokenSource, string, error) {
if gceConfigFilePath != "" {
klog.V(1).Info("In a GKE cluster")
config, err := os.Open(gceConfigFilePath)
if err != nil {
return nil, "", fmt.Errorf("Could not open cloud provider configuration %s: %v", gceConfigFilePath, err)
}
defer config.Close()
var cfg gce.ConfigFile
if err := gcfg.FatalOnly(gcfg.ReadInto(&cfg, config)); err != nil {
return nil, "", fmt.Errorf("Could not read config %v", err)
}
klog.Infof("Using GCE provider config %+v", cfg)
return gce.NewAltTokenSource(cfg.Global.TokenURL, cfg.Global.TokenBody), cfg.Global.ProjectID, nil
}
projectID, err := metadata.ProjectID()
if err != nil {
return nil, "", fmt.Errorf("Could not fetch project id: %v", err)
}
if len(gceServiceAccount) != 0 {
klog.V(1).Infof("Using ComputeTokenSource(%q)", gceServiceAccount)
return google.ComputeTokenSource(gceServiceAccount, computev1.ComputeScope), projectID, nil
}
klog.V(1).Info("Using DefaultTokenSource")
tokenSource, err := google.DefaultTokenSource(ctx, computev1.ComputeScope)
return tokenSource, projectID, err
}