配置创建证书
我们将使用 CloudFlare's PKI 工具 cfssl 来配置 PKI Infrastructure,然后使用它去创建 Certificate Authority(CA), 并为 etcd、kube-apiserver、kubelet 以及 kube-proxy 创建 TLS 证书。
Certificate Authority
本节创建用于生成其他 TLS 证书的 Certificate Authority。
新建 CA 配置文件
cat > ca-config.json <<EOF
{
"signing": {
"default": {
"expiry": "8760h"
},
"profiles": {
"kubernetes": {
"usages": ["signing", "key encipherment", "server auth", "client auth"],
"expiry": "8760h"
}
}
}
}
EOF新建 CA 凭证签发请求文件:
生成 CA 凭证和私钥:
结果将生成以下两个文件:
client 与 server 凭证
本节将创建用于 Kubernetes 组件的 client 与 server 凭证,以及一个用于 Kubernetes admin 用户的 client 凭证。
Admin 客户端凭证
创建 admin client 凭证签发请求文件:
创建 admin client 凭证和私钥:
结果将生成以下两个文件
Kubelet 客户端凭证
Kubernetes 使用 special-purpose authorization mode(被称作 Node Authorizer)授权来自 Kubelet 的 API 请求。为了通过 Node Authorizer 的授权, Kubelet 必须使用一个署名为 system:node:<nodeName> 的凭证来证明它属于 system:nodes 用户组。本节将会给每台 worker 节点创建符合 Node Authorizer 要求的凭证。
给每台 worker 节点创建凭证和私钥:
结果将产生以下几个文件:
Kube-controller-manager 客户端凭证
结果将产生以下几个文件:
Kube-proxy 客户端凭证
结果将产生以下两个文件:
kube-scheduler 证书
结果将产生以下两个文件:
Kubernetes API Server 证书
为了保证客户端与 Kubernetes API 的认证,Kubernetes API Server 凭证 中必需包含 kubernetes-the-hard-way 的静态 IP 地址。
首先查询 kubernetes-the-hard-way 的静态 IP 地址:
创建 Kubernetes API Server 凭证签发请求文件:
创建 Kubernetes API Server 凭证与私钥:
结果产生以下两个文件:
Service Account 证书
结果将生成以下两个文件
分发客户端和服务器证书
将客户端凭证以及私钥复制到每个工作节点上:
将服务器凭证以及私钥复制到每个控制节点上:
kube-proxy、kube-controller-manager、kube-scheduler和kubelet客户端凭证将会在下一节中用来创建客户端签发请求文件。
最后更新于