任务

Edit This Page

使用 kubeadm 进行证书管理

本页介绍如何使用 kubeadm 手动管理证书。

准备开始

这些是需要将其组织的证书基础机构集成到 kubeadm 构建的集群中的用户的高级主题。如果具有默认配置的 kubeadm 满足您的需求,您应该让 kubeadm 管理证书。

您应该熟悉Kubernetes 中的 PKI 证书和要求

使用证书 API 更新证书

Kubernetes 证书通常在一年后到期。

Kubeadm 可以使用kubeadm alpha certs renew命令更新证书;您应该只在控制平面节点上运行这些命令。

通常,这是通过加载磁盘CA证书和密钥并使用它们来颁发新证书来完成的。 如果证书树是自包含的,则此方法很有效。 然而,如果您的证书是外部管理的,您可能需要一个不同的方法。

作为替代方案,Kubernetes 提供了自己的用于管理证书的 API。 使用 kubeadm,您可以通过运行kubeadm alpha certs renew --use-api来使用此 API。

设置签名者

Kubernetes 证书颁发机构不是开箱即用。 你可以配置外部签名者,例如cert-manager,也可以使用内置签名者。 内置签名者是kube-controller-manager的一部分。 要激活内置签名者,请传递--cluster-signing-cert-file--cluster-signing-key-file参数。

您可以通过以下任何方式传递这些参数:

批准请求

如果您设置例如cert-manager等外部签名者,则会自动批准证书签名请求(CSRs)。 否者,您必须使用kubectl certificate命令手动批准证书。 以下 kubeadm 命令输出要批准的证书名称,然后缓慢等待批准发生:

sudo kubeadm alpha certs renew apiserver --use-api &
[1] 2890
[certs] certificate request "kubeadm-cert-kube-apiserver-ld526" created
kubectl certificate approve kubeadm-cert-kube-apiserver-ld526
certificatesigningrequest.certificates.k8s.io/kubeadm-cert-kube-apiserver-ld526 approved
[1]+  Done                    sudo kubeadm alpha certs renew apiserver --use-api

您可以使用kubectl get csr查看待处理证书列表。

使用 kubeadm 的证书请求

为了更好的与外部 CA 集成,kubeadm 还可以生成证书签名请求(CSR)。 CSR 表示向 CA 请求客户的签名证书。 在 kubeadm 术语中,通常由磁盘 CA 签名的任何证书都可以作为 CSR 生成。但是,CA 不能作为 CSR 生成。

您可以使用kubeadm init phase certs apiserver --csr-only创建单独的 CSR。 --csr-only标志只能应用于各个阶段。在所有证书到位之后, 您可以运行kubeadm init --external-ca

您可以传入一个带有--csr-dir的目录,将 CRS 输出到指定位置。 如果未指定--csr-dir,则使用默认证书目录(/etc/kubernetes/pki)。 CSR 和随附的私钥都在输出中给出。签署证书后,必须将证书和私钥复制到 PKI 目录(默认情况下为/etc/kubernetes/pki)。

更新证书

可以使用kubeadm alpha certs renew --csr-only更新证书。 与kubeadm init一样,可以使用--csr-dir标志指定输出目录。 要使用新证书,请将签名证书和私钥复制到 PKI 目录中(默认情况下为/etc/kubernetes/pki

证书使用

CSR 包含证书的名称、域和 IP,但不指定用法。 CA 颁发证书时,有责任指定[正确的证书用法][证书表] 。

CA 选择

Kubeadm 默认设置三个 CA。确保使用相应的 CA 对 CSR 进行签名。

反馈