Authentication 具有证书的Kubernetes身份验证
我正在尝试使用证书对本地托管的Kubernetes群集(v1.6.4)进行身份验证。 这需要在使用的上下文中参与 我遵循文件中关于Minikube的指导原则,该文件是我根据自己的场景改编的:Authentication 具有证书的Kubernetes身份验证,authentication,ssl,jenkins,kubernetes,kubernetes-security,Authentication,Ssl,Jenkins,Kubernetes,Kubernetes Security,我正在尝试使用证书对本地托管的Kubernetes群集(v1.6.4)进行身份验证。 这需要在使用的上下文中参与 我遵循文件中关于Minikube的指导原则,该文件是我根据自己的场景改编的: 将客户端证书转换为PKCS: $ sudo openssl pkcs12 -export -out kubernetes.pfx -inkey /etc/kubernetes/pki/apiserver.key -in /etc/kubernetes/pki/apiserver.crt -certfile
$ sudo openssl pkcs12 -export -out kubernetes.pfx -inkey /etc/kubernetes/pki/apiserver.key -in /etc/kubernetes/pki/apiserver.crt -certfile /etc/kubernetes/pki/ca.crt -passout pass:jenkins
种类
:证书
证书
:上传PKCS#12证书
并上传文件kubernetes.pfx
Password
:jenkins
(在证书创建过程中指定)管理Jenkins
->添加新云
->Kubernetes
Kubernetes URL
:https://10.179.1.121:6443
(作为kubectl配置视图的输出)Kubernetes服务器证书密钥
:粘贴/etc/Kubernetes/pki/ca.crt的内容
禁用https证书检查
:已检查,因为测试设置没有签名证书Kubernetes命名空间
:尝试了default
和Kubernetes插件
凭证
:CN=kube-apiserver
(即上面创建的凭证)$ curl --insecure --cacert /etc/kubernetes/pki/ca.crt --cert kubernetex.pfx:secret https://10.179.1.121:6443
User "system:anonymous" cannot get at the cluster scope.
更详细的:
$ curl -v --insecure --cacert /etc/kubernetes/pki/ca.crt --cert kubernetex.pfx:secret https://10.179.1.121:6443
* About to connect() to 10.179.1.121 port 6443 (#0)
* Trying 10.179.1.121...
* Connected to 10.179.1.121 (10.179.1.121) port 6443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* skipping SSL peer certificate verification
* NSS: client certificate not found: kubernetex.pfx
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=kube-apiserver
* start date: Jun 13 11:33:55 2017 GMT
* expire date: Jun 13 11:33:55 2018 GMT
* common name: kube-apiserver
* issuer: CN=kubernetes
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 10.179.1.121:6443
> Accept: */*
>
< HTTP/1.1 403 Forbidden
< Content-Type: text/plain
< X-Content-Type-Options: nosniff
< Date: Tue, 05 Sep 2017 10:34:23 GMT
< Content-Length: 57
<
* Connection #0 to host 10.179.1.121 left intact
$curl-v——不安全——cacert/etc/kubernetes/pki/ca.crt——cert kubernetex.pfx:secrethttps://10.179.1.121:6443
*即将连接()到10.179.1.121端口6443(#0)
*正在尝试10.179.1.121。。。
*连接到10.179.1.121(10.179.1.121)端口6443(0)
*使用certpath:sql:/etc/pki/nssdb初始化NSS
*跳过SSL对等证书验证
*NSS:未找到客户端证书:kubernetex.pfx
*使用TLS\u ECDHE\u RSA\u和\u AES\u 128\u GCM\u SHA256的SSL连接
*服务器证书:
*主题:CN=kube apiserver
*开始日期:2017年6月13日11:33:55 GMT
*到期日期:2018年6月13日11:33:55 GMT
*通用名称:kube apiserver
*发行人:CN=kubernetes
>GET/HTTP/1.1
>用户代理:curl/7.29.0
>主持人:10.179.1.121:6443
>接受:*/*
>
我还建立了一个ServiceAccount:
$ kubectl describe serviceaccount --namespace=kubernetes-plugin
Name: default
Namespace: kubernetes-plugin
Labels: <none>
Annotations: <none>
Image pull secrets: <none>
Mountable secrets: default-token-6qwj1
Tokens: default-token-6qwj1
Name: jenkins
Namespace: kubernetes-plugin
Labels: <none>
Annotations: <none>
Image pull secrets: <none>
Mountable secrets: jenkins-token-1d623
Tokens: jenkins-token-1d623
$kubectl描述serviceaccount--namespace=kubernetes插件
名称:默认值
名称空间:kubernetes插件
标签:
注释:
图像提取秘密:
可装载机密:默认-token-6qwj1
令牌:default-token-6qwj1
姓名:詹金斯
名称空间:kubernetes插件
标签:
注释:
图像提取秘密:
可安装的秘密:jenkins-token-1d623
代币:jenkins-token-1d623
处理相关问题,建议使用ServiceAccount或证书,但后一个问题的答案缺乏关于如何将RBAC配置文件绑定到该证书的详细信息。似乎未涵盖此用例。警告:读取服务帐户令牌时出错表明用于加密服务帐户令牌的密钥在kube apiserver(--服务帐户密钥文件)和kube controller manager(--服务帐户私钥文件)之间不同。如果kube apiserver命令行没有指定--service account key file,那么将使用--tls private key file的值,我怀疑这就是问题所在
我建议始终明确设置kube apiserver——服务帐户密钥文件,以匹配kube controller manager——服务帐户私钥文件的值。我使用kubeadm创建了集群,因此不需要手动修改这些参数。有没有建议在不重新启动kube apiserver的情况下修复此问题?