From 8aea7e4c00767bc32d38c2bb895d070ff9fde4c4 Mon Sep 17 00:00:00 2001 From: Joey Fang Date: Fri, 11 Mar 2022 15:30:29 +0800 Subject: [PATCH 1/4] docs: update readme --- readme.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/readme.md b/readme.md index 9626afb..4f6bb91 100644 --- a/readme.md +++ b/readme.md @@ -32,9 +32,9 @@ import ( func main() { - vhostPortForward, _ := kubeutil.HTTPPortForward(kubeutil.DefaultFactory()) + kubePortForward, _ := kubeutil.HTTPPortForward(kubeutil.DefaultFactory()) client := resty.NewWithClient(&http.Client{ - Transport: vhostPortForward, + Transport: kubePortForward, }) // ... } @@ -56,11 +56,11 @@ import ( func main() { - vhostPortForward, _ := vhostutil.GRPCPortForward(kubeutil.DefaultFactory()) + kubePortForward, _ := kubeutil.GRPCPortForward(kubeutil.DefaultFactory()) addr := ":" conn, err := grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials()), - vhostPortForward, + kubePortForward, ) // ... } From b9a227160bc28190772a011770131490ade7fbd5 Mon Sep 17 00:00:00 2001 From: Joey Fang Date: Sat, 12 Mar 2022 22:43:23 +0800 Subject: [PATCH 2/4] docs: fix typo --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 4f6bb91..9192ad3 100644 --- a/readme.md +++ b/readme.md @@ -17,7 +17,7 @@ $ kube-vhost server --port 8010 ``` -### http client portforwad example +### http client portforward example ```golang package main @@ -42,7 +42,7 @@ func main() { -### grpc client portforwad example +### grpc client portforward example ```golang package main From 043eabb70c90b30ab9eb12118fbb96860244457d Mon Sep 17 00:00:00 2001 From: Joey Fang Date: Mon, 9 May 2022 15:03:58 +0800 Subject: [PATCH 3/4] feat: modify for vhost show --- cmd/kube-vhost/vhostshow/vhostshow.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/kube-vhost/vhostshow/vhostshow.go b/cmd/kube-vhost/vhostshow/vhostshow.go index 3166b44..d3b2751 100644 --- a/cmd/kube-vhost/vhostshow/vhostshow.go +++ b/cmd/kube-vhost/vhostshow/vhostshow.go @@ -2,7 +2,7 @@ package vhostshow import ( "context" - "log" + "fmt" "github.com/josudoey/kube" "github.com/josudoey/kube/kubeutil" @@ -46,7 +46,7 @@ func (o *KubeVhostShowOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args [ for _, svc := range resolver.ListServices() { name := svc.SourceHostName() - log.Printf("vhost port-forward %s -> svc/%s", name, svc.SourceHostPort()) + fmt.Printf("%s -> svc/%s\n", name, svc.SourceHostPort()) } return nil From ece5b41b073ea4e5b39da4a18f4cab0adcbbf19d Mon Sep 17 00:00:00 2001 From: Joey Fang Date: Wed, 20 Jul 2022 20:43:57 +0800 Subject: [PATCH 4/4] feat: add kube-info pod-image --- cmd/kube-info/kube-info.go | 28 ++++++++++++ cmd/kube-info/podimage/podimage.go | 68 ++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 cmd/kube-info/kube-info.go create mode 100644 cmd/kube-info/podimage/podimage.go diff --git a/cmd/kube-info/kube-info.go b/cmd/kube-info/kube-info.go new file mode 100644 index 0000000..c42b6bc --- /dev/null +++ b/cmd/kube-info/kube-info.go @@ -0,0 +1,28 @@ +package main + +import ( + "log" + + "github.com/josudoey/kube/cmd/kube-info/podimage" + "github.com/spf13/cobra" + _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" +) + +func newCommand() *cobra.Command { + root := &cobra.Command{ + Use: "info", + CompletionOptions: cobra.CompletionOptions{ + // see https://github.com/spf13/cobra/blob/9054739e08187aab9294b7a773d54c92fabc23d3/completions.go#L599 + DisableDefaultCmd: true, + }, + } + root.AddCommand(podimage.NewCommand()) + return root +} + +func main() { + cmd := newCommand() + if err := cmd.Execute(); err != nil { + log.Fatal(err) + } +} diff --git a/cmd/kube-info/podimage/podimage.go b/cmd/kube-info/podimage/podimage.go new file mode 100644 index 0000000..aa2a29e --- /dev/null +++ b/cmd/kube-info/podimage/podimage.go @@ -0,0 +1,68 @@ +package podimage + +import ( + "context" + "fmt" + + "github.com/josudoey/kube" + "github.com/josudoey/kube/kubeutil" + "github.com/spf13/cobra" + _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" + cmdutil "k8s.io/kubectl/pkg/cmd/util" +) + +type KubeInfoPodImageOptions struct { + LabelSelector string +} + +func NewKubeInfoPodImageOptions() *KubeInfoPodImageOptions { + return &KubeInfoPodImageOptions{} +} + +func (o *KubeInfoPodImageOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) error { + selector := o.LabelSelector + namespace, _, err := f.ToRawKubeConfigLoader().Namespace() + if err != nil { + return err + } + + client, err := kube.GetClient(f) + if err != nil { + return err + } + + ctx := context.Background() + pods, err := kube.GetPodList(ctx, client, + kube.WithNamespace(namespace), + kube.WithLabelSelector(selector), + ) + if err != nil { + return err + } + + for _, pod := range pods.Items { + for _, container := range pod.Spec.InitContainers { + fmt.Printf("%v\t%v\n", pod.Name, container.Image) + } + for _, container := range pod.Spec.Containers { + fmt.Printf("%v\t%v\n", pod.Name, container.Image) + } + } + + return nil +} + +func NewCommand() *cobra.Command { + o := NewKubeInfoPodImageOptions() + f := kubeutil.DefaultFactory() + + cmd := &cobra.Command{ + Use: "pod-image", + Run: func(cmd *cobra.Command, args []string) { + cmdutil.CheckErr(o.Run(f, cmd, args)) + }, + } + + cmd.Flags().StringVarP(&o.LabelSelector, "selector", "l", o.LabelSelector, "Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2)") + return cmd +}