Skip to content

Commit

Permalink
Don’t create all the clientSets
Browse files Browse the repository at this point in the history
Signed-off-by: David Gageot <david@gageot.net>
  • Loading branch information
dgageot committed May 30, 2018
1 parent 3e1202c commit d24a628
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 18 deletions.
7 changes: 4 additions & 3 deletions pkg/skaffold/build/kaniko.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"},
Expand All @@ -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")
}
}()
Expand Down
9 changes: 5 additions & 4 deletions pkg/skaffold/kaniko/kaniko.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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"},
Expand Down Expand Up @@ -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")
}

Expand Down
6 changes: 3 additions & 3 deletions pkg/skaffold/kubernetes/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()")
}
Expand Down
9 changes: 4 additions & 5 deletions pkg/skaffold/kubernetes/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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)
}
}
}
Expand All @@ -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")
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/skaffold/runner/runner_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit d24a628

Please sign in to comment.