昨天非常粗淺的介紹過 istio 後,今天我們要來實際將 Istio mesh 注入我們的 cluster。此外會將今天的內容獨立為一篇,是因為筆者在嘗試,將 Istio 與 Open-Match 結合的過程並不順利,這邊準備好了最後成功的範例,希望可以多少幫助大家。
確認 Istio 核心已安裝
~ kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-egressgateway ClusterIP 10.97.46.6 <none> 80/TCP,443/TCP 4h18m
istio-ingressgateway LoadBalancer 10.108.148.225 localhost 15021:31844/TCP,80:31864/TCP,443:31448/TCP,31400:31199/TCP,15443:30257/TCP 4h18m
istiod ClusterIP 10.97.153.206 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4h18m
Label open-match namespace
kubectl label namespace open-match istio-injection=enabled
Deploy Redis
helm install -n open-match open-match-redis bitnami/redis \
--set architecture=standalone \
--set auth.enabled=false \
--set auth.sentinel=false
Deploy Open-Match core
helm install 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=1 \
--set frontend.replicas=1 \
--set backend.replicas=1 \
--set open-match-core.redis.enabled=false \
--set open-match-core.redis.hostname=open-match-redis-master
注意到我們在 step.3 特別部署了一個簡易的 redis,並且在 step.4 部署核心時,指定 Open-Match 使這個自訂的 redis,會這麼做是因為,筆者在直接使用原本核心提供的 redis 設定時,如果套上 istio 便會無法成功連線,很遺憾的是,目前我還沒有找到是哪個部分影響到。但透過自己指定 redis 的方式,目前測試起來是可以運作的。
部署官方範例
kubectl create namespace open-match-demo /
kubectl label namespace open-match-demo istio-injection=enabled /
kubectl apply -n open-match-demo -f https://open-match.dev/install/v1.3.0-rc.1/yaml/02-open-match-demo.yaml
增加核心 open-match-query 數量
helm upgrade open-match --namespace 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 \
--set open-match-core.redis.enabled=false \
--set open-match-core.redis.hostname=open-match-redis-master
觀察 2個 open-match-query 是否都有收到 queries
kubectl logs -n open-match open-match-query-{POD_ID}
都有持續觸發由 demo MMF 發出來的 debug log 就可以了
time="2021-10-01T01:14:06Z" level=debug msg="Ticket Cache update: Previous 2, Deleted 2, Fetched 3, Current 3" app=openmatch component=app.query
time="2021-10-01T01:14:17Z" level=debug msg="Ticket Cache update: Previous 3, Deleted 2, Fetched 0, Current 1" app=openmatch component=app.query
time="2021-10-01T01:14:28Z" level=debug msg="Ticket Cache update: Previous 1, Deleted 1, Fetched 1, Current 1" app=openmatch component=app.query