diff --git a/content/zh-cn/docs/setup/best-practices/certificates.md b/content/zh-cn/docs/setup/best-practices/certificates.md index dc16edc9ee2..f4c9cd8a8b6 100644 --- a/content/zh-cn/docs/setup/best-practices/certificates.md +++ b/content/zh-cn/docs/setup/best-practices/certificates.md @@ -15,8 +15,10 @@ weight: 50 Kubernetes 需要 PKI 证书才能进行基于 TLS 的身份验证。如果你是使用 @@ -60,7 +62,8 @@ Kubernetes 需要 PKI 才能执行以下操作: {{< note >}} 只有当你运行 kube-proxy 并要支持[扩展 API 服务器](/zh-cn/docs/tasks/extend-kubernetes/setup-extension-api-server/)时, @@ -75,7 +78,9 @@ etcd 还实现了双向 TLS 来对客户端和对其他对等节点进行身份 ## 证书存放的位置 {#where-certificates-are-stored} @@ -85,8 +90,11 @@ If you install Kubernetes with kubeadm, most certificates are stored in `/etc/ku ## 手动配置证书 {#configure-certificates-manually} @@ -98,7 +106,8 @@ See [Certificate Management with kubeadm](/docs/tasks/administer-cluster/kubeadm ### 单根 CA {#single-root-ca} @@ -113,7 +122,8 @@ Required CAs: | etcd/ca.crt,key | etcd-ca | For all etcd-related functions | | front-proxy-ca.crt,key | kubernetes-front-proxy-ca | For the [front-end proxy](/docs/tasks/extend-kubernetes/configure-aggregation-layer/) | -On top of the above CAs, it is also necessary to get a public/private key pair for service account management, `sa.key` and `sa.pub`. +On top of the above CAs, it is also necessary to get a public/private key pair for service account +management, `sa.key` and `sa.pub`. --> 需要这些 CA: @@ -153,39 +163,43 @@ Required certificates: 需要这些证书: -| 默认 CN | 父级 CA | O (位于 Subject 中) | 类型 | 主机 (SAN) | -|-------------------------------|---------------------------|----------------|----------------------------------------|---------------------------------------------| -| kube-etcd | etcd-ca | | server, client | ``, ``, `localhost`, `127.0.0.1` | -| kube-etcd-peer | etcd-ca | | server, client | ``, ``, `localhost`, `127.0.0.1` | -| kube-etcd-healthcheck-client | etcd-ca | | client | | -| kube-apiserver-etcd-client | etcd-ca | system:masters | client | | -| kube-apiserver | kubernetes-ca | | server | ``, ``, ``, `[1]` | -| kube-apiserver-kubelet-client | kubernetes-ca | system:masters | client | | -| front-proxy-client | kubernetes-front-proxy-ca | | client | | +| 默认 CN | 父级 CA |O(位于 Subject 中)| kind | 主机 (SAN) | +|-------------------------------|---------------------------|-------------------|------------------|-----------------------------------------------------| +| kube-etcd | etcd-ca | | server, client | ``, ``, `localhost`, `127.0.0.1` | +| kube-etcd-peer | etcd-ca | | server, client | ``, ``, `localhost`, `127.0.0.1` | +| kube-etcd-healthcheck-client | etcd-ca | | client | | +| kube-apiserver-etcd-client | etcd-ca | system:masters | client | | +| kube-apiserver | kubernetes-ca | | server | ``, ``, ``, `[1]` | +| kube-apiserver-kubelet-client | kubernetes-ca | system:masters | client | | +| front-proxy-client | kubernetes-front-proxy-ca | | client | | [1]: 用来连接到集群的不同 IP 或 DNS 名 (就像 [kubeadm](/zh-cn/docs/reference/setup-tools/kubeadm/) 为负载均衡所使用的固定 IP 或 DNS 名:`kubernetes`、`kubernetes.default`、`kubernetes.default.svc`、 `kubernetes.default.svc.cluster`、`kubernetes.default.svc.cluster.local`)。 -其中,`kind` 对应一种或多种类型的 [x509 密钥用途](https://pkg.go.dev/k8s.io/api/certificates/v1beta1#KeyUsage): +其中 `kind` 对应一种或多种类型的 x509 密钥用途,也可记录在 +[CertificateSigningRequest](/zh-cn/docs/reference/kubernetes-api/authentication-resources/certificate-signing-request-v1#CertificateSigningRequest) +类型的 `.spec.usages` 中: | kind | 密钥用途 | |--------|---------------------------------------------------------------------------------| -| server | 数字签名、密钥加密、服务端认证 | -| client | 数字签名、密钥加密、客户端认证 | +| server | 数字签名、密钥加密、服务端认证 | +| client | 数字签名、密钥加密、客户端认证 | {{< note >}} 上面列出的 Hosts/SAN 是推荐的配置方式;如果需要特殊安装,则可以在所有服务器证书上添加其他 SAN。 {{< /note >}} @@ -209,9 +224,11 @@ Hosts/SAN listed above are the recommended ones for getting a working cluster; i 对于 kubeadm 用户: @@ -233,22 +250,22 @@ Paths should be specified using the given argument regardless of location. 使用)。无论使用什么位置,都应使用给定的参数指定路径。 | 默认 CN | 建议的密钥路径 | 建议的证书路径 | 命令 | 密钥参数 | 证书参数 | |------------------------------|------------------------------|-----------------------------|----------------|------------------------------|-------------------------------------------| @@ -273,18 +290,19 @@ Same considerations apply for the service account key pair: 注意事项同样适用于服务帐户密钥对: -| 私钥路径 | 公钥路径 | 命令 | 参数 | -|------------------------------|-----------------------------|-------------------------|--------------------------------------| -| sa.key | | kube-controller-manager | --service-account-private-key-file | -| | sa.pub | kube-apiserver | --service-account-key-file | +| 私钥路径 | 公钥路径 | 命令 | 参数 | +|-------------------|------------------|-------------------------|--------------------------------------| +| sa.key | | kube-controller-manager | --service-account-private-key-file | +| | sa.pub | kube-apiserver | --service-account-key-file | 下面的例子展示了自行生成所有密钥和证书时所需要提供的文件路径。 这些路径基于[前面的表格](/zh-cn/docs/setup/best-practices/certificates/#certificate-paths)。 @@ -324,12 +342,12 @@ You must manually configure these administrator account and service accounts: 你必须手动配置以下管理员帐户和服务帐户: | 文件名 | 凭据名称 | 默认 CN | O (位于 Subject 中) | |-------------------------|----------------------------|--------------------------------|---------------------| @@ -340,7 +358,9 @@ You must manually configure these administrator account and service accounts: {{< note >}} `kubelet.conf` 中 `` 的值 **必须** 与 kubelet 向 apiserver 注册时提供的节点名称的值完全匹配。 有关更多详细信息,请阅读[节点授权](/zh-cn/docs/reference/access-authn-authz/node/)。 @@ -355,7 +375,7 @@ The value of `` for `kubelet.conf` **must** match precisely the value 1. 为每个配置运行下面的 `kubectl` 命令: -```shell +``` KUBECONFIG= kubectl config set-cluster default-cluster --server=https://:6443 --certificate-authority --embed-certs KUBECONFIG= kubectl config set-credentials --client-key .pem --client-certificate .pem --embed-certs KUBECONFIG= kubectl config set-context default-system --cluster default-cluster --user @@ -367,19 +387,19 @@ These files are used as follows: | filename | command | comment | |-------------------------|-------------------------|-----------------------------------------------------------------------| -| admin.conf | kubectl | Configures administrator user for the cluster | +| admin.conf | kubectl | Configures administrator user for the cluster | | kubelet.conf | kubelet | One required for each node in the cluster. | | controller-manager.conf | kube-controller-manager | Must be added to manifest in `manifests/kube-controller-manager.yaml` | | scheduler.conf | kube-scheduler | Must be added to manifest in `manifests/kube-scheduler.yaml` | --> 这些文件用途如下: -| 文件名 | 命令 | 说明 | +| 文件名 | 命令 | 说明 | |-------------------------|-------------------------|-----------------------------------------------------------------------| -| admin.conf | kubectl | 配置集群的管理员 | -| kubelet.conf | kubelet | 集群中的每个节点都需要一份 | -| controller-manager.conf | kube-controller-manager | 必需添加到 `manifests/kube-controller-manager.yaml` 清单中 | -| scheduler.conf | kube-scheduler | 必需添加到 `manifests/kube-scheduler.yaml` 清单中 | +| admin.conf | kubectl | 配置集群的管理员 | +| kubelet.conf | kubelet | 集群中的每个节点都需要一份 | +| controller-manager.conf | kube-controller-manager | 必需添加到 `manifests/kube-controller-manager.yaml` 清单中 | +| scheduler.conf | kube-scheduler | 必需添加到 `manifests/kube-scheduler.yaml` 清单中 |