JFrog Artifactory是一個artifacts倉庫管理平臺,它支持所有的主流打包格式、構建工具和持續集成(CI)服務器。它將所有二進制內容保存在一個單一位置並提供一個接口,這使得用戶在整個應用程序開發和交付過程中,能更易於上傳、查找和使用二進制文件。
在本文中我們將介紹如何使用Rancher在Kubernetes集羣上部署和管理JFrog Artifactory。在看完本文後,你將會系統地瞭解JFrog Artifactory OSS的安裝設置,並且能夠按照同樣的步驟在任何Kubernetes集羣中安裝Artifactory OSS或者它的商業版本。當然,我們還將向你展示如何在Artifactory中創建通用倉庫並且向其中上傳工件。
除了文章中所展示的之外,Artifactory還有更多特性,在以後的文章中我們會更詳細地介紹它們。
好了,那麼我們開始吧!
使用的軟件
本文使用了下列的軟件工具:
-
Rancher v2.0.8
-
運行在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集羣以及與之交互,而所有的這些都只來自於一個簡單的、方便的、安全的接口。
沒什麼比這更容易的了!