當工程師考慮是否要在 Kubernetes 這個容器管理平台進行部署時,關鍵的決定因素通常是 Kubernetes 在維運方面的優勢:更好的資源效率、更高的可擴展性、高彈性與安全性等等。
但事實上,除了維運之外,Kubernetes 也有利於公司的軟體開發;無論是提高程式碼的可攜性、提高生產率,這些因素都讓 Kubernetes 成為許多開發單位的首選。
正如 Gooogle Cloud 在 Re-architecting to cloud native: an evolutionary approach to increasing developer productivity at scale 一文中所提出的論點: Kubernetes 是一種提高開發人員生產力的革命性技術,它讓你能更輕易地開始使用現代的雲原生軟體開發模式(如微服務),帶給你諸多好處,包括:
- 增加開發人員生產效率,即使團隊擴編、組織複雜度更高
- 更快讓產品/服務上市:快速添加新功能並更快的修復瑕疵
- 更高的可用性:提高軟體正常運行時間 (uptime) 降低部署失敗率,並縮短事件發生時的恢復時間
- 改善的安全性:減少應用程式的受攻擊範圍,並使它更易於檢測、快速回應攻擊與新發現的漏洞
- 更好的可擴展性:雲端原生平台與應用程式使必要的水平縮放變得更容易
- 降低成本:簡化的軟體交付流程,可以減少交付新功能的成本,而有效使用雲端平台,可大大降低服務的營運成本
而正因為 Google 發明了 Kubernetes,Google Cloud 自然有提供一套 Kubernetes 全託管服務 ─ Google Kubernetes Engine (GKE)。不過,你知道嗎?Google Cloud 還提供了與 GKE 緊密整合的全套開發人員工具!今天,為了紀念 KubeCon,我們將介紹一系列的方法,為您呈現如何開發用於 GKE 的應用程式,如何安全高效的部署他們,以及如何在他們投入正式環境後,對其進行監控和除錯。
用 GKE + 外掛進行開發:一切從你開始
今天耳熟能詳的各大網路公司的 app,其實都是從一位開發人員的一台筆電上的程式碼開始的。GKE 上運行的應用程式也是如此。Google 讓您可以用多種工具,整合您的本機開發環境與 GKE。
- 身為開發人員,想必多少聽過以大量運算資源來「欺騙」他們筆記型電腦的做法,比如說,有了 Minikube 你就可以使用 GPU。另外,還有一些本機開發工具可以幫助您將 Java 應用程式容器化,例如 Jib 和 Skaffold。Jib 有助於將 Java 應用程式容器化而無需安裝 Docker、運行 Docker daemon、甚至不必編寫 Dockerfile。它還可作為 Maven 或 Gradle 的外掛使用。然後當偵測到變化時,你可以使用 Skaffold 去部署這些容器化的 Java 應用程式到 Kubernetes 叢集。Skaffold 甚至可以將文件的新版本注入正在運行的容器中!想了解細節的讀者,歡迎閱讀 Livin’la vida local:從你的筆記本電腦輕鬆開發 Kubernetes 這篇文章。
- 在 GKE 開發人員社群中,另一個很流行的工具是 Cloud Code,它為 Visual Studio 和 IntelliJ 的整合式開發環境(IDEs) 提供外掛,以簡化 GKE 的開發。舉例來說,Google 最近更新 Cloud Code 的功能,以便對 Kubernetes YAML 和自定義資源 (CRDs) 有更強大的支持。你可以從 Cloud Code makes YAML easy for hundreds of popular Kubernetes CRDs 閱讀完整內容。
(本文翻譯改編自 Google Cloud。)