Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用证书验证Kubernetes API(NodeJS)客户端未成功_Kubernetes_Google Cloud Platform_Google Kubernetes Engine_Kubectl - Fatal编程技术网

使用证书验证Kubernetes API(NodeJS)客户端未成功

使用证书验证Kubernetes API(NodeJS)客户端未成功,kubernetes,google-cloud-platform,google-kubernetes-engine,kubectl,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,Kubectl,我在谷歌云中部署了一个Kubernetes集群,并试图使用Kubernetes客户端访问它 为此,我们需要使用集群进行身份验证。我试着只使用方法。我得到以下错误: { [Error: unable to verify the first certificate] code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' } 然后,我尝试使用。我基本上是对密钥进行硬编码,而不是从文件中导入密钥。我从Lambda函数调用这个API,在这里我不能将证书存储在文件中。这样做,我得

我在谷歌云中部署了一个Kubernetes集群,并试图使用Kubernetes客户端访问它

为此,我们需要使用集群进行身份验证。我试着只使用方法。我得到以下错误:

{ [Error: unable to verify the first certificate] code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' }
然后,我尝试使用。我基本上是对密钥进行硬编码,而不是从文件中导入密钥。我从Lambda函数调用这个API,在这里我不能将证书存储在文件中。这样做,我得到以下错误:

[Error: error:0906D06C:PEM routines:PEM_read_bio:no start line]
我的直觉是,只有使用密钥才能进行身份验证。但我认为我的证书有问题。我是否需要在此基础上创建其他证书,或者使用证书的方法是否错误

回答:

请参见罗伯特·贝利的评论。我错过了Base64这件事。此外,我还可以成功地通过kubernetes集群的身份验证,并显示和部署新的POD等

为此,我们需要使用集群进行身份验证。我试着只使用 用户名和密码方法。我得到以下错误:

{ [Error: unable to verify the first certificate] code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' }
查看NodeJS客户端,我看不到提供集群CA证书以及用户名和密码的方法,因此除非将
strictSSL
设置为false,否则此错误消息似乎是合理的(您的系统表示它不信任服务器提供的证书,这是正确的,因为它是一个自签名证书颁发机构)。您可以通过将群集CA证书安装到系统证书根存储中,但使用不同的身份验证方法来解决此问题(并针对NodeJS客户端提交一个bug)似乎更可取

然后我尝试使用CAcert、ClientCert和 我基本上是硬编码键,而不是从 档案

您是否也尝试导入文件(用于比较)?您指定PEM块的方式似乎是一个解析错误,库可能会更好地从文件而不是内联数据中读取块

我的直觉是,只有使用密钥才能进行身份验证 我的证书有问题。我需要创建一些证书吗 其他证书的使用方法是 错了吗


应该可以使用用户名/密码或客户端密钥进行身份验证。NodeJS库还允许您指向
kubeconfig
文件,该文件应允许您指定用户名/密码以及群集CA证书,以便如果要使用基本身份验证凭据,您可以安全地连接到API端点ntials.

谢谢@Robert Bailey。如何获取客户端证书、CA和客户端密钥?我通过调用容器集群的nodeJS API来获取这些证书。因此,从响应JSON中,密钥和密码以JSON的形式发送回来。现在,如果我想存储这些证书,我应该创建一个文件并存储它。这是您推荐的吗?既然如此我是从AWS Lambda调用kubernetes API的,我认为使用kubernetes配置会很困难。你能推荐kubernetes的任何NodeJS API/客户端来验证和部署POD吗?如果你在Google容器引擎上运行,你可以从原始API中提取它们,或者从创建之后的
/kube/config
文件中提取它们调用
gcloud container clusters获取凭证
。您在JSON字段中的容器引擎API中得到的数据是一个base64编码的PEM块。因此,它可能可以执行类似于
“caCert”:Buffer.from(caCert,'base64')
的操作。我正在从MasterAuth字段提取密钥,我想
“caCert”:Buffer.from(caCert,'base64')
这应该行得通。我会试试的。太棒了!!@Robert Bailey。行得通,base64行得通。谢谢老兄!!