第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 Go 客戶端 API 列出 Openshift 對象

通過 Go 客戶端 API 列出 Openshift 對象

Go
Qyouu 2021-12-20 10:58:43
嘗試編寫微服務(wù)來管理 Openshift 集群上的鏡像流。我閱讀了oc客戶端代碼以了解如何讀取我的kubeconfig和創(chuàng)建Client.我可以使用 Kubernetes 發(fā)出請求Client以獲取 Kubernetes 對象,例如 pod,但是我使用 Openshift 發(fā)出的任何請求都會Client返回一個空列表。我也是 Go 的新手,所以我確定我做錯了什么。這是我到目前為止所擁有的:package mainimport (    "fmt"    "log"    "github.com/spf13/pflag"    kapi "k8s.io/kubernetes/pkg/api"    "github.com/openshift/origin/pkg/cmd/util/clientcmd")func main() {    flags := pflag.FlagSet{}    factory := clientcmd.New(&flags)    osclient, kclient, err := factory.Clients()    if err != nil {        log.Fatalln("Error:", err)    }    config, _ := factory.ClientConfig()    fmt.Println("KClient config", config)    config, _ = factory.OpenShiftClientConfig.ClientConfig()    fmt.Println("OSClient config", config)    // Empty list!    projects, err := osclient.Projects().List(kapi.ListOptions{})    if err != nil {        log.Println("Error:", err)    } else {        fmt.Println("Projects", projects, len(projects.Items))    }    // Also empty list    buildconfigs, err := osclient.BuildConfigs("my-project").List(kapi.ListOptions{})    if err != nil {        log.Println("Error:", err)    } else {        fmt.Println("Buildconfigs", buildconfigs, len(buildconfigs.Items))    }    // Works!    pods, err := kclient.Pods("my-project").List(kapi.ListOptions{})    if err != nil {        log.Println("Error:", err)    } else {        fmt.Println("Pods", len(pods.Items))        for _, pod := range pods.Items {            fmt.Println(pod.ObjectMeta.Name)        }    }    // Permission error, as expected    namespaces, err := kclient.Namespaces().List(kapi.ListOptions{})    if err != nil {        log.Println("Error:", err)    } else {        fmt.Println("Namespaces", namespaces, len(namespaces.Items))    }}
查看完整描述

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。


查看完整回答
反對 回復(fù) 2021-12-20
  • 1 回答
  • 0 關(guān)注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號