配置創建證書
我們將使用 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客戶端憑證將會在下一節中用來創建客戶端簽發請求文件。
Last updated