当前位置: 首页 > 知识库问答 >
问题:

谷歌容器集群配置

计泉
2023-03-14

我正在尝试将kubernetes go客户端与云一起使用。谷歌。com/go/container。我使用GoogleCloudGo容器包创建集群,然后我想使用go客户端在集群上部署。go客户端给出的集群外示例使用kube配置文件获取集群的凭据。但是由于我只是在我的应用程序中创建了这个集群,所以我没有那个配置文件。

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

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

它导致以下错误:x509:由未知授权机构签署的证书。所以很明显,我们缺少了一些东西。任何其他方法都是非常受欢迎的!提前谢谢

共有2个答案

黄君博
2023-03-14

我在这里回答了一个非常类似的问题:使用客户机go?访问GKE集群之外的Kubernetes GKE集群?。

基本上,简而言之,推荐的方法是:

  1. 创建谷歌云IAM服务帐户下载其json密钥
越霖
2023-03-14

客户端证书、客户端密钥和群集证书需要按此处所述进行解码

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
    }
}
 类似资料:
  • 问题内容: 我有一个运行Node.js的api服务器,该服务器正在使用它的集群模块,并且测试看起来还不错。现在,我们的IT部门希望转而使用令我感到高兴的Docker容器,但除了玩转之外,我从未真正使用过它。但是我有一个想法,Node.js应用程序在单个Docker进程中运行,因此集群模块并不是最好的,因为单个Docker进程可能是安装过程中的一个慢点,直到在该进程中拆分请求为止通过集群模块。 因此

  • 具体到基于Docker的部署,这两者之间有什么区别?由于Google App Engine Flexible现在也支持基于Dockerfile的部署,而且它也是完全管理的服务,所以它似乎比在Container Engine上配置Kubernetes部署更可取,不是吗? 有哪些用例更倾向于使用Google容器引擎而不是灵活的应用引擎?

  • 注: 内容翻译自 Run etcd clusters inside containers 下列指南展示如何使用 static bootstrap process 来用rkt和docker运行 etcd 。 rkt 运行单节点 etcd 下列 rkt 运行命令将在端口 2379 上暴露 etcd 客户端API,而在端口 2380上暴露伙伴API。 当配置 etcd 时使用 host IP地址。 ex

  • 我找不到任何关于如何使用/实现GTM谷歌内容实验的答案。 我目前已经用GA代码设置了一个GTM容器,在实验的原始页面中,我在html标记的开头有Google实验代码。我面临的问题是,并非所有用户都被计入谷歌分析实验报告。 在GTM中使用谷歌内容实验仍然是不可能的吗?(如何在Google Tag Manager中运行Google实验-似乎有点老了)

  • 问题内容: 我需要将django应用程序与直观的google-maps界面集成在一起,以用于无线电调度的保安人员/ emt。 我已经在使用GeoDjango,尽管看起来对于特定用途可能有点过大。无论如何,它已经使服务器上的地理空间处理变得像我所需要的那样容易。 但是我的JavaScript足够弱,而不必自己构建ajax rpc层。有没有什么工具或技术可以帮助这一点? 编辑: 澄清一下,我不是在问如