DHorse操作手冊

tiandizhiguai發表於2022-11-28

在介紹DHorse的操作之前,我們先來看一下釋出一個系統的流程是什麼樣的。

釋出系統的流程

我們以一個Springboot系統為例,來說明一下發布流程。
1.首先從程式碼倉庫下載程式碼,比如Gitlab;
2.接著是進行打包,比如使用Maven
3.如果要使用k8s作為編排,還需要把步驟2產生的包製作成映象,比如使用Docker
4.上傳步驟3的映象到遠端倉庫,比如Harhor;
5.最後,下載映象並編寫Deployment檔案部署到雲叢集,比如k8s;
從以上步驟可以看出,釋出需要的工具和環境至少包括:程式碼倉庫(Gitlab)、打包環境(Maven)、映象製作(Docker)、映象倉庫(Harbor)、雲叢集(k8s)等;
在DHorse系統裡,有些環境是對於使用者來說是無需感知,因為已經做了整合,如:打包和映象製作,可以參考文章:《DHorse系列文章之映象製作》和《DHorse系列文章之maven打包》。其他的則需要配置,下面就一一介紹。

DHorse操作說明

程式碼倉庫配置

如圖1所示:
在這裡插入圖片描述圖1

映象倉庫配置

如圖2所示:
在這裡插入圖片描述圖2

Maven配置

如圖3所示:
在這裡插入圖片描述圖3
在這裡,可以指定打包時的Java版本資訊,如果不指定,則預設使用DHorse系統所在的環境。

叢集配置

進入“叢集管理”選單,可以進行新增叢集操作,假如已經部署好k8s叢集,則可以新增到DHorse,如圖4所示:
在這裡插入圖片描述圖4
我們可以透過如下方式生成k8s的認證令牌:

kubectl create serviceaccount "k8sadmin-dhorse" -n kube-system
kubectl create clusterrolebinding "k8sadmin-dhorse" --clusterrole=cluster-admin --serviceaccount=kube-system:k8sadmin-dhorse
secret=$(kubectl get -n kube-system serviceaccounts "k8sadmin-dhorse" -o jsonpath='{.secrets[0].name}')
kubectl get -n kube-system secrets $secret -o jsonpath='{.data.token}' | base64 -d

也可以開啟日誌收集功能,但是首先需要配置Dhorse安裝目錄下的conf/filebeat-k8s.yml檔案,進行filebeat的配置。
在叢集管理功能裡,同時也提供了對名稱空間管理的功能,如圖5所示:
在這裡插入圖片描述圖5
可以進行建立和刪除名稱空間。
完成以上配置以後,接下來我們就可以建立專案、建立版本、建立環境,然後進行釋出了。

建立專案

在“專案管理”選單下,可以新增專案操作,這裡以新增一個Springboot專案為例進行說明,如圖6、圖8所示:
在這裡插入圖片描述圖6
其中,程式碼倉庫地址是對應程式碼倉庫定義的專案路徑或專案編號,比如GitLab專案編號如圖7所示:
在這裡插入圖片描述圖7

在這裡插入圖片描述圖8

新增專案完成以後,就可以在“釋出管理”選單下看到分支資訊,如圖9所示:
在這裡插入圖片描述圖9

可以看出,在分支列表裡可以分別對每個分支進行“構建版本”操作,我們以對master分支進行構建版本為例,如圖10所示:
在這裡插入圖片描述圖10

然後進入“版本列表”選單,可以看到產生了一條版本記錄,同時也可以檢視該版本的構建日誌,如圖11所示:
在這裡插入圖片描述圖11

接下來,我們就可以建立一個環境,然後使用剛才構建的版本釋出該環境。

釋出專案

進入“環境管理”選單,然後進行新增環境操作,如圖12所示:
在這裡插入圖片描述圖12

儲存之後,“環境管理”列表裡會出現一條環境記錄,如果13所示:
在這裡插入圖片描述圖13

接著,我們可以在“操作”列點選“部署”按鈕,如圖14所示:
在這裡插入圖片描述圖14

選擇剛才的版本,並點選“確認部署”。此時,進入到“部署歷史”選單下,可以看到產生了一條部署記錄,同時可以檢視該記錄的日誌,如圖15所示:
在這裡插入圖片描述圖15

等待部署完成以後,進入“副本管理”選單,可以看到Pod的相關資訊,如果16所示:
在這裡插入圖片描述圖16

至此,一個完整的釋出流程完成了。那麼該如何訪問hello專案的服務呢?

訪問服務

叢集內訪問

假如hello專案裡有一個/hello的api。

  1. 訪問單個副本的服務
    透過“副本IP:埠”進行訪問,該方式在副本或Node節點都可以訪問通,如圖16所示的IP,訪問示例:http://10.32.1.153:8080/hello
  2. 透過負載均衡
    DHorse在部署專案以後,會預設為專案啟動一個ClusterIP的service服務,可以透過“專案名稱.名稱空間:服務埠”來訪問服務,該訪問只能在副本里進行,示例如:http://hello.default:8080/hello
    叢集內服務之間的呼叫,推薦該方式。

叢集外訪問

兩種方式:

  1. 透過建立NodePort或LoadBalancer,目前DHorse不支援,如果需要可以手動在叢集內建立;
  2. 打通叢集內外的網路,該方式需要運維的支援,如:透過靜態路由轉發等。叢集內外網路互通以後,在叢集外部就可以直接訪問副本的IP了。

如需更多瞭解,請訪問DHorse

相關文章