昨天非常快速的介紹了一下 Helm,了解了基礎的安裝與使用方式後,今天我們要試著用 Helm 來重新部署並安裝我們的 Open-Match,試著感受一下,有使用 Helm 將 yaml 拆分為 template 與 value 的好處。
helm repo add open-match https://open-match.dev/chart/stable
helm install open-match --create-namespace --namespace open-match open-match/open-match \
--set open-match-customize.enabled=true \
--set open-match-customize.evaluator.enabled=true \
--set open-match-override.enabled=true \
--set query.replicas=1 \
--set frontend.replicas=1 \
--set backend.replicas=1
~ helm list -n open-match
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
open-match open-match 1 2021-09-26 21:16:24.437724 +0800 CST deployed open-match-1.2.0 1.2.0
~ kubectl get pods -n open-match
NAME READY STATUS RESTARTS AGE
open-match-backend-5bcfd664dd-pg5bx 1/1 Running 0 3m55s
open-match-evaluator-68b657c9d9-5w6qr 1/1 Running 0 3m55s
open-match-evaluator-68b657c9d9-8lrrn 1/1 Running 0 3m55s
open-match-evaluator-68b657c9d9-h9gsw 1/1 Running 0 3m55s
open-match-frontend-8478cb9d9b-cjmwx 1/1 Running 0 3m54s
open-match-query-8545bbb4d4-xzwkw 1/1 Running 0 3m54s
open-match-redis-node-0 3/3 Running 0 3m54s
open-match-redis-node-1 3/3 Running 0 3m42s
open-match-swaggerui-6658d4c55b-dphnl 1/1 Running 0 3m54s
open-match-synchronizer-85b5dc89d8-gwz4j 1/1 Running 0 3m54s
基本上當我們使用 Helm 進行安裝的時候,我們使用的是 chart ,由於已經將 yaml 的部分參數拆分成模板與values,我們首先可以感受到最大的好處是,可以在部署時直接針對部分變數做調整,讓我們看一下預設 value 檔案的內容進行比較。
backend templates
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "openmatch.backend.hostName" . }}
namespace: {{ .Release.Namespace }}
annotations: {{- include "openmatch.chartmeta" . | nindent 4 }}
labels:
app: {{ template "openmatch.name" . }}
component: backend
release: {{ .Release.Name }}
spec:
replicas: {{ .Values.backend.replicas }}
values
backend: &backend
hostName:
grpcPort: 50505
httpPort: 51505
portType: ClusterIP
replicas: 3
image: openmatch-backend
首先原本我們可能在不同環境,需要部署不一樣數量的的 pods 時,需要準備多份或異動 yaml ,現在可以透過準備抽好的 values ,方便管理不同環境的差異,這就是模板化的好處,整個部署設定檔化,一目瞭然方便管理。其次透過 Helm cli tool 提供的功能,我可以在部署的時候,以 —set
來調整模板預先抽好的變數名稱內容。
同樣利用 helm 來改變我們的部署規模,將 open-match-query 調整為 2
helm upgrade open-match --namespace open-match open-match/open-match \
--set open-match-customize.enabled=true \
--set open-match-customize.evaluator.enabled=true \
--set open-match-override.enabled=true \
--set query.replicas=2 \
--set frontend.replicas=1 \
--set backend.replicas=1
Result
~ kubectl get pods -n open-match
NAME READY STATUS RESTARTS AGE
open-match-backend-5bcfd664dd-pg5bx 1/1 Running 0 35m
open-match-evaluator-68b657c9d9-5w6qr 1/1 Running 0 35m
open-match-evaluator-68b657c9d9-8lrrn 1/1 Running 0 35m
open-match-evaluator-68b657c9d9-h9gsw 1/1 Running 0 35m
open-match-frontend-8478cb9d9b-cjmwx 1/1 Running 0 35m
open-match-query-8545bbb4d4-74sfx 1/1 Running 0 26s
open-match-query-8545bbb4d4-xzwkw 1/1 Running 0 35m
open-match-redis-node-0 3/3 Running 0 35m
open-match-redis-node-1 3/3 Running 0 34m
open-match-swaggerui-6658d4c55b-dphnl 1/1 Running 0 35m
open-match-synchronizer-85b5dc89d8-gwz4j 1/1 Running 0 35m
異動監控
REVISION 基於我們的調整改為 2,最後異動時間也同樣顯示於資訊中
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
open-match open-match 2 2021-09-26 21:51:00.68284 +0800 CST deployed open-match-1.2.0 1.2.0