1 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個贊
您曾經(jīng)如此接近,但問題很?。耗枰韵骂~外導(dǎo)入:
import _ "github.com/openshift/origin/pkg/api/install"
我不完全清楚導(dǎo)入的實(shí)際作用,但顯然它會導(dǎo)致將必要的附加功能鏈接到二進(jìn)制文件中,否則 OpenShift 客戶端將無法工作(返回空列表)。
所有 OpenShift 命令行工具都包含該導(dǎo)入,在撰寫本文時,許多命令行工具還包含以下部分/全部內(nèi)容:
import (
_ "github.com/openshift/origin/pkg/api/install"
_ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/autoscaling/install"
_ "k8s.io/kubernetes/pkg/apis/batch/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
)
最后,這是一個對我有用的完整代碼示例(針對 origin v3.6.0-alpha 更新):
package main
import (
"fmt"
_ "github.com/openshift/origin/pkg/api/install"
"github.com/openshift/origin/pkg/cmd/util/clientcmd"
"github.com/spf13/pflag"
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
func main() {
factory := clientcmd.New(pflag.CommandLine)
pflag.Parse()
oc, kc, err := factory.Clients()
if err != nil {
panic(err)
}
namespace, _, err := factory.DefaultNamespace()
if err != nil {
panic(err)
}
pods, err := kc.Core().Pods(namespace).List(v1.ListOptions{})
if err != nil {
panic(err)
}
for _, pod := range pods.Items {
fmt.Printf("Pod: %s\n", pod.Name)
}
buildconfigs, err := oc.BuildConfigs(namespace).List(v1.ListOptions{})
if err != nil {
panic(err)
}
for _, buildconfig := range buildconfigs.Items {
fmt.Printf("BuildConfig: %s\n", buildconfig.Name)
}
}
要運(yùn)行此示例,您當(dāng)前需要供應(yīng) OpenShift 及其依賴項。一種非常hacky的方法如下:
rm -rf vendor
mkdir -p vendor/github.com/openshift/origin
ln -s $GOPATH/src/github.com/openshift/origin/vendor/* vendor
ln -s $GOPATH/src/github.com/openshift/origin/vendor/github.com/* vendor/github.com
ln -s $GOPATH/src/github.com/openshift/origin/vendor/github.com/openshift/* vendor/github.com/openshift
ln -s $GOPATH/src/github.com/openshift/origin/pkg vendor/github.com/openshift/origin
最后,它旨在為 OpenShift 制作一個合適的獨(dú)立 Go 客戶端 - 積壓卡位于https://trello.com/c/PTDrY0GF/794-13-client-provide-go-client-similar-to- Kubernetes。
- 1 回答
- 0 關(guān)注
- 194 瀏覽
添加回答
舉報