Docker和Kubernetes都是Linux本地技術;所以,它們必須在Linux主機操做系統中運行。咱們假設大多數Java開發人員使用Windows或Mac開發,所以爲了利用Docker和Kubernetes帶來的強大功能,咱們須要在主機操做系統上使用客戶Linux VM。您能夠爲您的環境下載Docker機器和工具箱,可是您須要手動安裝Kubernetes(這可能有點棘手)。您可使用上游的Kubernetes 鏡像,但就像任何快速移動的開源項目同樣,這些鏡像可能會迅速變化,有時會變得不穩定。此外,爲了充分利用Docker的可移植性,最好在不一樣環境之間使用至少相同的Linux內核,但最好使用相同的Linux發行版和版本。咱們還有別的選擇嗎?git
爲了開始使用Docker和Kubernetes開發微服務,咱們將利用一組名爲RedHatContainerDevelopmentKit(CDK)的開發工具。CDK是免費的。
在包含Docker、Kubernetes和Web控制檯的開發人員機器上運行的獨立的小型VM(實際上,它是RedHatOpenShift,它基本上是具備其餘開發人員自助服務和應用程序生命週期管理功能的Kubernetes的企業版;可是在本書中,咱們只使用Kubernetes API)。github
RedHatOpenShift 3.x是一個Apache v2許可的開源開發人員自助服務平臺OpenShift Source,該平臺已經被改造爲使用Docker和Kubernetes。OpenShift曾經擁有本身的集羣管理和編排引擎,可是因爲Kubernetes爲容器集羣管理世界帶來的知識、簡單性和強大功能,嘗試從新建立另外一個集羣管理引擎是愚蠢的。更普遍的社區正彙集在Kubernetes周圍,而紅帽則所有與Kubernetes在一塊兒。OpenShift有不少特性,但最重要的是它仍然是基於角色的Kubernetes,支持基於角色的訪問控制、開箱即用的軟件定義的網絡、安全性、登陸、開發人員構建和許多其餘東西。咱們在這裏提到它,是由於咱們將在本書其他部分使用的Kubernetes的味道是基於OpenShift的。咱們還將使用oc OpenShift命令行工具,這些工具爲咱們提供了更好的用戶體驗,並容許咱們輕鬆地登陸到Kubernetes集羣,並控制將部署到哪一個項目中。咱們提到的CDK既有Kubernetes,也有OpenShift。在本書的其他部分,咱們將提到OpenShift和Kubernetes,它們能夠互換,但使用OpenShift。shell
使用CDK,您能夠在筆記本電腦上做爲Docker容器構建、部署和運行您的微服務,而後選擇經過OpenShift內部的其餘應用程序生命週期管理功能或使用您本身的工具在交付管道中交付您的微服務。CDK最好的部分是運行在真實 VM中,它應該與您的開發、QA和生產環境相匹配。安全
要啓動cdk,請導航到安裝目錄和./Components/hril/hril-ose子目錄,並鍵入如下內容:微信
這將引導您完成供應過程並引導VM。VM將在TCP:/10.1.2.2:2376處公開Docker守護進程,在https:/10.1.2.2:8443處公開Kubernetes API。接下來,咱們須要爲您的環境安裝OpenShift oc命令行工具。這將容許咱們登陸OpenShift/Kubernetes並管理咱們的項目/名稱空間。您能夠本身使用kubectl命令,可是使用oc登陸命令更容易登陸,所以對於這些示例,咱們將使用oc。下載並安裝oc客戶端工具。網絡
下載並安裝了cdk和oc命令行工具以後,咱們最不想作的事情就是設置兩個環境變量,以便咱們的工具可以找到OpenShift安裝和Docker守護進程。要作到這一點,導航到./Components/hril/hril-ose目錄,並運行如下命令:分佈式
這將設置環境變量。您能夠輸出環境變量,並手動配置它們(若是您願意的話):微服務
咱們如今應該可以登陸運行在CDK中的OpenShift:工具
您能夠訪問下列項目,而且能夠切換 ‘oc下的項目<;Projectname>;’:開發工具
讓咱們建立一個新的項目/命名空間,部署咱們的微服務
你應該準備好進入下一步了!
雖然不須要運行這些示例,但爲本機開發人員計算機安裝DockerCLI也頗有用。這將容許您從開發人員的筆記本電腦中直接列出Docker鏡像和Docker容器,而沒必要登陸到VM。安裝了DockerCLI後,您應該可以直接從命令行shell運行Docker(注意,前面討論的環境變量應該設置):
在本章中,咱們瞭解了在規模上部署和管理微服務的困難,以及Linux容器如何提供幫助。咱們能夠利用不可變交付來減小配置漂移,啓用可重複部署,並幫助咱們對應用程序進行推理,而無論它們是否在運行。咱們可使用Linux容器來啓用服務隔離、快速交付和可移植性。咱們能夠利用像Kubernetes這樣的可伸縮的容器管理系統,並利用許多內置的分佈式系統特性,好比服務發現、故障轉移、健康檢查(以及更多!)。在Kubernetes上部署時,您不須要複雜的端口切換或複雜的服務發現系統,由於這些問題已經在基礎設施自己中獲得瞭解決。要了解更多信息,請查看如下連接:
原文:
做者源碼:https://github.com/redhat-developer/microservices-by-example-source
有什麼討論的內容,能夠加我微信公衆號: