在Kubernetes集羣上部署和管理JFrog Artifactory

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容器,在啓動容器之前,我們需要一個計算實例來運行它,那麼我們用下面的命令啓動:

在Kubernetes集羣上部署和管理JFrog Artifactory

請你根據自己的部署修改project以及zone參數。

幾分鐘之後你應該能看到實例已經準備好了。

在Kubernetes集羣上部署和管理JFrog Artifactory

記錄下來EXTERNAL_IP地址,稍後連接Rancher Server的時候你可能會用到。

計算節點啓動並運行之後,我們通過GCE的CLI(命令行接口)SSH到它。

在Kubernetes集羣上部署和管理JFrog Artifactory

同樣,注意調整project和zone參數,在你用不同的name或者在不同的zone啓動節點時它們會變化。

連接之後,運行下面的命令安裝一些依賴包並且安裝Docker CE。Rancher Server是一個Docker容器,如果想要繼續安裝的話我們就需要用到Docker了。

在Kubernetes集羣上部署和管理JFrog Artifactory

有了這些之後,我們就可以部署Rancher服務器了。在第一次啓動容器時,Docker Engine會從Docker Hub中獲取容器鏡像,在啓動容器之前先將其保存在本地。以後容器要啓動時,就直接使用本地的鏡像,這樣速度會更快。

使用下面的命令控制Docker啓動Rancher Server容器,並監聽主機上的80和443端口

在Kubernetes集羣上部署和管理JFrog Artifactory

如果一切正常,在返回提示符之前Docker會打印出下載的狀態,接着是新的容器ID。

在Kubernetes集羣上部署和管理JFrog Artifactory

恭喜你!你已經成功啓動了一個Rancher Server實例。

在瀏覽器中輸入剛剛你記錄下來的EXTERNAL_IP地址,你需要接受Rancher默認安裝的self-signed證書。這之後,會彈出歡迎界面,設置密碼(記住它!)接着繼續下一頁。

在Kubernetes集羣上部署和管理JFrog Artifactory

在這一頁面上你需要設置Rancher Server的URL。在生產部署中這可能是一個主機名,比如rancher.yourcompany.com,但是如果你使用的是demo server,可以直接使用上面的EXTERNAL_IP地址。

在Kubernetes集羣上部署和管理JFrog Artifactory

點擊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):

在Kubernetes集羣上部署和管理JFrog Artifactory

輸出的service account會代替<SA>。複製整個地址並把它用到下面的命令:

在Kubernetes集羣上部署和管理JFrog Artifactory

這樣會在當前文件夾下創建一個名爲key.json的文件。這就是Service Account私鑰,Rancher將用它來創建集羣:

在Kubernetes集羣上部署和管理JFrog Artifactory

你可以把文件的內容粘貼到文本框中,也可以點擊Read from a file,選擇key.json文件。Rancher將使用該信息生成一個頁面,在頁面中配置你的新集羣:

在Kubernetes集羣上部署和管理JFrog Artifactory

設置你想要的Zone、Machine Type、Node Count以及Root Disk Size。當然你可以參考上圖demo中使用的默認值。

點擊Create,集羣就會部署到GKE上,一切ok後你可以在UI界面上看到它已經是活躍狀態的了。

在Kubernetes集羣上部署和管理JFrog Artifactory

安裝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倉庫的位置。

在Kubernetes集羣上部署和管理JFrog Artifactory

點擊Create,JFrog倉庫就會出現在自定義目錄的列表中了。

在Kubernetes集羣上部署和管理JFrog Artifactory

部署Artifactory

我們接着部署Artifactory。在Global視圖中,選擇jfrog-artifactory集羣下的默認項目:

在Kubernetes集羣上部署和管理JFrog Artifactory

進入默認項目後,選擇Catalog Apps,點擊Launch。Rancher將從Application Catalogs中顯示可用於安裝的應用程序。這裏你可能發現artifactory-ha出現了兩次,一次是作爲合作伙伴提供的chart出現在Rancher附帶的默認應用程序庫中,另一次是來自JFrog倉庫本身。我們安裝Helm倉庫是因爲我們想安裝常規的、非HA的Artifactory,我們就喊它artifactory。所有目錄下的應用程序都指明瞭它們來自哪個庫,所有在多個庫中都有chart的情況下,你仍然可以選擇安裝哪個庫

