手摸手帶你 在Windows系統(tǒng)中安裝Istio

Istio簡介
通過負載均衡、服務(wù)間的身份驗證、監(jiān)控等方法,Istio 可以輕松地創(chuàng)建一個已經(jīng)部署了服務(wù)的網(wǎng)絡(luò),而服務(wù)的代碼只需很少更改甚至無需更改。

通過在整個環(huán)境中部署一個特殊的 sidecar 代理為服務(wù)添加 Istio 的支持,而代理會攔截微服務(wù)之間的所有網(wǎng)絡(luò)通信,然后使用其控制平面的功能來配置和管理 Istio,包括:

為 HTTP、gRPC、WebSocket 和 TCP 流量自動負載均衡。

通過豐富的路由規(guī)則、重試、故障轉(zhuǎn)移和故障注入對流量行為進行細粒度控制。

可插拔的策略層和配置 API,支持訪問控制、速率限制和配額。

集群內(nèi)(包括集群的入口和出口)所有流量的自動化度量、日志記錄和追蹤。

在具有強大的基于身份驗證和授權(quán)的集群中實現(xiàn)安全的服務(wù)間通信。

在Istio官方文檔中,安裝Istio是以Linux或MacOS系統(tǒng)為例的,對于Windows用戶不是很友好,不過真難不倒我們。

安裝 Hyper-V
Hyper-V是微軟提出的一種系統(tǒng)管理程序虛擬化技術(shù),能夠?qū)崿F(xiàn)桌面虛擬化。Hyper-V 可用于 64 位 Windows 10 專業(yè)版、企業(yè)版和教育版。它無法用于家庭版。

點擊“小窗戶”,然后再點擊“設(shè)置”,如下圖:

設(shè)置
在搜索框中輸入“啟用或關(guān)閉Windows功能”,如下圖:


啟用或關(guān)閉Windows功能
點擊“啟用或關(guān)閉Windows功能”后,勾選“Hyper-V”所有選項,如下圖:


Hyper-V
點擊“確定”,等一會兒就安裝好了。(可能需要重啟電腦)

安裝 Docker Desktop
訪問https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe下載,雙擊Docker Desktop Installer.exe運行安裝程序。按照安裝向?qū)系恼f明授權(quán)安裝程序并繼續(xù)進行安裝。

安裝完成后,啟動Docker Desktop,等一會兒初始化完成后,將啟動入門教程:


Docker Desktop
這個教程包括一個簡單的練習(xí),以構(gòu)建示例Docker鏡像,將其作為容器運行,將映像推送并保存到Docker Hub。

開啟 Kubernetes
在Docker Desktop的設(shè)置中,為 Kubernetes 配置 CPU 和 內(nèi)存資源,建議分配4核或更多CPU,8GB或更多內(nèi)存,如下圖:


在Docker Desktop的設(shè)置中,勾選開啟 Kubernetes 和 顯示系統(tǒng)容器,如下:







重啟Docker Desktop后,等待Kubernetes啟動,啟動成功后,可以看到Kubernetes的標(biāo)簽變成綠色,并且在容器列表中可以看到Kubernetes相關(guān)的容器,如下圖:


安裝
到Istio的官方網(wǎng)站(https://github.com/istio/istio/releases)下載windows系統(tǒng)的安裝包,如下圖:


把壓縮包解壓到你覺得安逸的目錄里,然后把istio-1.14.0\bin目錄添加到環(huán)境變量中。

打開命令提示符,執(zhí)行istioctl version命令可以看到IIstio的版本信息,說明環(huán)境變量設(shè)置成功,如下圖:


執(zhí)行如下命令,安裝Istio:

istioctl install --set profile=demo -y
本次安裝采用 demo 配置組合。選擇它是因為它包含了一組專為測試準(zhǔn)備的功能集合,另外還有用于生產(chǎn)或性能測試的配置組合。

稍等片刻,我們就可以看到:

C:\萬貓學(xué)社> istioctl install --set profile=demo -y
 ? Istio core installed
 ? Istiod installed
 ? Egress gateways installed
 ? Ingress gateways installed
 ? Installation complete
執(zhí)行如下命令,查看Istio是否安裝成功:

kubectl get pods -n istio-system
可以看到 Istio 相關(guān)的 Pod 都處于 Running 狀態(tài),如下圖:


kubectl get pods -n istio-system
給命名空間添加標(biāo)簽,指示 Istio 在部署應(yīng)用的時候,自動注入 Envoy 邊車代理:

kubectl label namespace default istio-injection=enabled
至此,Istio已經(jīng)在在Windows上安裝完成了。如果你還想進行一些學(xué)習(xí)或者測試Istio的功能,可以部署示例應(yīng)用。

部署示例應(yīng)用
進入istio-1.14.0目錄中,執(zhí)行以下命令,部署 Bookinfo 示例應(yīng)用:

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
如下圖:


kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
稍等幾分鐘后,執(zhí)行kubectl get pods命令我們就可以看到Bookinfo 示例應(yīng)用相關(guān)的 Pod 都處于 Running 狀態(tài),如下圖:


kubectl get pods
最后,我們通過檢查返回的頁面標(biāo)題,來驗證應(yīng)用是否已在集群中運行,并已提供網(wǎng)頁服務(wù):

# 獲取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>"
具體操作如下圖:


返回的頁面標(biāo)題為:<title>Simple Bookstore App</title>。




作者:萬貓學(xué)社

歡迎關(guān)注微信公眾號 :萬貓學(xué)社