【问题标题】:Approved Kubernetes CSR, but certificate not shown in status已批准 Kubernetes CSR,但证书未显示在状态中
【发布时间】:2020-05-04 19:29:25
【问题描述】:

所以我已经完成了生成 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 编码字符串的证书属性,我将对其进行解码以获得用于客户端证书验证的证书。谁能告诉我我做错了什么?

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

【问题讨论】:

    标签: kubernetes kubectl client-certificates csr


    【解决方案1】:

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

    kubectl 获取服务

    csr 的状态好像是已批准,但未发布。知道如何解决吗?

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

    --cluster-signing-cert-file 和--cluster-signing-key-file

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

        就我而言,我有一个拼写错误

        签名者名称:kubernetes.io/kube-apisever-client

        并得到相同的结果。 csr 已获批准,但未颁发证书。在我更正错字错误后解决了。

        【讨论】:

          【解决方案4】:

          这个错误一定会出现。来自文档

          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

          【讨论】:

            【解决方案5】:

            验证您的控制器管理器配置,控制器管理器必须提供--cluster-signing-cert-file 和--cluster-signing-key-file 配置以感叹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
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-02-17
              • 1970-01-01
              • 2019-06-30
              • 1970-01-01
              • 2021-10-12
              • 2021-04-03
              相关资源
              最近更新 更多