You've already forked aws-iam-anywhere-refresher
87 lines
1.9 KiB
Go
87 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/base64"
|
|
helper "git.s.int/rrise/aws-iam-anywhere-refresher/aws_signing_helper"
|
|
"git.s.int/rrise/aws-iam-anywhere-refresher/cmd"
|
|
appConfig "git.s.int/rrise/aws-iam-anywhere-refresher/config"
|
|
"git.s.int/rrise/aws-iam-anywhere-refresher/kube_client"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
println("Starting credentials refresh")
|
|
|
|
client, err := kube_client.NewKubeClient()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
c := appConfig.NewConfig()
|
|
|
|
privateKey, err := base64.StdEncoding.DecodeString(c.PrivateKey())
|
|
if err != nil {
|
|
log.Fatal("error:", err)
|
|
}
|
|
|
|
certificate, err := base64.StdEncoding.DecodeString(c.Certificate())
|
|
if err != nil {
|
|
log.Fatal("error:", err)
|
|
}
|
|
|
|
credentials, err := cmd.Run(&helper.CredentialsOpts{
|
|
PrivateKeyId: string(privateKey),
|
|
CertificateId: string(certificate),
|
|
CertIdentifier: helper.CertIdentifier{
|
|
SystemStoreName: "MY",
|
|
},
|
|
RoleArn: c.RoleArn(),
|
|
ProfileArnStr: c.ProfileArn(),
|
|
TrustAnchorArnStr: c.TrustedAnchor(),
|
|
SessionDuration: int(c.SessionDuration()),
|
|
})
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
println("Got new credentials")
|
|
|
|
_, err = client.GetSecret(c.Namespace(), c.Secret())
|
|
if err != nil {
|
|
println(err.Error())
|
|
println("secret doesn't exist, trying to create")
|
|
create, err := client.CreateSecret(c.Namespace(), credentials.ToSecret(c.Secret()))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
println("secret created")
|
|
println(create.CreationTimestamp.String())
|
|
} else {
|
|
update, err := client.UpdateSecret(c.Namespace(), credentials.ToSecret(c.Secret()))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
println("secret updated")
|
|
println(update.CreationTimestamp.String())
|
|
}
|
|
|
|
if c.RestartDeployments() {
|
|
println("Restarting deployments...")
|
|
deployments, err := client.ListDeployments(c.Namespace())
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
err = client.RestartDeployments(c.Namespace(), deployments)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
println("Done!")
|
|
|
|
os.Exit(0)
|
|
}
|