Javascript 通过https验证Google Kubernetes群集证书?
我在尝试访问Google Kubernetes引擎上托管的Kubernetes集群时有点迷茫 我想使用集群证书对提供的kubernetes端点进行身份验证,以便可以运行对kubernetes API的API请求,例如创建部署 我正在尝试从外部API(从一个NodeJS应用程序,托管在google app engine上)创建部署,我将在不同的kubernetes集群上自动创建部署,不一定在同一个google项目中 我曾经使用basic auth对kubernetes api进行身份验证,这很简单,我所需要的只是集群的用户名和密码,然后对两者进行base64编码并将其放入身份验证头中。我用axios做的,一点问题都没有 现在我想切换到使用客户端证书,我想我缺乏一些理解 我想我需要获得集群提供的端点ip,下载google提供的集群证书。。。看起来是这样的: …可能是base64编码并将其保存为.crt、.cert或???.pem文件,然后使用httpagent将axios指向该文件?(我尝试将原始数据保存为.crt和.cert文件,并将其设置为httpagent,但这并不令人惊讶地奏效) 我是否需要某种类型的客户端/服务器密钥对来获得证书,或者可能需要API密钥 我还阅读了一些关于将承载令牌设置为授权头的内容,我想这需要与证书配对,但我不确定在哪里可以找到/生成此令牌 如果有人能帮我解决这个模糊的问题我会非常感激 提前谢谢Javascript 通过https验证Google Kubernetes群集证书?,javascript,node.js,kubernetes,axios,google-kubernetes-engine,Javascript,Node.js,Kubernetes,Axios,Google Kubernetes Engine,我在尝试访问Google Kubernetes引擎上托管的Kubernetes集群时有点迷茫 我想使用集群证书对提供的kubernetes端点进行身份验证,以便可以运行对kubernetes API的API请求,例如创建部署 我正在尝试从外部API(从一个NodeJS应用程序,托管在google app engine上)创建部署,我将在不同的kubernetes集群上自动创建部署,不一定在同一个google项目中 我曾经使用basic auth对kubernetes api进行身份验证,这很简单
另外,我一直在尝试破解K8s文档,我想我已经接近了,但我仍然不确定我在看的是正确的文档:我不确定使用手动身份验证是否最适合这种情况,因为Kubernetes引擎的一个好功能是它会自动为您提供kubectl的身份验证配置,通过“gcloud容器群集获取凭据”命令。 还有一些资源(如连接到另一个集群)是通过GCP IAM权限而不是Kubernetes内部控制的。
我建议您深入查看此页面:
这也应该为您处理证书
一般来说,我建议您先查看GKE文档,然后再查看kubernetes文档,因为GKE不仅是kubernetes文档,而且它还可以使管理某些事情变得更简单。我不确定使用手动身份验证是否最适合这种情况,Kubernetes引擎的一个好特性是,它将通过“gcloud container clusters get credentials”命令自动为kubectl提供身份验证配置。 还有一些资源(如连接到另一个集群)是通过GCP IAM权限而不是Kubernetes内部控制的。
我建议您深入查看此页面:
这也应该为您处理证书
一般来说,我建议您在kubernetes one之前先查看GKE文档,因为GKE不仅是kubernetes,而且它还可以让管理某些事情变得更容易。我已经解决了这个问题,我想我会发布一个答案,以防有人遇到我的情况,需要参考 答案是很好的,我认为这是最安全的心态,最好将一切都放在谷歌环境内部。但在我的例子中,即使只是为了测试,我也确实需要通过https从另一个域与kubernetes API进行接口 事实证明,这比我预期的要简单,我需要做的不是使用CA证书,而是从google cloud shell获取一个服务帐户令牌,并将其放在授权头中(非常类似于基本身份验证)。(此外,我应该使用服务帐户的客户端证书检查kubernetes端点的有效性,但我没有这样做。) 进入google cloud shell并通过相关集群的身份验证后,运行以下操作:
kubectl获取服务帐户
kubectl获取服务帐户默认值-o yaml
kubectl get secret-default-token-some\u id\u string-o yaml
kubectl create clusterrolebinding default servicecomport admin--clusterrole=cluster admin--servicecomport=default:default
授权:持票人
现在,您可以直接调用kubernetes api,例如,创建或删除部署
如上所述,证书在第3点中也作为base64编码字符串提供,可用于验证kubernetes端点,但我还没有对此进行测试(肯定是更安全的方法)
此外,我在nodejs脚本中进行http调用,我必须设置一个环境变量process.env.NODE\u TLS\u REJECT\u UNAUTHOR