在Kubernetes集羣上部署和管理JFrog Artifactory

當你選擇View Details時,你可以更改有關如何安裝應用程序的選項。在默認情況下,此目錄項將部署已授權的Artifactory商業版本,爲此你需要證書。如果你已經擁有證書,那麼可以保留默認選項;但是,我們想安裝OSS版本,所以我們將更改chart安裝的鏡像。

我們在Configuration Options界面進行操作,選擇Add Answer,設置好artifactory.image.repository的變量名以及docker.bintray.io/jfrog/artifactory-oss的值。

在Kubernetes集羣上部署和管理JFrog Artifactory

現在,當你點擊Launch,Rancher就會把Artifactory部署到你的集羣上。

在Kubernetes集羣上部署和管理JFrog Artifactory

當安裝完成後,紅色的進度條會變更爲綠色。這時如果你點到artifactory上,它會展示Rancher給你創建好的資源。在本例中,它在Kubernetes中創建了三個工作負載,三個服務,一個卷以及一個加密。

選擇Workloads,你可以看到它們都在運行:

在Kubernetes集羣上部署和管理JFrog Artifactory

解決Pending Ingress

在本文發佈時,出現了一個bug導致Ingress一直是Pendding狀態。如果你在單擊Load Balancing時看到這一點,請你閱讀解決方案。

在Kubernetes集羣上部署和管理JFrog Artifactory

想要解決pendding Ingress問題,我們需要創建Ingress能發送流量的服務。點擊右上角的Import YAML,在打開的窗口中,粘貼下面的信息,然後單擊Import。

在Kubernetes集羣上部署和管理JFrog Artifactory

訪問Artifactory

現在在WordLoads界面,artifactory-artifactory-nginx工作負載下會顯示出用於查看443/tcp和80/tcp端口的可點擊鏈接:

在Kubernetes集羣上部署和管理JFrog Artifactory

當你選擇443/tcp時,它會在瀏覽器的新標籤頁中打開Artifactory UI。因爲默認情況下它使用了self-signed證書,你的瀏覽器可能會彈出一個警告,要求在執行之前接受證書。

在Kubernetes集羣上部署和管理JFrog Artifactory

讓Artifactory工作起來

現在你已經有了一個功能齊全的二進制工件倉庫可供差遣。過程不是很複雜不是嗎!接下來在開始使用它之前,還需要進行一些配置。

首先,需要設置管理密碼。當它詢問有關代理服務器的信息時,除非你已經將它部署到需要代理配置的位置上了,否則就選擇skip。創建一個通用倉庫,選擇Finish。

現在,我們來快速過一下一些基本用法。

首先,我們上傳之前用於創建Artifactory安裝的helm chart。

在左側菜單中選擇Artifacts,可以看到剛剛創建的通用倉庫。選擇它,然後在右上角選擇Deploy,將Helm chart的zipfile(或任何其他文件)上傳到倉庫中。

在Kubernetes集羣上部署和管理JFrog Artifactory

等部署完畢之後,你就能在倉庫中的Tree選項下看到它了。

在Kubernetes集羣上部署和管理JFrog Artifactory

雖然這只是對Artifactory的一個簡單測試,但它已經是完全能使用的了。

你可以將Artifactory用於二進制工件存儲和分發,並使用Rancher輕鬆地管理工作負載、集羣以及與部署本身相關的內容。

清 理

如果你已經完成了本文中的demo,那麼就可以從Rancher的Global Cluster視圖中刪除Kubernetes集羣。這步操作將會從GKE中把它移除掉。這之後,你就可以直接從GCE中刪除Rancher Server的實例了。

關 閉

JFrog Artifactory非常的強大。每天都有大量的組織使用它,掌握快速且安全地將它部署到Kubernetes集羣中的能力是非常有用的。

根據他們的文獻所述,Artifactory讓用戶可以“快速發佈或快速清除”。同樣的,Rancher讓你能快速部署,同時控制資源和周圍環境的安全性。你可以在世界任何地方構建、部署、拆卸、加密、監控Kubernetes集羣以及與之交互,而所有的這些都只來自於一個簡單的、方便的、安全的接口。

沒什麼比這更容易的了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章