1 回答
TA贡献1818条经验 获得超7个赞
以下是步骤:
git clone https://github.com/kubernetes/kubernetes.git
重复
sample-cli-plugin
为test-cli-plugin
(这涉及在暂存/发布下修复 import-restrictions.yaml、rules-godeps.yaml 和 Rules.yaml - 也许没有必要,但这样更安全)将 kubectl-ns.go 更改为 kubectl-test.go:
package main
import (
"os"
"github.com/spf13/pflag"
"k8s.io/cli-runtime/pkg/genericclioptions"
"k8s.io/test-cli-plugin/pkg/cmd"
)
func main() {
flags := pflag.NewFlagSet("kubectl-test", pflag.ExitOnError)
pflag.CommandLine = flags
root := cmd.NewCmdTest(genericclioptions.IOStreams{In: os.Stdin,
Out: os.Stdout,
ErrOut: os.Stderr})
if err := root.Execute(); err != nil {
os.Exit(1)
}
}
将 ns.go 更改为 test.go:
package cmd
import (
"fmt"
"os"
"github.com/spf13/cobra"
"k8s.io/cli-runtime/pkg/genericclioptions"
)
type TestOptions struct {
configFlags *genericclioptions.ConfigFlags
genericclioptions.IOStreams
}
func NewTestOptions(streams genericclioptions.IOStreams) *TestOptions {
return &TestOptions{
configFlags: genericclioptions.NewConfigFlags(true),
IOStreams: streams,
}
}
func NewCmdTest(streams genericclioptions.IOStreams) *cobra.Command {
o := NewTestOptions(streams)
cmd := &cobra.Command{
Use: "test",
Short: "Test plugin",
SilenceUsage: true,
RunE: func(c *cobra.Command, args []string) error {
o.Run()
return nil
},
}
return cmd
}
func (o *TestOptions) Run() error {
fmt.Fprintf(os.Stderr, "Testing Fprintf Stderr\n")
fmt.Fprintf(os.Stdout, "Testing Fprintf Stdout\n")
fmt.Printf("Testing Printf\n")
fmt.Fprintf(o.IOStreams.Out, "Testing Fprintf o.IOStreams.Out\n")
return nil
}
相应地修复 BUILD 文件
构建插件
跑步
make
复制
kubectl-test
到/usr/local/bin运行编译后的二进制
kubectl
文件:
~/k8s/_output/bin$ ./kubectl 测试
测试 Fprintf 标准错误
测试 Fprintf 标准输出
测试 Printf
测试 Fprintf o.IOStreams.Out
- 1 回答
- 0 关注
- 110 浏览
添加回答
举报