iT邦幫忙

2023 iThome 鐵人賽

DAY 29
1

終於到了最後兩天,剩下兩天還是自己獨力完成吧~

計畫第 29 天會是我對於 GCP / Kubernetes 的經驗分享,而 30 天會是完賽感想。

開始當 SRE 馬上就要滿一年了,我們公司又是以 GCP 為主,其中大部分的服務都是部署在 GKE 上,所以這一年來我對於 GCP 和 Kubernetes 算是小有心得,今天主要會分享 IAM、證照的心得。

IAM

在每週的工作中,有一部分都是幫公司的同仁開權限,以及離職的同事移除權限。

我覺得開權限最主要就是幾個原則:

  • 最小權限原則:我們要盡量在使用者可以完成他的任務的情況下去縮限開給他的權限,例如:有人想要使用 BigQuery 來查資料,那我們比較適合開給他的權限就會是 BigQuery Data Viewer,但是只有這個權限他是無法下 SQL 指令來快速找到他想要的資料,所以還需要 BigQuery Job User 來完成這個操作。而不是直接嫌麻煩開 BigQuery Admin 造成不必要的風險。如果真的找不到適合的權限,還可以使用 Custom Role 來創造一個適合的 Role 給 User。
  • Production 盡量避免開 Write 權限給 User:除了該服務的管理人員或是 Oncall 人員以外,盡量避免在正式環境開 Write 的權限給 User,以避免增加不必要的風險。如果需要寫入,應該是開權限給 Service Account 來完成,而需要手動變更的部分則是交由管理人員處置,Oncall 人員取得寫入權限是為了發生緊急狀況時,可以緊急修復系統。
  • 記錄的重要性:有經歷過稽核的人,應該都會知道可能會被要求任何的權限異動都有經過審核及記錄,所以除了要有權限申請流程以外,將權限異動紀錄保存也是非常重要,而 IaC + Git 就是很好的方法。用 IaC 來完成權限異動,而每次將 IaC 的變更都由 Git 保存下來,這樣就好的達到上述需求。
  • gcloud:有時候會不知道需要什麼權限時,gcloud 就是我們的最佳幫手,用 gcloud 來完成 User 想要完成的操作時,如果缺乏某個權限,通常都會有所提示,這時候再透過這個提示去官方文件或是第三方的參考資料(如:permissions)搜尋,就很容易找到適合的。

是否要考證照?

這題老實說是廢話,要是不用的話,那我今天就不會寫這篇文章了,哈哈。我覺得證照比較像是增加對於這個產品的認識程度,像是 Kubernetes 的 CKA,或是這次要考的 GCP 的 PCA,與其說會提高我的技術,不如說讓我對於本來沒用過的產品有了更充分的認知,如:App Engine。

但是事實上,有沒有考過證照?和對產品的熟不熟?我覺得完全是兩回事。很多使用上的細節以及面對的問題場景是考證照無法學到的,這點在我開始當 SRE 後就有非常清楚的認知了。

CKA 考試心得

這部分原本應該要寫在之前的鐵人賽系列文章中,但是我覺得這個其實和 GKE 息息相關,剛好又可以拿來湊數,哈哈~就決定放在這了 XD

  • 小樹屋:CKA 要求安靜、沒有任何文字提示的考試環境,而小樹屋加上自備白紙來遮住牆上和裝飾品就可以很完美的達到這個需求,如果害怕其他人發出噪音的話,選擇平日會是更好的選擇。
  • 真的想考 CKS 嗎?:如果有在關注特價的話,常常會發現有個同捆包 CKA + CKS 常常特價,而當初我就是想說可以兩個都考,所以買了特價的同捆幫。後來發現 CKS 對於現在的工作,還沒有那麼迫切的需求,就決定放棄了 CKS。有些公司通過證照以後可以申請補助,這時候有沒有兩個都通過就會差了上萬元的補助費用。
  • 練習使用原生的 ubuntu:不管你是 Mac 還是 Windows 的使用者,都應該熟悉 Linux 的操作,因為真實考試環境會是用遠端桌面連到 ubuntu 的機器中進行,所以這將會嚴重影響你考試的速度。
  • Killer shell:報名附贈的 Killer shell 真的是準備考試中最重要的一部分,模擬考有 36 小時的期限,在你啟用模擬考後,應該要不斷的重複練習直到可以在模擬考考到 high score。一但有 high score 的程度,我相信正式考試難不倒你,因為 killer shell 比正式考試難太多了。
  • 好用指令:CKA 考試時常會要求你寫 YAML,這時候你除了硬背以外,還有兩個方法:
    1. 查官網:不得不說這是個好方法,而且現在的考試還會在每題幫你準備好相關文章連結,而不用像以前一樣在 Chrome 事先準備好書籤,又或是在 search 搜尋相關文章。

    2. 下指令快速生成 prototype:請善用 kubectl 的指令加上 dry-run 來讓你快速產生 YAML 檔。

      # -o 代表用 yaml 格式輸出,而 --dry-run=client 代表試跑這個指令,最後再將結果導入 file.yaml
      --dry-run=client -o yaml > file.yaml
      
      # 範例:產生 ubuntu pod 的 yaml
      kubectl run test-ubuntu --image ubuntu:22.04 --dry-run=client -o yaml > ubuntu-pod.yaml
      

上一篇
Day 28:Cloud Storage (3)
下一篇
Day 30:End
系列文
30天準備GCP Professional Cloud Architect30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
sponge1220
iT邦新手 4 級 ‧ 2023-09-30 23:34:00

額額額額額額

Calvin iT邦新手 4 級 ‧ 2023-09-30 23:35:20 檢舉

河河河河河河

我要留言

立即登入留言