...

Source file src/edge-infra.dev/pkg/edge/k8objectsutils/auth.go

Documentation: edge-infra.dev/pkg/edge/k8objectsutils

     1  package k8objectsutils
     2  
     3  import (
     4  	"encoding/base64"
     5  	"fmt"
     6  
     7  	containerAPI "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/container/v1beta1"
     8  	"k8s.io/client-go/rest"
     9  	"k8s.io/client-go/tools/clientcmd/api"
    10  	"sigs.k8s.io/controller-runtime/pkg/client"
    11  )
    12  
    13  func CreateClient(cluster containerAPI.ContainerCluster, o client.Options) (client.Client, error) {
    14  	caData, err := DecodeCA(cluster)
    15  	if err != nil {
    16  		return nil, err
    17  	}
    18  
    19  	config := &rest.Config{
    20  		Host: fmt.Sprintf("https://%s", *cluster.Status.Endpoint),
    21  		TLSClientConfig: rest.TLSClientConfig{
    22  			CAData: caData,
    23  		},
    24  		AuthProvider: &api.AuthProviderConfig{
    25  			Name: "gke-auth",
    26  		},
    27  	}
    28  
    29  	return client.New(config, o)
    30  }
    31  
    32  func DecodeCA(cluster containerAPI.ContainerCluster) ([]byte, error) {
    33  	caData, err := base64.StdEncoding.DecodeString(*cluster.Spec.MasterAuth.ClusterCaCertificate)
    34  	if err != nil {
    35  		return nil, err
    36  	}
    37  	return caData, nil
    38  }
    39  

View as plain text