使用证书验证Kubernetes API(NodeJS)客户端未成功
我在谷歌云中部署了一个Kubernetes集群,并试图使用Kubernetes客户端访问它 为此,我们需要使用集群进行身份验证。我试着只使用方法。我得到以下错误:使用证书验证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,在这里我不能将证书存储在文件中。这样做,我得
{ [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行得通。谢谢老兄!!