Kubernetes CKA課程筆記 42

建立User憑證,使一般User得以請求API Server — 實際Client帶著憑證連線至Cluster

ZONGRU Li
Nov 7, 2021

如前一篇最後終於得到Client端使用的hog可以使用的三個憑證檔:

  1. hog的Client端憑證私鑰:dev-hog.key
  2. hog的Clinet端憑證請求檔:dev-hog.csr
  3. hog的Client端憑證(簽署後)公鑰檔:dev-hog.crt
  • 接著就要透過這三個檔案連線至K8s Cluster
  • 首先先釐清一個概念,當執行kubectl指令如下時:
  • 執行指令所帶的身分是 →kubernetes-admin
  • 主要是因為預設kubectl會參照~/.kube/config這個檔案內的憑證等設定
  • 決定是誰發動請求,以及要發動請求給哪一座K8s Cluster
  • 其實在執行kubectl指令也能夠自帶相關資訊,可參考optiones項目執行:

kubectl options

可以透過前面紅框三個option帶入憑證

並給予最後紅框的option指定Cluster位置

理論上帶入上面options後應該可以取代使用~/.kube/config的內容

首先我們要重新取得--server所需要的資訊,先執行指令:

kubectl cluster-info

由於整串指令非常長,所以可以用\反斜線換行繼續輸入,所以執行指令如下:

kubectl --server {上面拿到的url位置} \

--certificate-authority /etc/kubernetes/pki/ca.crt \

--client-certificate dev-hog.crt \

--client-key dev-hog.key \

{實際要執行的K8s指令}

這些Client憑證檔案都是屬於hog使用的

上圖中執行失敗的提示意思就是執行指令時

kubectl仍去參考到~/.kube/config內容

並優先參考使用~/.kube/config中的client-cert-data & client-key-data內容

可以查看其內容如下執行:

cat ~/.kube/config

為了測試方便,暫時地將~/.kube/config搬到/home/ubuntu目錄下

這樣就部會在吃到該設定檔了!

然後再次執行剛剛失敗的指令:

看起來成功連到K8s Cluster了,剩下的錯誤是hog沒有權限執行"get pod"指令

因為我們尚未給予hog任何kubectl操作指令的permission

但是如果每次執行kubectl指令都要打那麼長一大串,會非常累人

如上若是要使用kubernetes-admin身分執行kubectl指令

就要使用目前在/home/ubuntu下的config檔,搬回到~/.kube/目錄下

同理我們也可以建立hog專用的config檔,放到~/.kube/目錄下使用

所以首先複製一份kubernetes-admin身分的設定檔config為hog使用:

名稱先叫做:dev-hog.conf

接著著手調整其內容,將kubernetes-admin身分改為hog的:

首先確定不用調整的部分如下:

需要調整的內容區塊如下:

並且這邊填入上述兩個憑證相關資訊方式還有另一種選擇是

"不直接提供data"

所以client-certificate-data: 改為 → client-certificate:

所以client-key-data: 改為 → client-key:

並改造為如下:

先儲存後常是執行指令(透過--kubeconfig選項指定要使用的設定檔):

kubectl --kubeconfig dev-hog.conf get pod

依樣有成功連到K8s Cluster只是還沒給權限

至此開發者hog其實就可以拿著他那三個憑證檔

加上上面製作的dev-hog.conf檔案

到hog個人電腦,放置到自己電腦內的~/.kube/目錄下

並且dev-hog.conf檔案名稱改為config

就可以直接地執行與K8s Cluster溝通的kubectl指令!

就像下面這樣!!!!

用記載hog身分憑證的config檔,成功請求連到K8s Cluster,只是尚未給予操作權限!

當然更好一點還是把那兩個憑證資訊data直接寫到config檔內

所以再改回來:

client-certificate: 改回 → client-certificate-data:

所以client-key: 改回 → client-key-data:

內容當然就是base64加密的hog的憑證資訊囉!

透過以下指令取得base64加密後的結果(這邊方便點用另一個putty取得):

base64 {檔名}| tr -d "\n"

另一個putty:

回到原putty貼上完成:

一樣嘗試直接執行kubectl指令:

用記載hog身分憑證data,成功請求連到K8s Cluster,只是尚未給予操作權限!

假裝現在就算不是在master機台上執行,而是開發者hog自己筆電

只要有上述這些檔案,一樣也能向K8s Cluster執行kubectl請求指令!

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet