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  }