今天參加了 iThome 舉辦的 Container Summit 2016,以下是 Day 1 的簡易心得筆記。 iThome 這次也有建立線上聊天區及共筆區,簡報也開始陸續提供下載了。
Keynote: The Kubernetes API & Next Generation Automation Tools
又是來自 Google 的 Ian Matthew Lewis,今年到底見過這位講者幾次呢?我想至少有三次以上吧。當然這次依然是講 k8s 的相關主題,前半場依然有些 k8s 的基礎介紹,像是 k8s 到底幫你解決了建立 Container Cluster 需要處理哪些麻煩的細節。
雖然說是基礎但卻是不得不介紹的內容,因為必須要先理解 k8s 的基本運作及 k8s 的 controller 是如何運作,接著才能理解後半場有關 k8s API 及 Custom Controllers 的 DEMO。 再看講師 後半 DEMO 時,一開始有些閃神(這就是一邊偷看共筆與聊天的缺點),沒搞懂為何忽然開始寫 Go,接著才理解這邊可是火力展示!DEMO 與前面的說明相呼應,讓你理解 k8s API 及 controller。
G 社的講師向來都是不開放簡報下載與錄影,所以閃神沒仔細聽的部分就沒辦法補課,有些可惜,但總之因為 k8s API 讓我對於 k8s 的好感又加了數分。
Keynote: 容器技術對分佈式系統的最佳實踐:配置管理、服務發現、數據存儲、監控和跟蹤
第二場議程由我個人戲稱他是「紅色三倍速」,身穿紅(其實應該是橘)衣來自 CoreOS 的李響帶來的分享。為何說是「紅色三倍速」呢?這是鋼彈梗,就不解釋了。主要是因為講師一開始的口速超快,快到光要聽清楚內容都來不及了,更不用說還要做筆記。
前面口速超快的內容大部分都是在介紹 CoreOS 及相關內容,感想就是 CoreOS 不愧是背後有金援的專案,對於自身的定位及未來發展有明確的藍圖,可惜國內討論的人好像不多,還真想問問有沒有人將 CoreOS 實際運用在正式環境上。
至於整場議程的重點則是帶你走一趟使用 Container 的旅程,從 Container 的優點、為何要使用 Container,再一直講到複雜的 Container Clusters。最後就如講題所寫的,當你要建立 Container Clusters 時,你需要面臨的哪些「配置管理、服務發現、數據存儲、監控和跟蹤」的細節問題。
其中有幾個我比較深刻的點:
- 再次提醒除了 Container Clusters 之外,也別忘了看看你的 Application 是否能 containerized。你的 Application 是否能稱做是 Cloud native application 有具備了 Distributed 及 stateless 的特性。
- 續上那如果 Application 仍是 Stateful Application 該怎麼辦呢?那可以參考一下 mesosphere 提出的 Container 2.0。其中有實踐 sidecar patterm 的機制,來解決 Stateful 的問題。
- 講者推薦 etcd、gRPC、Prometheus(越來越多人替這些工具掛保證了。)
另外這場分享的下半場時,我一直有一種很強烈的「即視感」,覺得自己在哪邊聽過類似的內容,而且好像是聽過英文版,就連簡報也彷彿有看過類似的圖片,但是風格有些差異,到底是在哪裡有聽過呢?
Keynote: DC/OS, A New Operating System for your Data Center
之前也有來過的 Timothy 依然帶來 DC/OS 的講題。
不過實際上 DC/OS 講得不多,主要的內容反而比較像是與第二場 Keynote 相呼應,也是帶著大家走了一趟歷史回顧,從單一實體主機架構、虛擬化、containerized MicroServices、再走到 Container Orchestration,最後當然要走到 DC/OS。
至於為何說可以與第二場相呼應呢,因為切入的角度有一點不同,但最後都談到了 Container 為主軸的大架構。所以兩場連在一起聽,等於一次幫你補足若要建立 Container 大架構時,你應該要考慮的細節有哪些,以及現在市面上正熱門的這些工具(k8s、DC/OS)幫你處理掉哪些問題。
因此,不管未來是要規劃你的架構或導入這些工具,理解這些背景都是有益而無害的。 關於 DC/OS 這一場聽到一個特性 Extensible lsoation 似乎有些意思,這讓我對它也加了不少分。
另外簡報中也推薦了一篇文《BRIDGING REALITIES: ORCHESTRATION AND PROGRAMMABLE INFRASTRUCTURE》,可以閱讀參考。就像最近開始有篇文《Docker 的未来》嘗試探討 Docker 或 Container 的商業之路該往哪邊前進,看來 Container 大戰會持續延燒,但大家關注的重點已經從 “Container” 本身移向 “Container Cluster”、“Container Orchestration” 及整個生態鏈了。
最後講者拋出了一個問題,這也許會是 Container 的下個大家會期待能解決的問題,同時可能也是相關廠商們要爭奪的激烈戰場。
“Next big question moving forward… How do we run containers much more efficiently at scale?”
Keynote: 洞悉 Docker 安全史
來自上海道客網路科技的孫宏亮,去年也有來分享過,這次帶來大家都很重視的「安全性」的題目。
開場就拋了一個大哉問:「Docker 安全嗎?」 答:「它還真的是不安全」 Docker 官方:「它真的很安全」
不過 Docker 官方態度其實是 Security by default.
首先講者表示 Docker 的出現帶來了「易用性」、「標準化」等好處,其實就是 Docker 官方的口號 “Build, Ship, and Run Any App, Anywhere”,所以它本來最初就不是為安全而誕生的。可是安全性是安全是企業用戶不可避免要關注的重要項目,所以還是需要好好的面對。
然後,因為下午第一場,濃濃的睏意席捲而來,接著就開始閃神了。雖然沒有把所有細節聽進去,但講者主要分享了因為 Linux Kernel 的緣故,其實已經有許多安全性的補強了。包含了 Namespace、Cgroups、Capabilities、Seccomp、Mandatory access control⋯⋯
所以到底 Docker 安全不安全,如果不安全那很可能是人為因素造成的居多!互映主題講者也示範兩個很威的 DEMO,讓你知道人為因素造成的不安全有多麼可怕,一個不小心即便是在 container 之中都有辦法取得 hosts 上的權限,看遍 hosts 所有的資料,甚至把 hosts 搞掛。怎麼解決?前面提到那些關鍵字都好好的去了解一下吧。
(這場可以與 Day 1 最後一場議程《如何利用 Docker 強化網站安全》合在一起思考,可以對安全性有更多的了解。)
Agile Development with Container and Kubernetes (for Small Team)
接著是由雷亞遊戲技術長鐘志遠帶來的企業經驗分享。
講者自己開場就謙虛說只是 “for Small Team” 的經驗而已,但這島國也沒多少大企業,所以 “for Small Team” 某角度來說才更是能打中多數人的好題目。 (其實同一時間的另一場議程《閃電戰如何勝出?時間軸 Docker 實戰術》,似乎也是類似規模的題目,我想應該都很適合中小團隊聆聽。)
因為是開發為主的小團隊,不希望花費太多力氣再 Ops 上,因此早先他們即是採用 PaaS 為主。接著隨著公司的產品發展,覺得 PaaS 不夠好用,希望能更優化流程,達到以下的目標:
- Minimize Errors
- Minimize Deployment Cost
- Minimize Technology Stack
- 讓工程師開心 所以他們開始導入 Container,最終邁向了 GCE、k8s 的懷抱。當然導入初期是先從 Local 開發環境開始,接著 CI、自動化測試、自動化部署,最後才邁入 k8s。
講者分享了許多他們的經驗,包含他們為何選擇 Container、k8s,其中的背景因素、吸引他們的優點及幾個導入的架構範例,全都是很值得參考的經驗談。其中講者有分享他們從開始學習 k8s 到應用至正式環境約只花了半年的時間,表示其中的學習成本並沒有想像的高。 最後就貼一下講者為何選擇 k8s。
- We love PaaS
- We love Container
- We want a PaaS that works well with Container
- Kubernetes is open source
- Easy to deploy (update)
- Easy to debug
- Google Cloud Logging integrated
Docker 從入門到入迷
來自 鮑承佑 / 台灣卡普空 工程師 的分享,這也是少數在演講之前就先將簡報釋出的講者。 (當然搶先釋出版不等於最終版簡報,但依然足以讓聽眾能事先評估是否為自己想聽的內容,這挺好的。)
這場雖然工具最多只使用到了 docker、docker-compose,但內容是紮實的經驗談,講者想要分享的主軸是「要用怎樣的方法來最小幅度改造舊程式, 以便能夠用 Docker + Docker Compose 的組合, 配合內部架設 Docker 庫來做開發時期的維護及營運時期的運行。」
這也是許多開發團隊會想要了解的內容,特別是那些手上有甩不掉的舊專案的團隊。
講者花了一些時間來介紹 docker、docker-compose 這兩項工具帶來了哪些好處,像是對 Ops 來說讓部屬方式一致、對 Dev 來說可以讓開發環境約同等於營運環境,且環境建置容易。
最後講者說明了他覺得可以如何利用 Docker 的特性去幫助你將既有系統容器化,及其中有哪些他踩過的坑。
因為講者簡報字很多,內容都在簡報上了,所以細節我就沒特別記錄,有興趣就直接看簡報吧 https://windperson.github.io//ithome-container-summit-2016-slide/
如何利用 Docker 強化網站安全
Day 1 最後一場,由來自資安界的大大 vArmour 資深工程師徐千洋分享「安全性」的題目。
這場的最大心得就是「安全性」真的很重要,不是別人不駭你,只是還沒輪到你。 (謎之音:你也扯太遠了吧?)
總之漏洞與駭客攻擊手法百百種,講者今天也只介紹了其中一種 “remote code execution”,所以如果你想要徹底地提升安全性,防範各種可能的攻擊,這真的是一門非常專業的知識,公司有錢的話還是請個專家來協助吧!
如前面所述,這一場分享可以與《Keynote: 洞悉 Docker 安全史》連貫在一起。前面看過了因為人為因素導致 Docker 不安全,這場反過來看看如何利用 Docker 來讓你的環境更安全。
乍聽之下很矛盾?但其實一點都不矛盾。Docker 到底安不安全?其實端看你怎麼用而已。
講者首先 DEMO 了 wordpress 的漏洞,透過此漏洞讓駭客有辦法連上 Server 直接對 Server 進行遠端操作,接著再來說明該如何利用 Docker Container 來強化安全性防範這個漏洞。
講者建議不用多,先認識下面這三項,即可利用 Container 來幫網站提升不少安全性:
- user-namespace 讓駭客即便取得了 root 也不是 hosts 真正的 root
- capabilites 可以確實的將特權帳號能做的事,切割成數十個,並給予限制。如果是想要直接在 Linux OS 上運用難度較高,不過好在運用在 Docker Container 上,Docker 已經讓這件事變得容易一點了。
- apparmor 設定 process 的存取限制。即便駭客取得 root 也同樣會受到限制。 另外講者對於 Docker Image 本身也有三個建議:
- 移除不需要的檔案或程式 (不然留著給駭客用嗎?同時第一個聯想就是 Minimized Container 原來還有安全上的附加好處)
- 重設所有指令的權限 (chmod o-x)
- 檢視所有可讀和可讀的檔案及目錄 (此項需仰賴你對 unix 的熟悉度) 講者最後也 Live DEMO 透過設定 Apparmor 來防止漏洞,也確實證實有效,說服力超高,聽完這場分享有一種開新視野的感覺,資安真是一門大學問。
Day 1 的記錄就到此為止,期待 Day 2 的精彩內容,為避免又體力不支,要早點休息了。
題外話,iThome 現在辦活動都會有線上聊天區及共筆區,同時簡報釋出速度超快,再加上也開始提供錄影,這樣聽講的過程就可以減少流水帳式的詳細筆記,只要重點記錄即可,剩下的精神力可以放在仔細聆聽了。 (顯示為心情愉悅)