diff --git a/pkg/kubectl/cmd/plugin.go b/pkg/kubectl/cmd/plugin.go index e883d1a65df..b69e7a89c68 100644 --- a/pkg/kubectl/cmd/plugin.go +++ b/pkg/kubectl/cmd/plugin.go @@ -19,6 +19,9 @@ package cmd import ( "fmt" "io" + "os" + "os/exec" + "syscall" "github.com/golang/glog" "github.com/spf13/cobra" @@ -109,6 +112,15 @@ func NewCmdForPlugin(f cmdutil.Factory, plugin *plugins.Plugin, runner plugins.P } if err := runner.Run(plugin, runningContext); err != nil { + if exiterr, ok := err.(*exec.ExitError); ok { + // check for (and exit with) the correct exit code + // from a failed plugin command execution + if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { + fmt.Fprintf(errout, "error: %v\n", err) + os.Exit(status.ExitStatus()) + } + } + cmdutil.CheckErr(err) } },