kubernetes 中使用了大量的證書,本文不會試圖覆蓋到所有可能使用到的證書,但會討論到主要的證書。理解了這些證書的使用方法和原理後,也能很快理解其他可能遇到的證書檔案。下圖標識出了在 kubernetes 中主要使用到的證書和其使用的位置:
kubernetes 中使用到的主要證書
上圖中使用序號對證書進行了標註。圖中的箭頭表明了元件的呼叫方向,箭頭所指方向為服務提供方,另一頭為服務呼叫方。為了實現 tls 雙向認證,服務提供方需要使用乙個伺服器證書,服務呼叫方則需要提供乙個客戶端證書,並且雙方都需要使用乙個 ca 證書來驗證對方提供的證書。為了簡明起見,上圖中只標註了證書使用方提供的證書,並沒有標註證書的驗證方驗證使用的 ca 證書。圖中標註的這些證書的作用分別如下:
etcd 集群中各個節點之間相互通訊使用的證書。由於乙個 etctd 節點既為其他節點提供服務,又需要作為客戶端訪問其他節點,因此該證書同時用作伺服器證書和客戶端證書。
etcd 集群向外提供服務使用的證書。該證書是伺服器證書。
kube-apiserver 作為客戶端訪問 etcd 使用的證書。該證書是客戶端證書。
kube-apiserver 對外提供服務使用的證書。該證書是伺服器證書。
kube-controller-manager 作為客戶端訪問 kube-apiserver 使用的證書,該證書是客戶端證書。
kube-scheduler 作為客戶端訪問 kube-apiserver 使用的證書,該證書是客戶端證書。
kube-proxy 作為客戶端訪問 kube-apiserver 使用的證書,該證書是客戶端證書。
kubelet 作為客戶端訪問 kube-apiserver 使用的證書,該證書是客戶端證書。
管理員使用者通過 kubectl 訪問 kube-apiserver 使用的證書,該證書是客戶端證書。
kubelet 對外提供服務使用的證書。該證書是伺服器證書。
kube-apiserver 作為客戶端訪問 kubelet 採用的證書。該證書是客戶端證書。
kube-controller-manager 用於生成和驗證 service-account token 的證書。該證書並不會像其他證書一樣用於身份認證,而是將證書中的公鑰/私鑰對用於 service account token 的生成和驗證。kube-controller-manager 會用該證書的私鑰來生成 service account token,然後以 secret 的方式載入到 pod 中。pod 中的應用可以使用該 token 來訪問 kube-apiserver, kube-apiserver 會使用該證書中的公鑰來驗證請求中的 token。我們將在文中稍後部分詳細介紹該證書的使用方法。
k8s中的PKI證書
kubernetes需要pki證書才能進行基於tls的身份驗證,如果使用kubeadm安裝的kubernetes,則會自動生成集群所需要的證書。集群中是如何使用證書 etcd 還實現了雙向 tls 來對客戶端和對其他對等節點進行身份驗證。單根ca 可以建立乙個單根ca,有管理員控制它,該ca可以建立...
在k8s中使用harbor倉庫
將每個node節點上的docker同樣需要配置可信任倉庫 vi etc docker daemon.json 修改為 重啟docker systemctl restart docker 建立 kubectl create secret docker registry registry secret ...
k8s證書自簽筆記
獲取元件 wget wget wget 建立乙個名為tls的資料夾,並將元件檔案移動到該資料夾下,同時新增可習性許可權 建立tls資料夾 mkdir p tls 移動檔案 mv cfssl linux amd64 tls cfssl mv cfssljson linux amd64 tls cfss...