Skip to content

Instantly share code, notes, and snippets.

@joemiller
Created June 16, 2021 15:57
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joemiller/d8aeb5d3e70266665dc92315512ee837 to your computer and use it in GitHub Desktop.
Save joemiller/d8aeb5d3e70266665dc92315512ee837 to your computer and use it in GitHub Desktop.
demo of vault token renewer go routine from internal project
type VaultDriver struct {
vaultClient *vaultapi.Client
project string
}
func (d VaultDriver) TokenRenewer(ctx context.Context) error {
renewer, err := d.vaultClient.NewRenewer(&vaultapi.RenewerInput{
Secret: &vaultapi.Secret{
Auth: &vaultapi.SecretAuth{
ClientToken: d.vaultClient.Token(),
Renewable: true,
LeaseDuration: 600,
},
},
})
if err != nil {
return errors.Wrap(err, "Unable to start vault token renewer.")
}
go renewer.Renew()
defer renewer.Stop()
for {
select {
case err := <-renewer.DoneCh():
if err != nil {
logrus.Errorf("failed to renew vault token: %s", err)
}
return errors.Wrap(err, "Vault token renwal failed. Maybe Lease expired?")
case <-renewer.RenewCh():
logrus.Info("Successfully renewed vault token")
case <-ctx.Done():
return nil
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment