diff --git a/cmd/coordinator/coordinator.go b/cmd/coordinator/coordinator.go
index d3b3b3d..0af9adc 100644
--- a/cmd/coordinator/coordinator.go
+++ b/cmd/coordinator/coordinator.go
@@ -4064,11 +4064,7 @@
 	if !metadata.OnGCE() {
 		return nil
 	}
-	client, err := secret.NewClient()
-	if err != nil {
-		log.Fatalf("unable to create secret client %v", err)
-	}
-	return client
+	return secret.MustNewClient()
 }
 
 func mustCreateEC2BuildletPool(sc *secret.Client) *pool.EC2Buildlet {
diff --git a/cmd/gerritbot/gerritbot.go b/cmd/gerritbot/gerritbot.go
index b391828..45b9a49 100644
--- a/cmd/gerritbot/gerritbot.go
+++ b/cmd/gerritbot/gerritbot.go
@@ -56,13 +56,8 @@
 
 	var secretClient *secret.Client
 	if metadata.OnGCE() {
-		var err error
-		secretClient, err = secret.NewClient()
-		if err != nil {
-			log.Fatalf("unable to create a secret manager client: %v", err)
-		}
+		secretClient = secret.MustNewClient()
 	}
-
 	if err := writeCookiesFile(secretClient); err != nil {
 		log.Fatalf("writeCookiesFile(): %v", err)
 	}
diff --git a/cmd/gitmirror/gitmirror.go b/cmd/gitmirror/gitmirror.go
index 6d6fc77..2dfe4b3 100644
--- a/cmd/gitmirror/gitmirror.go
+++ b/cmd/gitmirror/gitmirror.go
@@ -57,7 +57,7 @@
 
 	log.Printf("gitmirror running.")
 
-	sc := mustCreateSecretClient()
+	sc := secret.MustNewClient()
 	defer sc.Close()
 
 	go pollGerritAndTickle()
@@ -769,11 +769,3 @@
 		fmt.Fprintf(w, "%s\n", kv)
 	}
 }
-
-func mustCreateSecretClient() *secret.Client {
-	client, err := secret.NewClient()
-	if err != nil {
-		log.Fatalf("unable to create secret client %v", err)
-	}
-	return client
-}
diff --git a/cmd/gopherbot/gopherbot.go b/cmd/gopherbot/gopherbot.go
index f552b35..7131da8 100644
--- a/cmd/gopherbot/gopherbot.go
+++ b/cmd/gopherbot/gopherbot.go
@@ -197,7 +197,7 @@
 
 	var sc *secret.Client
 	if metadata.OnGCE() {
-		sc = mustCreateSecretClient()
+		sc = secret.MustNewClient()
 	}
 	ctx := context.Background()
 
@@ -2311,11 +2311,3 @@
 		fmt.Printf("\thttps://golang.org/issue/%v  %s\n", gi.Number, gi.Title)
 	}
 }
-
-func mustCreateSecretClient() *secret.Client {
-	client, err := secret.NewClient()
-	if err != nil {
-		log.Fatalf("unable to create secret client %v", err)
-	}
-	return client
-}
diff --git a/cmd/pubsubhelper/pubsubhelper.go b/cmd/pubsubhelper/pubsubhelper.go
index 91de894..1f6ea98 100644
--- a/cmd/pubsubhelper/pubsubhelper.go
+++ b/cmd/pubsubhelper/pubsubhelper.go
@@ -58,7 +58,7 @@
 
 	// webhooksecret should not be set in production
 	if *webhookSecret == "" {
-		sc := mustCreateSecretClient()
+		sc := secret.MustNewClient()
 		defer sc.Close()
 
 		ctxSc, cancel := context.WithTimeout(ctx, 10*time.Second)
@@ -428,11 +428,3 @@
 	log.Printf("smtpd: new connection from %v", c.Addr())
 	return nil
 }
-
-func mustCreateSecretClient() *secret.Client {
-	client, err := secret.NewClient()
-	if err != nil {
-		log.Fatalf("unable to create secret client %v", err)
-	}
-	return client
-}
diff --git a/cmd/scaleway/scaleway.go b/cmd/scaleway/scaleway.go
index d0ab0fc..f8e085e 100644
--- a/cmd/scaleway/scaleway.go
+++ b/cmd/scaleway/scaleway.go
@@ -55,7 +55,7 @@
 func main() {
 	flag.Parse()
 
-	secretClient := mustCreateSecretClient()
+	secretClient := secret.MustNewClient()
 	defer secretClient.Close()
 
 	if *tags == "" && !*listAll { // Tags aren't needed if -list-all flag is set.
@@ -413,11 +413,3 @@
 	}
 	return st.Machines
 }
-
-func mustCreateSecretClient() *secret.Client {
-	client, err := secret.NewClient()
-	if err != nil {
-		log.Fatalf("unable to create secret client %v", err)
-	}
-	return client
-}
diff --git a/internal/gitauth/gitauth.go b/internal/gitauth/gitauth.go
index fc5e083..314cc24 100644
--- a/internal/gitauth/gitauth.go
+++ b/internal/gitauth/gitauth.go
@@ -32,7 +32,7 @@
 		return nil
 	}
 
-	sc := mustCreateSecretClient()
+	sc := secret.MustNewClient()
 	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
 	defer cancel()
 
@@ -59,11 +59,3 @@
 	log.Fatalf("No HOME set in environment.")
 	panic("unreachable")
 }
-
-func mustCreateSecretClient() *secret.Client {
-	client, err := secret.NewClient()
-	if err != nil {
-		log.Fatalf("unable to create secret client %v", err)
-	}
-	return client
-}
diff --git a/internal/secret/gcp_secret_manager.go b/internal/secret/gcp_secret_manager.go
index ff1e589..1e0717a 100644
--- a/internal/secret/gcp_secret_manager.go
+++ b/internal/secret/gcp_secret_manager.go
@@ -9,6 +9,7 @@
 import (
 	"context"
 	"io"
+	"log"
 	"path"
 
 	"cloud.google.com/go/compute/metadata"
@@ -105,3 +106,13 @@
 func buildNamePath(projectID, name, version string) string {
 	return path.Join("projects", projectID, "secrets", name, "versions", version)
 }
+
+// MustNewClient instantiates an instance of the Secret Manager Client. If there is an error
+// this fuction will exit.
+func MustNewClient() *Client {
+	c, err := NewClient()
+	if err != nil {
+		log.Fatalf("unable to create secret client %v", err)
+	}
+	return c
+}
diff --git a/maintner/maintnerd/maintnerd.go b/maintner/maintnerd/maintnerd.go
index 7f7c3a6..0caaf50 100644
--- a/maintner/maintnerd/maintnerd.go
+++ b/maintner/maintnerd/maintnerd.go
@@ -366,7 +366,7 @@
 
 func getGithubToken(ctx context.Context) (string, error) {
 	if metadata.OnGCE() {
-		sc := mustCreateSecretClient()
+		sc := secret.MustNewClient()
 
 		ctxSc, cancel := context.WithTimeout(ctx, 10*time.Second)
 		defer cancel()
@@ -503,11 +503,3 @@
 		}
 	}
 }
-
-func mustCreateSecretClient() *secret.Client {
-	client, err := secret.NewClient()
-	if err != nil {
-		log.Fatalf("unable to create secret client %v", err)
-	}
-	return client
-}
