iThome Kubernetes Summit 2019心得

這次是第一次參加iThome Kubernetes Summit,當初看到早鳥票釋出就直接買了($2400左右),以一天的Conference來說不算便宜,但是能夠去學習學習增廣見聞也是值得的。

結果買票之後才得知我們社群Cloud Native Taiwan User Group(CNTUG)也有去擺攤,雖然是付費票,但是還是去支援了一下社群攤位xD。

上午場都在跟附近社群交流、逛攤位以及顧社群攤位,因此只聽了第一場「賣K8s 的人不敢告訴你的事」。下午花比較多的時間在聽議程,以下列出部分議程的簡單心得跟筆記。

目前官方已經有將簡報釋出,也有釋出當天大會各議程共筆,有興趣的人可以參考:

議程: https://summit.ithome.com.tw/kubernetes/
大會共筆: https://hackmd.io/@k8ssummit/19/%2FRe80SUVITjWAMbUwaUVnWw

賣 K8s 的人不敢告訴你的事

葉秉哲(William) / 新加坡商鈦坦科技 Technical Coach
Slide

這場議程大多比較偏向使用者在導入Kubernetes時需要思考的事,大部分賣K8s平台的廠商在協助導入Kubernetes的時候都只提到好處(好管理Container以及好Scale),但是都沒有提到維運成本以及其他層面(Networking, Storage etc)。

講者提到了在導入Kubernetes時,可以使用三種方式來更加了解及定位出自己的需求或目標:

1. 任何事情不能只看表面,要了解現實面。

使用5W1H(What,Where,When,Why,Who,How)分析法去了解事情,要深入的去了解事情,不能只單單看表面,講者這裡提到一些例子:

Kubernetes官方對Kubernetes的介紹:OpenSource、Auto-Deployment、Containerized等等。這個時候可以去思考:

  • OpenSource如果出問題,有哪個廠商可以support嘛?
  • 為什麼直到現在才有這種Auto-Deployment Container服務或著是跟現有的解決方案差別在哪?
  • 我們真的做好自動化的準備嗎?我們的Service真的準備好Auto-Deployment了嗎?
  • 為什麼會需要Containerized?
  • Service Containerized之後穩定嗎?

iThome 遍地開花的K8s與容器應用文章,裡面提到K8s、容器化、微服務、部署跟管理方便以及Hybrid Cloud Solution等等。這個時候可以去思考:

  • 為什麼需要微服務? 優缺點是什麼?
  • 什麼情況下會需要Hybrid Cloud Solution,以及為什麼以前沒有推這種Solution?

Kubernetes at GitHub,GitHub在自家服務使用Kubernetes的成功案例,他們一開始先對github.com以及api.github.com導入Kubernetes,且第一階段先把stateless服務遷移到Kubernetes上。先選擇github.com以及api.github.com的原因是因為這兩個服務導入最艱難,只要這兩個導入成功的,其他的應該就比較沒問題。導入的工作主要是由是SRE、Platform以及Developer三個一起參與導入。看到這些可以去思考:

  • 為什麼導入要先以最艱難的服務導入?不是通常都會先用簡單或比較不重要的服務測試Kubernetes,然後再慢慢把重要的遷移上去嗎?GitHub這樣是有不同考量嗎?對我的企業而言哪種比較適合呢?
  • 為什麼會需要SRE、Platform以及Developer三種工程師一起參與?缺少任一個可以嗎?
  • 為何先挑選stateless服務做處理呢?

2. 擴展自己的知識

多擴展自己的知識,可以多看CNCF Cloud Native Interactive Landscape,瞭解project的分類,並且定位自己目前需要達成的是哪些目標,多了解一些,不要冒然選廠商跟解決方案。

另外也可以參考CNCF Trail Map,裡面有提供十個階段來建議企業漸進式導入Cloud Native專案,可以詢問自己目前想要做的是哪一階段或是廠商提供的是哪一階段的服務?

3. Dev跟Ops都需要了解

要導入Kubernetes絕對不會只是Operation的事,Development也是相當重要的,善用各方面的知識,並且互相交流,才能夠降低導入Kubernetes的門檻。

Docker Swarm 太陽春 K8s 太複雜?試試輕量級的 K3s 吧!

王偉任(Weithenn) / Micron Technology Senior System Engineer

