如何使用来自工作节点的证书作为用户运行远程代码

时间:2018-06-18 12:33:19

标签: ssl kubernetes kubectl

我在Master中创建了一个用户 首先,我为他创建了一个密钥和证书:dan.keydan.crt

然后我在Kubernetes中创建了它:

 kubectl config set-credentials dan \ 
 --client-certificate=/tmp/dan.crt \
 --client-key=/tmp/dan.key 

这是~/.kube/config

users:
- name: dan
  user:
    as-user-extra: {}
    client-certificate: /tmp/dan.crt
    client-key: /tmp/dan.key 

我希望能够以我创建的用户身份从远程工作程序运行命令 我知道如何使用服务帐户令牌:

kubectl --server=https://192.168.0.13:6443 --insecure-skip-tls-verify=true --token="<service_account_token>" get pods

我将certifiacte和密钥复制到远程工作人员并运行:

[workernode tmp]$ kubectl --server=https://192.168.0.13:6443 --client-certificate=/tmp/dan.crt --client-key=/tmp/dan.key get pods
Unable to connect to the server: x509: certificate signed by unknown authority

我跟着这个问题:
kubectl unable to connect to server: x509: certificate signed by unknown authority
我试着像他写的那样:

kubectl proxy --address 0.0.0.0 --accept-hosts '.*'

但我还在接受:
Unable to connect to the server: x509: certificate signed by unknown authority

1 个答案:

答案 0 :(得分:0)

  

我将certifiacte和密钥复制到远程工作人员并运行:

     

[workernode tmp]$ kubectl --server=https://192.168.0.13:6443 --client-certificate=/tmp/dan.crt --client-key=/tmp/dan.key get pods

     

无法连接到服务器:x509:由未知权限签名的证书

您错过了关键数据,告诉kubectl如何信任该请求的https:部分,即--certificate-authority=/path/to/kubernetes/ca.pem

在使用--token=...时你没有遇到这个错误,因为--insecure-skip-tls-verify=true你绝对不应该这样做。

  

我试着写道:

     

kubectl proxy --address 0.0.0.0 --accept-hosts '.*'

     

但我仍在接受:

你从你正在阅读的任何文章中听到了错误的建议; --accept-hosts标志仅控制kubectl proxy将接受连接的远程主机名,并且与SSL任何事情无关。