...
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