1. 程式人生 > >在Kubernetes叢集上部署和管理JFrog Artifactory

在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叢集以及與之互動,而所有的這些都只來自於一個簡單的、方便的、安全的介面。

沒什麼比這更容易的了!