in credentialproviderpackage/cmd/aws-credential-provider/main.go [28:118]
func main() {
var configurator cfg.Configurator
var err error
osType := strings.ToLower(os.Getenv("OS_TYPE"))
if osType == "" {
log.ErrorLogger.Println("Missing Environment Variable OS_TYPE")
os.Exit(1)
}
secretPath, err := awscred.GetAwsConfigPath()
if err != nil {
log.ErrorLogger.Fatal(err)
}
profile := os.Getenv("AWS_PROFILE")
if profile == "" {
profile = awsProfile
}
config := createCredentialProviderConfigOptions()
if osType == bottleRocket {
configurator, err = bottlerocket.NewBottleRocketConfigurator(socketPath)
if err != nil {
log.ErrorLogger.Fatal(err)
}
} else {
configurator = linux.NewLinuxConfigurator()
}
configurator.Initialize(config)
err = configurator.UpdateAWSCredentials(secretPath, profile)
if err != nil {
log.ErrorLogger.Fatal(err)
}
log.InfoLogger.Println("Aws credentials configured")
err = configurator.UpdateCredentialProvider(profile)
if err != nil {
log.ErrorLogger.Fatal(err)
}
log.InfoLogger.Println("Credential Provider Configured")
err = configurator.CommitChanges()
if err != nil {
log.ErrorLogger.Fatal(err)
}
log.InfoLogger.Println("Kubelet Restarted")
// Creating watcher for credentials
watcher, err := fsnotify.NewWatcher()
if err != nil {
log.ErrorLogger.Fatal(err)
}
defer watcher.Close()
// Start listening for changes to the aws credentials
go func() {
for {
select {
case event, ok := <-watcher.Events:
if !ok {
return
}
if event.Has(fsnotify.Create) {
if event.Name == credWatchData {
secretPath, err := awscred.GetAwsConfigPath()
if err != nil {
log.ErrorLogger.Fatal(err)
}
err = configurator.UpdateAWSCredentials(secretPath, profile)
if err != nil {
log.ErrorLogger.Fatal(err)
}
log.InfoLogger.Println("Aws credentials successfully changed")
}
}
case err, ok := <-watcher.Errors:
if !ok {
return
}
log.WarningLogger.Printf("filewatcher error: %v", err)
}
}
}()
err = watcher.Add(credWatchPath)
if err != nil {
log.ErrorLogger.Fatal(err)
}
// Block main goroutine forever.
<-make(chan struct{})
}