in main.go [51:98]
func main() {
flag.StringVar(&cluster, "cluster", "", "EKS cluster name")
flag.StringVar(®ion, "region", "", "EKS cluster's region")
flag.StringVar(&namespace, "namespace", defaultNamespace, "EKS namespace to restrict the IAM policy for")
flag.StringVar(&serviceAccount, "service-account", "", "EKS service account")
flag.StringVar(&role, "role", "", "IAM role to be created or updated")
flag.Usage = func() {
usageText(0)
}
flag.Parse()
if cluster == "" {
usageText(1)
}
if region == "" {
reg, err := defaultRegion()
if err != nil {
log.Fatalf("Cannot identify the default region: %v", err)
}
region = reg
}
if serviceAccount == "" {
serviceAccount = namespace
}
if role == "" {
role = fmt.Sprintf("%s-%s-%s-%s-%s",
defaultIAMRole, region, cluster, namespace, serviceAccount)
}
cfg := &aws.Config{}
if region != "" {
cfg.Region = aws.String(region)
}
sess, err := session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
AssumeRoleTokenProvider: stscreds.StdinTokenProvider,
Config: *cfg,
})
if err != nil {
log.Fatalf("Cannot create session: %v", err)
}
if err := createRole(sess); err != nil {
log.Fatalf("Cannot create IAM role: %v", err)
}
log.Printf("Role %q is created.", role)
}