证书链中的自签名证书

时间:2018-02-24 08:23:15

标签: node.js kubernetes

我在Kubernetes容器中运行node.js服务。我的服务使用服务帐户内的令牌从POD内部调用API服务器。我的代码就像这样

var fs = require('fs');
var tokenFile ='/var/run/secrets/kubernetes.io/serviceaccount/token';
var restCall = function(serviceUrl,reqMethod,callback){  
var token = "";

fs.readFile(tokenFile, 'utf8', function(err, data) {
  if (err) throw err;
  token ='Bearer '+data;
});

var serviceUrl = https://<clusterName>/api/v1/nodes      
var options = {
  url: serviceUrl,  
  headers: {
    'Content-Type': 'application/json',
    'Authorization': token            
  },
  method: reqMethod
};

我在回复时收到此错误

  

证书链中的自签名证书。

我可以通过rest客户端使用令牌进行调用,当我部署到容器时,它返回套接字连接错误

3 个答案:

答案 0 :(得分:0)

您使用https协议调用api,其中很可能证书未由外部CA签名。这个是正常的。在发出由其颁发的证书保护的服务之前,您应确保信任该CA。大多数kube配置程序都会为您提供CA证书,以便您可以将其添加到您的可信证书中,或者在某个参数中提供给客户。

另一方面,当你在你的kube群集中呼叫api时,应该可以访问http://kubernetes.default/api/v1/nodes之类的网址。

答案 1 :(得分:0)

尝试使用CA证书,您将在以下路径中获取

/var/run/secrets/kubernetes.io/serviceaccount/ca.crt

Radek Pieczonka在他的answer

中提到了这一点

答案 2 :(得分:0)

错过了传递此环境变量node_tls_unauthorized = 0导致身份验证问题