Kubernetes使用哪个证书和密钥签署证书签名请求?
我试图为新用户自动签署Kubernetes证书。Kubernetes使用哪个证书和密钥签署证书签名请求?,kubernetes,certificate,kubectl,x509,Kubernetes,Certificate,Kubectl,X509,我试图为新用户自动签署Kubernetes证书。 官方文件()建议使用Kubectl。他们特别建议使用以下命令: kubectl证书批准csr\u名称 并通过以下方式获得base64编码证书: kubectl获取csr/csr\u名称-o yaml 并查看状态.certificate字段。因为我可以访问集群证书(at/etc/kubernetes/pki),而且我想进一步自动化这个过程,所以我想知道kubernetes在签名过程中使用了哪个证书和密钥。我尝试了apiserver、ca和kubea
官方文件()建议使用Kubectl。他们特别建议使用以下命令:
kubectl证书批准csr\u名称
并通过以下方式获得base64编码证书:
kubectl获取csr/csr\u名称-o yaml
并查看状态.certificate
字段。因为我可以访问集群证书(at/etc/kubernetes/pki),而且我想进一步自动化这个过程,所以我想知道kubernetes在签名过程中使用了哪个证书和密钥。我尝试了apiserver、ca和kubeadmin(.crt和.key)以及openssl,如下所示:
opensslx509-req my.csr-days 365-CA/etc/kubernetes/*.crt-CAkey/etc/kubernetes/*.key-CAcreateserial-out my.crt
其中,*.crt
和*.key
是上述各种文件。但结果总是不同于kubectl指挥部的结果。知道我错过了什么吗
提前谢谢 目前的答案非常片面 1.etcd、kube apiserver、kube控制器管理器、kube调度程序、kubelet和kube代理的CA 因为我可以访问群集证书(在 /etc/kubernetes/pki),因为我想进一步自动化 进程我想知道使用哪个证书和密钥 Kubernetes在签名过程中 有一个很好的教程,可以让您自己检查、测试和尝试如何使用手动创建核心资源的所有证书来手动创建kubernetes群集 您将使用CloudFlare的PKI提供PKI基础架构 然后使用它来引导证书颁发机构,以及 为以下组件生成TLS证书:etcd, kube apiserver、kube控制器管理器、kube调度程序、kubelet和 库贝代理 您将生成Kubernetes配置文件,也称为 kubeconfigs,使Kubernetes客户端能够定位和 向Kubernetes API服务器进行身份验证 2.新用户创建 你可以作为参考。复制粘贴历史记录,以防原始帖子被删除 您可以使用集群中的内置CA来创建客户端 证书。有关如何使用CA的背景信息: 假设您有一个user.json
{
"CN": "mfrank",
"key": {
"algo": "rsa",
"size": 4096
},
"names": [{
"O": "mfrank",
"email": "some@email"
}]
}
然后,您可以为此生成CSR。在本例中,我使用cfssl
生成CSR:
您现在可以使用kubectl为集群提交CSR:
解码它:
现在可以使用client-key.pem和client.pem构建
库贝肯
然后,您可以在集群上创建RBAC角色索引,并将其分配给
–user=mfrank或–group=mfrank(假设您使用了“O”:“mfrank”)
非常感谢您花时间给出这么好的答案!
cfssl genkey user.json | cfssljson -bare client
cat <<EOF | kubectl create -f -
apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
name: mfrank
spec:
groups:
- system:authenticated
- mfrank
request: $(cat client.csr | base64 | tr -d '\n')
usages:
- digital signature
- key encipherment
- client auth
EOF
kubectl certificate approve mfrank
kubectl get csr mfrank -o jsonpath='{.status.certificate}' | base64 -d > client.pem