88 "github.com/pkg/errors"
99 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1010 "k8s.io/client-go/kubernetes"
11+ "k8s.io/client-go/rest"
1112 "k8s.io/client-go/tools/clientcmd"
1213)
1314
@@ -20,10 +21,26 @@ type RunningImage struct {
2021 PullableImage string
2122}
2223
23- func (o Outdated ) ListImages (kubeconfigPath string , imageNameCh chan string , ignoreNs []string ) ([]RunningImage , error ) {
24- config , err := clientcmd .BuildConfigFromFlags ("" , kubeconfigPath )
25- if err != nil {
26- return nil , errors .Wrap (err , "failed to read kubeconfig" )
24+ func (o Outdated ) ListImages (kubeconfigPath string , kubeContext string , imageNameCh chan string , ignoreNs []string ) ([]RunningImage , error ) {
25+ var config * rest.Config
26+
27+ if kubeContext == "" {
28+ defaultConfig , err := clientcmd .BuildConfigFromFlags ("" , kubeconfigPath )
29+ if err != nil {
30+ return nil , errors .Wrap (err , "failed to read kubeconfig" )
31+ }
32+ config = defaultConfig
33+ } else {
34+ configLoader := clientcmd .NewNonInteractiveDeferredLoadingClientConfig (
35+ & clientcmd.ClientConfigLoadingRules {ExplicitPath : kubeconfigPath },
36+ & clientcmd.ConfigOverrides {
37+ CurrentContext : kubeContext ,
38+ })
39+ contextConfig , err := configLoader .ClientConfig ()
40+ if err != nil {
41+ return nil , errors .Wrap (err , "failed to read context kubeconfig" )
42+ }
43+ config = contextConfig
2744 }
2845
2946 clientset , err := kubernetes .NewForConfig (config )
0 commit comments