前言
在介紹DHorse的操作之前,先來介紹一下使用k8s釋出應用的步驟,以SpringBoot應用為例進行說明。
1.首先從程式碼倉庫下載程式碼,比如GitLab;
2.接著進行構建,比如使用Maven;
3.如果要使用k8s作為編排,還需要把步驟2產生的包製作成映象,比如使用Docker;
4.上傳步驟3的映象到遠端倉庫,比如Harhor;
5.最後,下載映象並編寫Deployment檔案部署到雲叢集,比如k8s;
DHorse簡化了以上步驟的流程,使用它部署應用變得更簡單,下面詳細介紹。
DHorse操作說明
配置程式碼倉庫
如圖1所示:
圖1
配置映象倉庫
如圖2所示:
圖2
配置叢集
進入“叢集管理”選單,可以進行新增叢集操作,假如已經部署好k8s叢集,則可以新增到DHorse,如圖4所示:
圖4
可以透過如下方式生成k8s的認證令牌:
- 小於1.24版本
kubectl create serviceaccount dhorse-admin -n kube-system
kubectl create clusterrolebinding dhorse-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dhorse-admin
secret=$(kubectl get -n kube-system serviceaccounts dhorse-admin -o jsonpath='{.secrets[0].name}')
kubectl get -n kube-system secrets $secret -o jsonpath='{.data.token}' | base64 -d
- 大於等於1.24版本
kubectl create serviceaccount dhorse-admin -n kube-system
kubectl create clusterrolebinding dhorse-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dhorse-admin
kubectl create token dhorse-admin -n kube-system --duration 867240h
建立應用
在“應用管理”選單下,以新增SpringBoot應用為例(https://jihulab.com/tiandizhiguai/hello-springboot),如圖6、圖7所示:
圖6
圖7
其中,圖6中的“程式碼倉庫地址”是對應程式碼倉庫定義的專案路徑或專案編號,比如GitLab的專案ID如圖8所示:
圖8
新增應用完成以後,就可以在“釋出管理”選單下看到分支資訊,如圖9所示:
圖9
可以看出,在分支列表裡可以分別對每個分支進行“構建版本”操作,以master分支構建為例,如圖10所示:
圖10
然後進入“版本列表”選單,可以看到產生了一條版本記錄,狀態是構建中,同時也可以檢視該版本的構建日誌,如圖11所示:
圖11
特別注意,第一次構建版本時由於Maven需要下載依賴的包,速度會比較慢,需要耐心等待。接下來,就可以建立一個環境,然後使用剛才構建的版本釋出該環境。
釋出服務
進入“環境管理”選單,然後進行新增環境操作,如圖12所示:
圖12
其中,“環境模板”選項的值可以在“系統配置-環境模板”選單下進行配置。
儲存之後,“環境管理”列表裡會出現一條環境記錄,如果13所示:
圖13
接著,可以在“操作”列點選“部署”按鈕,如圖14所示:
圖14
選擇剛才的版本,並點選“確認部署”。然後,進入到“部署歷史”選單下,可以看到產生了一條部署記錄,同樣可以檢視該記錄的日誌,如圖15所示:
圖15
等待部署完成以後,進入“副本管理”選單,可以看到副本(Pod)的相關資訊,如果16所示:
圖16
至此,一個完整的釋出流程完成了。最後,再來看看如何訪問hello應用的服務。
訪問服務
叢集內訪問
假如hello應用裡有一個/hello的api。
- 訪問單個副本的服務
可以透過“副本IP:埠”進行訪問,該方式在副本或Node節點都可以訪問通,如圖16所示的IP,訪問示例:http://10.32.1.153:8080/hello
- 透過負載均衡
DHorse在部署應用以後,會為每個應用啟動一個ClusterIP的service服務,那麼就可以在副本里透過“應用名稱-環境標識.名稱空間:服務埠”的形式來訪問其他應用的服務,訪問示例如:http://hello-qa.default:8080/hello ,叢集內服務之間的呼叫,推薦該方式。
叢集外訪問
兩種方式:
-
透過建立NodePort或LoadBalancer,目前DHorse不支援,如果需要可以手動在叢集內建立;
-
打通叢集內外的網路,該方式需要運維的支援,如:透過靜態路由轉發等。叢集內外網路互通以後,在叢集外部就可以直接訪問副本的IP了。