Google 容器集群作为配置

Kci*_*naY 2 go google-cloud-platform kubernetes google-kubernetes-engine kubernetes-go-client

我正在尝试将kubernetes go-client与 cloud.google.com/go/container 一起使用。我使用 google cloud go 容器包创建集群,然后我想使用 go-client 在该集群上部署。go-client 给出的集群外示例使用kube 配置文件来获取集群的凭据。但由于我刚刚在应用程序中创建了这个集群,所以我没有\xe2\x80\x99t 有该配置文件。

\n\n

如何使用“google.golang.org/genproto/googleapis/container/v1”集群设置 \xe2\x80\x9ck8s.io/client-go/rest\xe2\x80\x9d 配置?必填字段有哪些?下面的代码是我目前拥有的代码(没有显示实际的 CA 证书)。

\n\n
func getConfig(cluster *containerproto.Cluster) *rest.Config {\n    return &rest.Config{\n        Host:     "https://" + cluster.GetEndpoint(),\n        TLSClientConfig: rest.TLSClientConfig{\n            Insecure: false,\n            CAData: []byte(`-----BEGIN CERTIFICATE-----\n                ...\n                -----END CERTIFICATE-----`),\n        },\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

它会导致以下错误:x509:由未知颁发机构签名的证书。所以显然缺少一些东西。\n任何其他方法都非常受欢迎!提前致谢

\n

Kci*_*naY 5

ClientCertificate、ClientKey 和 ClusterCaCertificate 需要按照此处所述进行解码

func CreateK8sClientFromCluster(cluster *gkev1.Cluster) {
    decodedClientCertificate, err := base64.StdEncoding.DecodeString(cluster.MasterAuth.ClientCertificate)
    if err != nil {
        fmt.Println("decode client certificate error:", err)
        return
    }
    decodedClientKey, err := base64.StdEncoding.DecodeString(cluster.MasterAuth.ClientKey)
    if err != nil {
        fmt.Println("decode client key error:", err)
        return
    }
    decodedClusterCaCertificate, err := base64.StdEncoding.DecodeString(cluster.MasterAuth.ClusterCaCertificate)
    if err != nil {
        fmt.Println("decode cluster CA certificate error:", err)
        return
    }

    config := &rest.Config{
        Username: cluster.MasterAuth.Username,
        Password: cluster.MasterAuth.Password,
        Host:     "https://" + cluster.Endpoint,
        TLSClientConfig: rest.TLSClientConfig{
            Insecure: false,
            CertData: decodedClientCertificate,
            KeyData:  decodedClientKey,
            CAData:   decodedClusterCaCertificate,
        },
    }

    clientset, err := kubernetes.NewForConfig(config)
    if err != nil {
        fmt.Printf("failed to get k8s client set from config: %s\n", err)
        return
    }
}
Run Code Online (Sandbox Code Playgroud)