Go 使用k8s.io包使用Kubectl Apply命令
我需要在我的应用程序中添加Go 使用k8s.io包使用Kubectl Apply命令,go,kubernetes,Go,Kubernetes,我需要在我的应用程序中添加kubectl apply功能 我已经浏览了kubectl go-client,它没有关于apply命令的规定 我可以在go应用程序中创建kubectl的实例吗 如果不是1,我可以使用k8s.io/kubernetes包模拟kubectl apply命令吗 如果需要,将给出问题和澄清。这可以通过创建插件并向kubectl添加插件来完成 您可以用任何编程语言或脚本编写插件,以允许您编写命令行命令 不需要安装插件或预加载。插件可执行文件从kubectl二进制文件接收继承的环
kubectl apply
功能
我已经浏览了kubectl go-client
,它没有关于apply命令的规定
kubectl
的实例吗李>
k8s.io/kubernetes
包模拟kubectl apply
命令吗如果需要,将给出问题和澄清。这可以通过创建插件并向kubectl添加插件来完成 您可以用任何编程语言或脚本编写插件,以允许您编写命令行命令 不需要安装插件或预加载。插件可执行文件从
kubectl
二进制文件接收继承的环境。插件根据其名称确定希望实现的命令路径。例如,一个插件想要提供一个新的命令kubectl-foo
,它将被命名为kubectl-foo
,并位于用户路径的某个地方
示例插件可以如下所示:
#!/bin/bash
# optional argument handling
if [[ "$1" == "version" ]]
then
echo "1.0.0"
exit 0
fi
# optional argument handling
if [[ "$1" == "config" ]]
then
echo $KUBECONFIG
exit 0
fi
echo "I am a plugin named kubectl-foo"
之后,您只需将其设置为可执行chmod+x./kubectl foo
,并将其移动到路径mv./kubectl foo/usr/local/bin
现在您可以通过kubectl foo
调用它:
$ kubectl foo
I am a plugin named kubectl-foo
所有参数和标志都按原样传递给可执行文件:
$ kubectl foo version
1.0.0
您可以在Kubernetes文档中阅读更多关于kubectl插件的信息。这可以通过创建并向kubectl添加插件来完成 您可以用任何编程语言或脚本编写插件,以允许您编写命令行命令 不需要安装插件或预加载。插件可执行文件从
kubectl
二进制文件接收继承的环境。插件根据其名称确定希望实现的命令路径。例如,一个插件想要提供一个新的命令kubectl-foo
,它将被命名为kubectl-foo
,并位于用户路径的某个地方
示例插件可以如下所示:
#!/bin/bash
# optional argument handling
if [[ "$1" == "version" ]]
then
echo "1.0.0"
exit 0
fi
# optional argument handling
if [[ "$1" == "config" ]]
then
echo $KUBECONFIG
exit 0
fi
echo "I am a plugin named kubectl-foo"
之后,您只需将其设置为可执行chmod+x./kubectl foo
,并将其移动到路径mv./kubectl foo/usr/local/bin
现在您可以通过kubectl foo
调用它:
$ kubectl foo
I am a plugin named kubectl-foo
所有参数和标志都按原样传递给可执行文件:
$ kubectl foo version
1.0.0
您可以在Kubernetes文档中阅读更多关于kubectl插件的信息
kubectl
命令,并在新的子进程中启动它,就像您通过shell脚本所做的那样。有关更多信息,请参阅go中的exec
程序包:
这对我们来说效果很好,kubectl通常有-o
-参数,用于控制输出格式,因此可以返回机器可读的文本
已经有一些开源项目使用这种方法:
kubectl apply
所做的。
也许一种可能的方法是调试代码,看看is能做些什么
kubectl
命令,并在新的子进程中启动它,就像通过shell脚本所做的那样。有关更多信息,请参阅go中的exec
包:
这对我们来说效果很好,kubectl通常有-o
-参数,用于控制输出格式,因此可以返回机器可读的文本
已经有一些开源项目使用这种方法:
kubectl apply
所做的。
也许一种可能的方法是调试代码,看看is能做些什么。
应仅从命令行使用kubectl
- 但是,您可以使用某种形式的exec(例如python中的
)将其包装在代码中,golangos.system
”中也会存在类似的情况,但这种方法是肮脏的import“os/exec
- 您需要在代码中使用客户端库来执行操作
- 客户端库的列表为
应仅从命令行使用kubectl
- 但是,您可以使用某种形式的exec(例如python中的
)将其封装在代码中,类似的os.system