@@ -5,25 +5,21 @@ import (
55 "bytes"
66 "container/list"
77 "context"
8- "crypto/tls"
9- "crypto/x509"
108 "fmt"
119 "io"
1210 "net"
1311 "net/http"
1412
15- "io/ioutil "
13+ "io"
1614 "os"
1715 "path/filepath"
1816 "strings"
1917 "sync"
2018 "time"
2119
22- certs "github.com/flanksource/commons/certs"
2320 "github.com/flanksource/commons/files"
2421 "github.com/flanksource/commons/logger"
2522 "github.com/flanksource/commons/utils"
26- "github.com/flanksource/kommons/etcd"
2723 "github.com/flanksource/kommons/kustomize"
2824 "github.com/flanksource/kommons/proxy"
2925 "github.com/pkg/errors"
@@ -43,6 +39,7 @@ import (
4339 "k8s.io/client-go/restmapper"
4440 "k8s.io/client-go/tools/clientcmd"
4541 "k8s.io/client-go/transport"
42+ "sigs.k8s.io/kustomize/kyaml/filesys"
4643)
4744
4845var immutableAnnotations = []string {
@@ -60,13 +57,11 @@ type Client struct {
6057 ApplyHook ApplyHook
6158 ImmutableAnnotations []string
6259 Trace bool
63-
64- client * kubernetes.Clientset
65- dynamicClient dynamic.Interface
66- restConfig * rest.Config
67- etcdClientGenerator * etcd.EtcdClientGenerator
68- kustomizeManager * kustomize.Manager
69- restMapper meta.RESTMapper
60+ client * kubernetes.Clientset
61+ dynamicClient dynamic.Interface
62+ restConfig * rest.Config
63+ kustomizeManager * kustomize.Manager
64+ restMapper meta.RESTMapper
7065}
7166
7267func NewClientFromDefaults (log logger.Logger ) (* Client , error ) {
@@ -83,7 +78,7 @@ func NewClientFromDefaults(log logger.Logger) (*Client, error) {
8378 }
8479 }
8580
86- data , err := ioutil .ReadFile (kubeconfig )
81+ data , err := os .ReadFile (kubeconfig )
8782 if err != nil {
8883 return nil , err
8984 }
@@ -133,7 +128,7 @@ func (c *Client) GetKustomize() (*kustomize.Manager, error) {
133128 if c .kustomizeManager != nil {
134129 return c .kustomizeManager , nil
135130 }
136- dir , _ := ioutil . TempDir ( "" , "karina-kustomize" )
131+ fs := filesys . MakeFsInMemory ( )
137132 patches , err := c .GetKustomizePatches ()
138133 if err != nil {
139134 return nil , err
@@ -146,7 +141,7 @@ func (c *Client) GetKustomize() (*kustomize.Manager, error) {
146141 for _ , patch := range patches {
147142 if files .Exists (patch ) {
148143 name = fmt .Sprintf ("%d-%s" , no , filepath .Base (patch ))
149- patchBytes , err := ioutil .ReadFile (patch )
144+ patchBytes , err := io .ReadFile (patch )
150145 if err != nil {
151146 return nil , err
152147 }
@@ -162,12 +157,12 @@ func (c *Client) GetKustomize() (*kustomize.Manager, error) {
162157 if err != nil {
163158 return nil , perrors .WithMessagef (err , "syntax error when reading %s " , name )
164159 }
165- if _ , err := files .CopyFromReader (bytes .NewBuffer (* patchData ), dir + "/" + name , 0644 ); err != nil {
166- return nil , err
167- }
160+ fs .WriteFile (name , * patchData )
161+
162+ }
163+ c .kustomizeManager = & kustomize.Manager {
164+ FileSystem : fs ,
168165 }
169- kustomizeManager , err := kustomize .GetManager (dir )
170- c .kustomizeManager = kustomizeManager
171166 return c .kustomizeManager , err
172167}
173168
@@ -254,24 +249,6 @@ func (c *Client) GetRestMapper() (meta.RESTMapper, error) {
254249 return c .restMapper , err
255250}
256251
257- func (c * Client ) GetEtcdClientGenerator (ca * certs.Certificate ) (* etcd.EtcdClientGenerator , error ) {
258- if c .etcdClientGenerator != nil {
259- return c .etcdClientGenerator , nil
260- }
261- client , err := c .GetClientset ()
262- if err != nil {
263- return nil , err
264- }
265- rest , _ := c .GetRESTConfig ()
266- caPool := x509 .NewCertPool ()
267- caPool .AppendCertsFromPEM (ca .EncodedCertificate ())
268- cert , _ := tls .X509KeyPair (ca .EncodedCertificate (), ca .EncodedPrivateKey ())
269- return etcd .NewEtcdClientGenerator (client , rest , & tls.Config {
270- RootCAs : caPool ,
271- Certificates : []tls.Certificate {cert },
272- }), nil
273- }
274-
275252func (c * Client ) Refresh (item * unstructured.Unstructured ) (* unstructured.Unstructured , error ) {
276253 return c .GetByKind (item .GetKind (), item .GetNamespace (), item .GetName ())
277254}
@@ -458,36 +435,6 @@ func (c *Client) Update(namespace string, item runtime.Object) error {
458435 return err
459436}
460437
461- func (c * Client ) GetEtcdClient (ctx context.Context ) (* etcd.Client , error ) {
462- clientset , err := c .GetClientset ()
463- if err != nil {
464- return nil , perrors .Wrap (err , "failed to get clientset" )
465- }
466- secret , err := clientset .CoreV1 ().Secrets ("kube-system" ).Get (context .TODO (), "etcd-certs" , metav1.GetOptions {})
467- if err != nil {
468- return nil , perrors .Wrap (err , "failed to get secret etcd-certs in namespace kube-system" )
469- }
470- cert , err := certs .DecodeCertificate (secret .Data ["tls.crt" ], secret .Data ["tls.key" ])
471- if err != nil {
472- return nil , perrors .Wrap (err , "failed to decode etcd certificates" )
473- }
474- etcdClientGenerator , err := c .GetEtcdClientGenerator (cert )
475- if err != nil {
476- return nil , perrors .Wrap (err , "failed to get etcd client generator" )
477- }
478-
479- masterNode , err := c .GetMasterNode ()
480- if err != nil {
481- return nil , perrors .Wrap (err , "failed to get master node" )
482- }
483- etcdClient , err := etcdClientGenerator .ForNode (ctx , masterNode )
484- if err != nil {
485- return nil , perrors .Wrap (err , "failed to get etcd client" )
486- }
487-
488- return etcdClient , nil
489- }
490-
491438func (c * Client ) GetJobPod (namespace , jobName string ) (string , error ) {
492439 client , err := c .GetClientset ()
493440 if err != nil {
0 commit comments