配置創建證書

我們將使用 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-proxykube-controller-managerkube-schedulerkubelet 客戶端憑證將會在下一節中用來創建客戶端簽發請求文件。

下一步:配置和生成 Kubernetes 配置文件

Last updated