我在谷歌云中部署了一个Kubernetes群集,并尝试使用kubernetes客户端Kubernetes NodeJS API访问它。
为此,我们需要使用群集进行身份验证。我尝试仅使用 Username and Password 方法。我收到以下错误:
{ [Error: unable to verify the first certificate] code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' }
然后我尝试使用CAcert, ClientCert and ClientKey进行身份验证。我基本上硬编码键而不是从文件中导入它。我从Lambda函数调用此API,我无法将证书存储在文件中。这样做,我得到以下错误:
[Error: error:0906D06C:PEM routines:PEM_read_bio:no start line]
我的直觉是只有密钥才能进行身份验证。但我认为我对证书做错了。我是否需要创建一些其他证书,或者使用证书的方法是错误的?
答案:
请参阅 Robert Bailey的评论。我错过了 Base64 的事情。添加它,我可以成功验证kubernetes集群并显示和部署新的pod等,
答案 0 :(得分:1)
为此,我们需要使用群集进行身份验证。我试过用的只是 用户名和密码方法。我收到以下错误:
查看NodeJS客户端,我看不到提供集群CA证书以及用户名和密码的方法,因此除非您将strictSSL
设置为false,否则此错误消息似乎是合理的(您的系统是说它不信任服务器提供的证书,这是正确的,因为它是一个自签名的证书颁发机构)。您可以通过将群集CA证书安装到系统证书根存储中来解决此问题,但使用不同的身份验证方法(并针对NodeJS客户端提交错误)似乎更可取。
然后我尝试使用CAcert,ClientCert和 ClientKey。我基本上硬编码键而不是从中导入它 文件。
您是否也尝试导入文件(进行比较)?看起来这是一个解析错误与您指定PEM块的方式,并且库可以更好地从文件而不是内联数据读取块。
我的直觉是只有密钥才能进行身份验证。但我觉得 我对证书做错了。我需要创建一些 其他证书或使用证书的方法是 错了?
使用用户名/密码或客户端密钥可以进行身份验证。 NodeJS库还允许您指向kubeconfig
文件,该文件应允许您指定用户名/密码以及群集CA证书,以便您可以安全地连接到API端点(如果要使用基本身份验证)证书。