已批准 Kubernetes CSR,但证书未显示在状态中



所以我经历了生成RSA密钥的过程,为CSR创建YAML,使用kubectl在Minikube中创建CSR,批准了证书。

但是,当我尝试使用kubectl get csr my-csr -o jsonpath='{.status.certificate}'下载证书时,我得到的结果为空。

当我做一个kubectl get csr my-csr -o yaml来获取更多信息时,这就是我看到的:

status:
conditions:
- lastUpdateTime: "2020-01-17T20:17:20Z"
message: This CSR was approved by kubectl certificate approve.
reason: KubectlApprove
type: Approved

我期待一个带有 base64 编码字符串的证书属性,我将解码该属性以获取用于客户端证书验证的证书。有人可以告诉我我做错了什么吗?

有关更多上下文,我正在尝试按照本教程中的说明进行操作

我遇到了类似的问题。当我使用以下命令检查时:

Kubectl Get SVC

似乎CSR的状态已批准,但尚未发布。知道如何解决它吗?

[更新] 我发现了问题。这是因为 kube-controller-manager 错过了这些选项:

--群集签名证书文件和 --群集签名密钥文件

就我而言,我有一个错别字错误

带拼写错误:签名者姓名:kubernetes.io/kube-apisever-client

WithoutTypo: signerName: kubernetes.io/kube-apiserver-client

并具有相同的结果.csr被批准并且未颁发证书。 在我更正错别字错误后,它已解决。

由于 CSR 不是特定于命名空间的,因此该命令看起来不错。 我做了同样的事情来获取证书,请检查您正确提供正确的 csr 名称。

其次,如果您没有提供名称,并尝试获取所有 CSR 详细信息,则需要通过其他.items[*]更改密钥结构

kubectl get csr -o jsonpath='{.items[*].status.certificate}'

我有一种感觉,你错过了 csr 名称my-csr或者名称与搜索不匹配(错别字?仔细检查。

这个错误必须出现。从文档中

Permitted subjects - organizations are exactly ["system:nodes"], common name starts with "system:node:".

因此,解决方案是在证书生成中添加主题 O=system:nodes,并将"system:node:"附加到您的服务名称中。

例如。openssl req -new -key server.key -out server.csr -subj "/O=system:nodes/CN=system:node:colortokens-bgl.csp.svc" -config server.conf

验证您的控制器管理器配置,必须为控制器管理器提供 --cluster-signing-cert-file 和 --cluster-signing-key-file config,以便叹息 CSR。

https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/#kube-controller-manager-configuration

前任:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
controllerManager:
extraArgs:
cluster-signing-cert-file: /etc/kubernetes/pki/ca.crt
cluster-signing-key-file: /etc/kubernetes/pki/ca.key

相关内容

  • 没有找到相关文章

最新更新