Kubernetes CKA課程筆記 42
如前一篇最後終於得到Client端使用的hog可以使用的三個憑證檔:
- hog的Client端憑證私鑰:dev-hog.key
- hog的Clinet端憑證請求檔:dev-hog.csr
- 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指令}
上圖中執行失敗的提示意思就是執行指令時
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
至此開發者hog其實就可以拿著他那三個憑證檔
加上上面製作的dev-hog.conf檔案
到hog個人電腦,放置到自己電腦內的~/.kube/目錄下
並且dev-hog.conf檔案名稱改為config
就可以直接地執行與K8s Cluster溝通的kubectl指令!
就像下面這樣!!!!
當然更好一點還是把那兩個憑證資訊data直接寫到config檔內
所以再改回來:
client-certificate: 改回 → client-certificate-data:
所以client-key: 改回 → client-key-data:
內容當然就是base64加密的hog的憑證資訊囉!
透過以下指令取得base64加密後的結果(這邊方便點用另一個putty取得):
base64 {檔名}| tr -d "\n"
另一個putty:
回到原putty貼上完成:
一樣嘗試直接執行kubectl指令:
假裝現在就算不是在master機台上執行,而是開發者hog自己筆電
只要有上述這些檔案,一樣也能向K8s Cluster執行kubectl請求指令!