github.com/jenkins-x/jx/v2@v2.1.155/pkg/cloud/gke/externaldns/external_dns.go (about) 1 package externaldns 2 3 import ( 4 "github.com/jenkins-x/jx/v2/pkg/cloud/gke" 5 "github.com/pkg/errors" 6 "k8s.io/client-go/kubernetes" 7 ) 8 9 const ( 10 // ServiceAccountSecretKey is the key for the external dns service account secret 11 ServiceAccountSecretKey = "credentials.json" 12 // DefaultExternalDNSAbbreviation appended to the GCP service account 13 DefaultExternalDNSAbbreviation = "dn" 14 ) 15 16 var ( 17 serviceAccountRoles = []string{ 18 "roles/dns.admin", 19 } 20 ) 21 22 // CreateExternalDNSGCPServiceAccount creates a service account in GCP for ExternalDNS 23 func CreateExternalDNSGCPServiceAccount(gcloud gke.GClouder, kubeClient kubernetes.Interface, externalDNSName, namespace, clusterName, projectID string) (string, error) { 24 gcpServiceAccountSecretName, err := gcloud.CreateGCPServiceAccount(kubeClient, externalDNSName, DefaultExternalDNSAbbreviation, namespace, clusterName, projectID, serviceAccountRoles, ServiceAccountSecretKey) 25 if err != nil { 26 return "", errors.Wrap(err, "creating the ExternalDNS GCP Service Account") 27 } 28 return gcpServiceAccountSecretName, nil 29 }