這個議程主要是在介紹Rancher K3s,提到K3s比起一般Kubernetes還要更加的輕量化及差異點(SQLite取代etcd,預設Container Runtime使用containerd)。由於他非常的輕量,因此很適合部署在如樹莓派這樣的IoT裝置上,且部署方式非常方便,也能夠整合Kubernetes預設的dashboard或是Rancher Dashboard來做管理。

Harden Your Kubernetes Cluster

蔡宗城(smalltown) / Maicoin Senior Site Reliability Engineer
slide

此議程講者主要針對不同的層面來探討如何增強Kubernetes的安全性。講者提到了非常多實用的經驗跟工具,這裡有些部分沒有筆記到或是不清楚,建議可以直接看簡報比較詳細。

Image

  1. 盡量使用Minimal Base Image,太大包的image可能會有不必要的套件,增加安全風險。
  2. 限制執行Container的使用者身份,以免讓Container取得過大的權限。
  3. Image盡量不要使用latest版本,因為latest對應到的Image可能會一直變動。
  4. 不要隨意相信Registry上的Image,因為你無法確保那真的是官方釋出的。
  5. 可以使用簽章機制來識別官方釋出的Image,(可使用Notary)。
  6. Image不要儲存一些敏感資訊,盡量用一些Secret形式來取代。
  7. Use COPY instead of ADD
  8. 可使用 Anchor, Clair, Trivy來對image做CVE掃描,找出Image淺在的漏洞。
  9. Regular Vulnerability Assessment -> 評估跟分類掃瞄出來的漏洞
  10. DevSecOps -> 把image security 整合CI/CD。

Credential

  1. Kubernetes Secret放在Cluster裡不一定安全。
  2. HashiCorp Vault -> 管理credentials 生命週期及儲存,支援Dynamic Credentials,可以整合public cloud或是DB。
  3. Credentials Lifecycle:不要把Credentials 存在Disk,可存在Memory,使用完就直接清掉,不要保存。

Network

  1. 預設情況下,Pod之間是沒有隔離的,網路都是互通。
  2. Kubernetes Network Policy(須注意並不是每個CNI都有支援,slide裡連結有支援表可以參考)
  3. Pod跟Pod之間傳輸是明碼的,很容易會有MITM。
  4. Istio 裡面pod跟pod之間會有envoy proxy做傳輸,可以在這邊做手腳(Istio TLS),將pod跟pod之間傳輸做加密。
  5. Istio with Kiali ( 可以視覺化pod之間pod traffic流量,也會顯示連線是否有加密。

Runtime(pod底層)

分成兩個部分 Auditing & Enforcement

  1. Enforcement -> 強迫去做一些事情(pod security policy, aurmor)
  2. Falco -> 限定使用者不能做什麼事,例如使用者想要exec到pod執行bash,動作就會被擋住,然後Falco會傳通知給administrator。

Policy as Code

  1. Open Policy Agent (Kubernetes Admission Control, HTTP API Authorization)
  2. OPA Flow,有點類似會有一個authorization/authentication server去對權限做管理,k8s在執行任何動作前都會去問authorization server來決定可不可以執行。
  3. 需注意OPA不是使用yaml來撰寫,是自己的語法。

前方有雷別再踩─企業導入 Kubernetes 的掃雷指南

朱培華 / 多奇數位創意系統工程師

此議程的講者整理了非常多的Kubernetes Best Practice,從update, scaling, secret管理到label應用、資源應用以及監控等等,非常多實用的內容,這部分因為一些原因沒有記錄太多筆記,不過講者的簡報相當詳細,因此建議可以直接參考簡報。

總結

這裡筆者只列出一些議程筆記,其他比較偏安裝教學或是有些沒有筆記到的就沒有寫在這上面,有興趣者可以參考官方的共筆或是簡報。

這次參加的感想是議程部分比較入門類,偏向經驗分享或是工具使用教學,很適合像筆者這樣的菜鳥新手去聽。攤位部分不多,大概只有幾家比較大的贊助商來擺攤,不過廠商贈品送的還蠻多的,另外這次很特別的是有來自國外的Dr.Brad Topol簽書會(書名Kubernetes in the Enterprise),只要用名片就可以換到一本原文簽名書,算是這次Conference中最佛心的活動。

最後還是覺得票價不便宜,希望明年有機會能夠當講者,除了能累積經驗外,也能使用講者票參加,一舉數得。

\
Cloud Native Taiwan User Group攤位

Kubernetes in the Enterprise作者簽書會

文章內容的轉載、重製、發佈,請註明出處: https://pohsienshih.github.io