正如前面提到的那樣,這是一個相當複雜的話題。但我現在也是這樣做的。因此,讓我爲您總結一些事情:
使用Kubernetes(k8s),您將編排您的SaaS應用程序。在最好的情況下,它是一個雲原生應用程序。雲原生應用程序的屬性/需求由雲本機計算基金會(CNCF)制定,該基金會在谷歌捐贈給Linux基金會之後基本上以k8s左右形成。 因此,雲原生應用程序的屬性/需求是:容器打包,動態管理和麪向微服務(cncf.io/about/charter)。如果您的應用程序是基於微服務的,並且每項服務都有獨立的容器,則您將主要從k8獲益。
有了基於微服務的應用程序,每項服務都可以獨立開發。例如開發人員只需要遵循12Factor方法(12factor.net)(使用env var而不是硬編碼的IP地址等)。
在接下來的步驟中,開發人員爲服務構建容器並將其推送到容器註冊表中。對於本地開發環境,您可能還需要在集羣內運行容器註冊表,以便開發人員可以在本地推送和測試其代碼。
然後,您可以使用Ports,Port-mapping,env vars,Container Images等來定義您的k8s複製控制器,服務,PetSets等,並在集羣內創建並運行它。
k8s文檔建議Minikube在本地運行k8s(kubernetes.io/docs/getting-started-guides/minikube/)。隨着Minikube你有像DNS,NodePorts,ConfigMaps和祕密 功能儀表板功能。 但是我選擇了多節點CoreOS Kubernetes和我的開發環境中的Vagrant Cluster,作爲Puja Abbassi在博客「尋找合適的本地Kubernetes開發環境」(https://deis.com/blog/2016/local-kubernetes-development-environment/)中提到的,它更接近我的生產環境(12因子:10 - Dev/prod奇偶校驗)。 隨着流浪環境你有類似的特徵:
- 絨布網絡
- 服務發現與ETCD
- DNS名稱的一組容器與SkyDNS
- 內部負載均衡
如果你想知道,這個Github倉庫裏面的所有東西是如何工作的github.com/coreos/coreos-kubernetes/tree/master/multi-node(vagrant和通用文件夾)。
所以你必須問自己,如果你或你的開發者確實需要在本地運行一個完整的「雲環境」。在很多情況下,開發人員可以獨立開發服務(基於微服務和容器)。
但有時需要將多個或所有服務作爲開發環境在本地計算機上運行。