通過負載均衡、服務間的身份驗證、監控等方法,Istio 可以輕鬆地建立一個已經部署了服務的網路,而服務的程式碼只需很少更改甚至無需更改。
通過在整個環境中部署一個特殊的 sidecar 代理為服務新增 Istio 的支援,而代理會攔截微服務之間的所有網路通訊,然後使用其控制平面的功能來設定和管理 Istio,包括:
在Istio官方檔案中,安裝Istio是以Linux或MacOS系統為例的,對於Windows使用者不是很友好,不過真難不倒我們。
Hyper-V是微軟提出的一種系統管理程式虛擬化技術,能夠實現桌面虛擬化。Hyper-V 可用於 64 位 Windows 10 專業版、企業版和教育版。 它無法用於家庭版。
點選「小窗戶」,然後再點選「設定」,如下圖:
在搜尋方塊中輸入「啟用或關閉Windows功能」,如下圖:
點選「啟用或關閉Windows功能」後,勾選「Hyper-V」所有選項,如下圖:
點選「確定」,等一會兒就安裝好了。(可能需要重啟電腦)
存取https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe下載,雙擊Docker Desktop Installer.exe執行安裝程式。按照安裝嚮導上的說明授權安裝程式並繼續進行安裝。
安裝完成後,啟動Docker Desktop,等一會兒初始化完成後,將啟動入門教學:
這個教學包括一個簡單的練習,以構建範例Docker映象,將其作為容器執行,將映像推播並儲存到Docker Hub。
在Docker Desktop的設定中,為 Kubernetes 設定 CPU 和 記憶體資源,建議分配4核或更多CPU,8GB或更多記憶體,如下圖:
在Docker Desktop的設定中,勾選開啟 Kubernetes 和 顯示系統容器,如下:
重啟Docker Desktop後,等待Kubernetes啟動,啟動成功後,可以看到Kubernetes的標籤變成綠色,並且在容器列表中可以看到Kubernetes相關的容器,如下圖:
到Istio的官方網站(https://github.com/istio/istio/releases)下載windows系統的安裝包,如下圖:
把壓縮包解壓到你覺得安逸的目錄裡,然後把istio-1.14.0\bin
目錄新增到環境變數中。
開啟命令提示字元,執行istioctl version
命令可以看到IIstio的版本資訊,說明環境變數設定成功,如下圖:
執行如下命令,安裝Istio:
istioctl install --set profile=demo -y
本次安裝採用 demo 設定組合。 選擇它是因為它包含了一組專為測試準備的功能集合,另外還有用於生產或效能測試的設定組合。
稍等片刻,我們就可以看到:
C:\萬貓學社> istioctl install --set profile=demo -y
✔ Istio core installed
✔ Istiod installed
✔ Egress gateways installed
✔ Ingress gateways installed
✔ Installation complete
執行如下命令,檢視Istio是否安裝成功:
kubectl get pods -n istio-system
可以看到 Istio 相關的 Pod 都處於 Running 狀態,如下圖:
給名稱空間新增標籤,指示 Istio 在部署應用的時候,自動注入 Envoy 邊車代理:
kubectl label namespace default istio-injection=enabled
至此,Istio已經在在Windows上安裝完成了。如果你還想進行一些學習或者測試Istio的功能,可以部署範例應用。
進入istio-1.14.0
目錄中,執行一下命令,部署 Bookinfo 範例應用:
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
如下圖:
稍等幾分鐘後,執行kubectl get pods
命令我們就可以看到Bookinfo 範例應用相關的 Pod 都處於 Running 狀態,如下圖:
最後,我們通過檢查返回的頁面標題,來驗證應用是否已在叢集中執行,並已提供網頁服務:
# 獲取ratings的Pod名稱
kubectl get pod -l app=ratings -o jsonpath={.items[0].metadata.name}
# 替換掉ratings的Pod名稱
kubectl exec ratings的Pod名稱 -c ratings -- curl -s productpage:9080/productpage | findstr /r "<title>.*</title>"
具體操作如下圖:
返回的頁面標題為:<title>Simple Bookstore App</title>
。
最後,感謝你這麼帥,還給我點贊。