JFrog Artifactory是一個artifacts倉庫管理平臺,它支持全部的主流打包格式、構建工具和持續集成(CI)服務器。它將全部二進制內容保存在一個單一位置並提供一個接口,這使得用戶在整個應用程序開發和交付過程當中,能更易於上傳、查找和使用二進制文件。nginx
在本文中咱們將介紹如何使用Rancher在Kubernetes集羣上部署和管理JFrog Artifactory。在看完本文後,你將會系統地瞭解JFrog Artifactory OSS的安裝設置,而且可以按照一樣的步驟在任何Kubernetes集羣中安裝Artifactory OSS或者它的商業版本。固然,咱們還將向你展現如何在Artifactory中建立通用倉庫而且向其中上傳工件。docker
除了文章中所展現的以外,Artifactory還有更多特性,在之後的文章中咱們會更詳細地介紹它們。json
好了,那麼咱們開始吧!瀏覽器
使用的軟件安全
本文使用了下列的軟件工具:服務器
Rancher v2.0.8tcp
運行在Google Kubernetes Engine version 1.10.7-gke.2上的Kubernetes集羣工具
Artifactory helm chart version 7.4.2測試
Artifactory OSS version 6.3.2阿里雲
若是之後本文更新了,請使用到時候的最新版本。
和Kubernetes中的其餘工具同樣,咱們有多種方法來安裝Artifactory。這裏咱們將使用Helm chart,Helm提供了一種給應用程序安裝命令打包及分享給他人的方式。你能夠把它想象成服務於Kubernetes的包管理者。在Rancher Catalog(應用服務目錄)中,Rancher集成了Helm,在Catalog中你只須要點擊幾下就能夠部署任何Helm支持的應用程序。除此以外Rancher還有其餘特色,包括:
一個簡單直觀的Web界面
統一納管全部雲上、全部發行版、全部Kubernetes集羣
一個單一視圖展現全部託管的集羣
開箱即用的集羣監控
工做負載、基於角色的訪問控制(RBAC)、策略和項目管理
全部Kubernetes的功能都不須要在本地安裝任何軟件
安裝Rancher
注意:若是你已經有了Rancher v2 Server和Kubernetes集羣,直接能夠跳過這部分,直接進入安裝JFrog Artifactory的教程部分。
Rancher很是強大,它可以在任何地方管理Kubernetes集羣,所以咱們將在GCE實例上以獨立模式啓動Rancher Server,使用它在GKE中部署Kubernetes集羣。
在獨立模式下啓動Rancher Server很是容易——由於它是Docker容器,在啓動容器以前,咱們須要一個計算實例來運行它,那麼咱們用下面的命令啓動:
請你根據本身的部署修改project以及zone參數。
幾分鐘以後你應該能看到實例已經準備好了。
記錄下來EXTERNAL_IP地址,稍後鏈接Rancher Server的時候你可能會用到。
計算節點啓動並運行以後,咱們經過GCE的CLI(命令行接口)SSH到它。
一樣,注意調整project和zone參數,在你用不一樣的name或者在不一樣的zone啓動節點時它們會變化。
鏈接以後,運行下面的命令安裝一些依賴包而且安裝Docker CE。Rancher Server是一個Docker容器,若是想要繼續安裝的話咱們就須要用到Docker了。
有了這些以後,咱們就能夠部署Rancher服務器了。在第一次啓動容器時,Docker Engine會從Docker Hub中獲取容器鏡像,在啓動容器以前先將其保存在本地。之後容器要啓動時,就直接使用本地的鏡像,這樣速度會更快。
使用下面的命令控制Docker啓動Rancher Server容器,並監聽主機上的80和443端口
若是一切正常,在返回提示符以前Docker會打印出下載的狀態,接着是新的容器ID。
恭喜你!你已經成功啓動了一個Rancher Server實例。
在瀏覽器中輸入剛剛你記錄下來的EXTERNAL_IP地址,你須要接受Rancher默認安裝的self-signed證書。這以後,會彈出歡迎界面,設置密碼(記住它!)接着繼續下一頁。
在這一頁面上你須要設置Rancher Server的URL。在生產部署中這多是一個主機名,好比rancher.yourcompany.com,可是若是你使用的是demo server,能夠直接使用上面的EXTERNAL_IP地址。
點擊Save URL以後,會進入到Clusters頁面,從這裏開始咱們就能夠開始部署本身的Kubernetes集羣了。
使用Rancher來部署一個GKE集羣
Rancher能夠部署、管理來自任何地方的Kubernetes集羣。這些集羣能夠來自Google、Amazon、Azure、阿里雲、華爲雲、騰訊雲等等,能夠在雲節點上、數據中內心,甚至是運行在你筆記本上的VM中。這是Rancher最出色的一點。此次咱們會使用到GKE。在點擊Add Cluster以後,選擇Google Container Engine。
針對本demo,將name設置成jfrog-artifactory。
要建立集羣,Rancher須要訪問Google Cloud Platform的權限。這些權限能夠經過Service Account的私鑰JSON文件得到。如何產生它呢,首先找到service account的name(根據你的狀況修改project的name):
輸出的service account會代替<SA>。複製整個地址並把它用到下面的命令:
這樣會在當前文件夾下建立一個名爲key.json的文件。這就是Service Account私鑰,Rancher將用它來建立集羣:
你能夠把文件的內容粘貼到文本框中,也能夠點擊Read from a file,選擇key.json文件。Rancher將使用該信息生成一個頁面,在頁面中配置你的新集羣:
設置你想要的Zone、Machine Type、Node Count以及Root Disk Size。固然你能夠參考上圖demo中使用的默認值。
點擊Create,集羣就會部署到GKE上,一切ok後你能夠在UI界面上看到它已是活躍狀態的了。
安裝JFrog Artifactory
接下來咱們將經過JFrog的Helm chart倉庫來安裝Artifactory。Helm charts,就像OS包管理系統同樣,在Kubernetes環境中提供給你穩定的部署容器應用程序的方式,而且讓你能夠更新或者回滾應用程序。chart保證你給容器安裝了特定的版本或者標記,在應用程度有多個組件的狀況下,Helm chart可以確保你的所有組件都安裝了正確的版本。
安裝JFrog Helm倉庫
Rancher在其應用程序目錄中附帶了一個Helm charts庫,不過爲了知足Rancher用戶對靈活性的要求,你還能夠安裝任何第三方的Helm倉庫來部署這些應用程序到集羣中。咱們今天將使用JFrog倉庫。
在Rancher的Global Cluster視圖中,單擊Catalogs,接着點擊Add Catalog,在彈出的窗口中,輸入一個名稱,好比jfrog-artifactory,而後輸入官方JFrog倉庫的位置。
點擊Create,JFrog倉庫就會出如今自定義目錄的列表中了。
部署Artifactory
咱們接着部署Artifactory。在Global視圖中,選擇jfrog-artifactory集羣下的默認項目:
進入默認項目後,選擇Catalog Apps,點擊Launch。Rancher將從Application Catalogs中顯示可用於安裝的應用程序。這裏你可能發現artifactory-ha出現了兩次,一次是做爲合做夥伴提供的chart出如今Rancher附帶的默認應用程序庫中,另外一次是來自JFrog倉庫自己。咱們安裝Helm倉庫是由於咱們想安裝常規的、非HA的Artifactory,咱們就喊它artifactory。全部目錄下的應用程序都指明瞭它們來自哪一個庫,全部在多個庫中都有chart的狀況下,你仍然能夠選擇安裝哪一個庫
當你選擇View Details時,你能夠更改有關如何安裝應用程序的選項。在默認狀況下,此目錄項將部署已受權的Artifactory商業版本,爲此你須要證書。若是你已經擁有證書,那麼能夠保留默認選項;可是,咱們想安裝OSS版本,因此咱們將更改chart安裝的鏡像。
咱們在Configuration Options界面進行操做,選擇Add Answer,設置好artifactory.image.repository的變量名以及docker.bintray.io/jfrog/artifactory-oss的值。
如今,當你點擊Launch,Rancher就會把Artifactory部署到你的集羣上。
當安裝完成後,紅色的進度條會變動爲綠色。這時若是你點到artifactory上,它會展現Rancher給你建立好的資源。在本例中,它在Kubernetes中建立了三個工做負載,三個服務,一個卷以及一個加密。
選擇Workloads,你能夠看到它們都在運行:
解決Pending Ingress
在本文發佈時,出現了一個bug致使Ingress一直是Pendding狀態。若是你在單擊Load Balancing時看到這一點,請你閱讀解決方案。
想要解決pendding Ingress問題,咱們須要建立Ingress能發送流量的服務。點擊右上角的Import YAML,在打開的窗口中,粘貼下面的信息,而後單擊Import。
訪問Artifactory
如今在WordLoads界面,artifactory-artifactory-nginx工做負載下會顯示出用於查看443/tcp和80/tcp端口的可點擊連接:
當你選擇443/tcp時,它會在瀏覽器的新標籤頁中打開Artifactory UI。由於默認狀況下它使用了self-signed證書,你的瀏覽器可能會彈出一個警告,要求在執行以前接受證書。
讓Artifactory工做起來
如今你已經有了一個功能齊全的二進制工件倉庫可供差遣。過程不是很複雜不是嗎!接下來在開始使用它以前,還須要進行一些配置。
首先,須要設置管理密碼。當它詢問有關代理服務器的信息時,除非你已經將它部署到須要代理配置的位置上了,不然就選擇skip。建立一個通用倉庫,選擇Finish。
如今,咱們來快速過一下一些基本用法。
首先,咱們上傳以前用於建立Artifactory安裝的helm chart。
在左側菜單中選擇Artifacts,能夠看到剛剛建立的通用倉庫。選擇它,而後在右上角選擇Deploy,將Helm chart的zipfile(或任何其餘文件)上傳到倉庫中。
等部署完畢以後,你就能在倉庫中的Tree選項下看到它了。
雖然這只是對Artifactory的一個簡單測試,但它已是徹底能使用的了。
你能夠將Artifactory用於二進制工件存儲和分發,並使用Rancher輕鬆地管理工做負載、集羣以及與部署自己相關的內容。
清 理
若是你已經完成了本文中的demo,那麼就能夠從Rancher的Global Cluster視圖中刪除Kubernetes集羣。這步操做將會從GKE中把它移除掉。這以後,你就能夠直接從GCE中刪除Rancher Server的實例了。
關 閉
JFrog Artifactory很是的強大。天天都有大量的組織使用它,掌握快速且安全地將它部署到Kubernetes集羣中的能力是很是有用的。
根據他們的文獻所述,Artifactory讓用戶能夠「快速發佈或快速清除」。一樣的,Rancher讓你能快速部署,同時控制資源和周圍環境的安全性。你能夠在世界任何地方構建、部署、拆卸、加密、監控Kubernetes集羣以及與之交互,而全部的這些都只來自於一個簡單的、方便的、安全的接口。
沒什麼比這更容易的了!