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

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

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

為 HTTP、gRPC、WebSocket 和 TCP 流量自動(dòng)負(fù)載均衡。

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

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

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

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

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

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

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

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


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


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

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

安裝完成后,啟動(dòng)Docker Desktop,等一會(huì)兒初始化完成后,將啟動(dòng)入門教程:


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

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


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







重啟Docker Desktop后,等待Kubernetes啟動(dòng),啟動(dòng)成功后,可以看到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 配置組合。選擇它是因?yàn)樗艘唤M專為測試準(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)用的時(shí)候,自動(dòng)注入 Envoy 邊車代理:

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

部署示例應(yīng)用
進(jìn)入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àn)證應(yīng)用是否已在集群中運(yùn)行,并已提供網(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)注微信公眾號(hào) :萬貓學(xué)社