diff --git a/pkg/skaffold/build/kaniko.go b/pkg/skaffold/build/kaniko.go index 4e7475f8fc3..ef18491c059 100644 --- a/pkg/skaffold/build/kaniko.go +++ b/pkg/skaffold/build/kaniko.go @@ -43,17 +43,18 @@ func NewKanikoBuilder(cfg *v1alpha2.BuildConfig) (*KanikoBuilder, error) { } func (k *KanikoBuilder) Build(ctx context.Context, out io.Writer, tagger tag.Tagger, artifacts []*v1alpha2.Artifact) ([]Build, error) { - client, err := kubernetes.GetClientset() + kubeclient, err := kubernetes.GetClientset() if err != nil { return nil, errors.Wrap(err, "getting kubernetes client") } + secrets := kubeclient.Secrets("default") secretData, err := ioutil.ReadFile(k.KanikoBuild.PullSecret) if err != nil { return nil, errors.Wrap(err, "reading secret") } - _, err = client.CoreV1().Secrets("default").Create(&v1.Secret{ + _, err = secrets.Create(&v1.Secret{ ObjectMeta: metav1.ObjectMeta{ Name: "kaniko-secret", Labels: map[string]string{"kaniko": "kaniko"}, @@ -66,7 +67,7 @@ func (k *KanikoBuilder) Build(ctx context.Context, out io.Writer, tagger tag.Tag logrus.Warnf("creating secret: %s", err) } defer func() { - if err := client.CoreV1().Secrets("default").Delete("kaniko-secret", &metav1.DeleteOptions{}); err != nil { + if err := secrets.Delete("kaniko-secret", &metav1.DeleteOptions{}); err != nil { logrus.Warnf("deleting secret") } }() diff --git a/pkg/skaffold/kaniko/kaniko.go b/pkg/skaffold/kaniko/kaniko.go index 13f7fd84435..d27e354fb8a 100644 --- a/pkg/skaffold/kaniko/kaniko.go +++ b/pkg/skaffold/kaniko/kaniko.go @@ -41,10 +41,11 @@ func RunKanikoBuild(ctx context.Context, out io.Writer, artifact *v1alpha2.Artif return "", errors.Wrap(err, "uploading tar to gcs") } - client, err := kubernetes.GetClientset() + kubeclient, err := kubernetes.GetClientset() if err != nil { return "", errors.Wrap(err, "") } + pods := kubeclient.Pods("default") imageList := kubernetes.NewImageList() imageList.AddImage(constants.DefaultKanikoImage) @@ -54,7 +55,7 @@ func RunKanikoBuild(ctx context.Context, out io.Writer, artifact *v1alpha2.Artif return "", errors.Wrap(err, "starting log streamer") } imageDst := fmt.Sprintf("%s:%s", artifact.ImageName, initialTag) - p, err := client.CoreV1().Pods("default").Create(&v1.Pod{ + p, err := pods.Create(&v1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "kaniko", Labels: map[string]string{"kaniko": "kaniko"}, @@ -105,14 +106,14 @@ func RunKanikoBuild(ctx context.Context, out io.Writer, artifact *v1alpha2.Artif defer func() { imageList.RemoveImage(constants.DefaultKanikoImage) - if err := client.CoreV1().Pods("default").Delete(p.Name, &metav1.DeleteOptions{ + if err := pods.Delete(p.Name, &metav1.DeleteOptions{ GracePeriodSeconds: new(int64), }); err != nil { logrus.Fatalf("deleting pod: %s", err) } }() - if err := kubernetes.WaitForPodComplete(client.CoreV1().Pods("default"), p.Name); err != nil { + if err := kubernetes.WaitForPodComplete(pods, p.Name); err != nil { return "", errors.Wrap(err, "waiting for pod to complete") } diff --git a/pkg/skaffold/kubernetes/client.go b/pkg/skaffold/kubernetes/client.go index 721dbc10965..e3081bceda4 100644 --- a/pkg/skaffold/kubernetes/client.go +++ b/pkg/skaffold/kubernetes/client.go @@ -20,20 +20,20 @@ import ( "fmt" "github.com/pkg/errors" - "k8s.io/client-go/kubernetes" + corev1 "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/client-go/tools/clientcmd" // Initialize all known client auth plugins _ "k8s.io/client-go/plugin/pkg/client/auth" ) -func GetClientset() (kubernetes.Interface, error) { +func GetClientset() (corev1.CoreV1Interface, error) { loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() kubeConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, &clientcmd.ConfigOverrides{}) clientConfig, err := kubeConfig.ClientConfig() if err != nil { return nil, fmt.Errorf("Error creating kubeConfig: %s", err) } - client, err := kubernetes.NewForConfig(clientConfig) + client, err := corev1.NewForConfig(clientConfig) if err != nil { return nil, errors.Wrap(err, "Error creating new client from kubeConfig.ClientConfig()") } diff --git a/pkg/skaffold/kubernetes/log.go b/pkg/skaffold/kubernetes/log.go index 1ded0a5c70d..ddef204aa71 100644 --- a/pkg/skaffold/kubernetes/log.go +++ b/pkg/skaffold/kubernetes/log.go @@ -65,11 +65,10 @@ func (a *LogAggregator) Start(ctx context.Context) error { if err != nil { return errors.Wrap(err, "getting k8s client") } - client := kubeclient.CoreV1() a.startTime = time.Now() - watcher, err := client.Pods("").Watch(meta_v1.ListOptions{ + watcher, err := kubeclient.Pods("").Watch(meta_v1.ListOptions{ IncludeUninitialized: true, }) if err != nil { @@ -92,7 +91,7 @@ func (a *LogAggregator) Start(ctx context.Context) error { } if a.podSelector.Select(pod) { - go a.streamLogs(ctx, client, pod) + go a.streamLogs(ctx, kubeclient, pod) } } } @@ -102,8 +101,8 @@ func (a *LogAggregator) Start(ctx context.Context) error { } // nolint: interfacer -func (a *LogAggregator) streamLogs(ctx context.Context, client corev1.CoreV1Interface, pod *v1.Pod) error { - pods := client.Pods(pod.Namespace) +func (a *LogAggregator) streamLogs(ctx context.Context, kubeclient corev1.PodsGetter, pod *v1.Pod) error { + pods := kubeclient.Pods(pod.Namespace) if err := WaitForPodReady(pods, pod.Name); err != nil { return errors.Wrap(err, "waiting for pod ready") } diff --git a/pkg/skaffold/runner/runner_test.go b/pkg/skaffold/runner/runner_test.go index 4fafeb24644..e7c1c901114 100644 --- a/pkg/skaffold/runner/runner_test.go +++ b/pkg/skaffold/runner/runner_test.go @@ -31,8 +31,8 @@ import ( "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/v1alpha2" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/watch" "github.com/GoogleContainerTools/skaffold/testutil" - clientgo "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/fake" + corev1 "k8s.io/client-go/kubernetes/typed/core/v1" ) type TestBuilder struct { @@ -81,8 +81,8 @@ func (t *TestDeployer) Cleanup(ctx context.Context, out io.Writer) error { return nil } -func resetClient() { kubernetes.Client = kubernetes.GetClientset } -func fakeGetClient() (clientgo.Interface, error) { return fake.NewSimpleClientset(), nil } +func resetClient() { kubernetes.Client = kubernetes.GetClientset } +func fakeGetClient() (corev1.CoreV1Interface, error) { return fake.NewSimpleClientset().CoreV1(), nil } type TestWatcher struct { changes [][]string