第三十一章 九析帶你輕鬆完爆 Istio - 服務條目 ServiceEntry 實例

系列文章:


總目錄索引:九析帶你輕鬆完爆 istio 服務網格系列教程

1 前言

2 邀約

3 服務條目(Service Entries)介紹

4 服務條目樣例

    4.1 服務條目資源

    4.2 istio 注入客戶端資源

5 驗證服務條目樣例

    5.1 登錄 client

    5.2 調整 service entiries 解析類型

6 總結


1 前言

        如果你對博客有任何疑問,請告訴我。

1.png


2 邀約

        你可以從 b 站搜索 “九析”,獲取免費的、更生動的視頻資料:

clipboard2.png


3 服務條目(Service Entries)介紹

        使用服務條目資源(Service Entries)可以將條目添加到 Istio 內部維護的服務註冊表中。添加服務條目後,Envoy 代理可以將流量發送到該服務,就好像該服務條目是網格中的服務一樣。通過配置服務條目,可以管理在網格外部運行的服務的流量。

        此外,可以配置虛擬服務和目標規則,以更精細的方式控制到服務條目的流量,就像爲網格中的其他任何服務配置流量一樣。


4 服務條目樣例

        上面的介紹有點晦澀,不如我們直接給一個樣例出來,該樣例包含兩個資源文件:

jiuxi-client.yaml # istio 要注入的客戶端資源文件

jiuxi-svc-entry.yaml # 服務條目資源文件

4.1 服務條目資源

        jiuxi-svc-entry.yaml 內容如下:

spacer.gifclipboard3.png

        該服務條目資源定義了一個外部網站 baidu,並將它納入到 Istio 內部維護的服務註冊表中。執行如下語句創建 service entry 資源:

kubectl apply -f jiuxi-svc-entry.yaml

spacer.gifclipboard4.png

4.2 istio 注入客戶端資源

        jiuxi-client.yaml 客戶端資源文件如下:

clipboard5.pngspacer.gif

        編輯完,執行如下語句進行 Istio 注入:

istioctl kube-inject -f jiuxi-client.yaml | kubectl apply -f -

        執行成功後,查看 pod 發現容器個數爲 2 個,說明 istio 注入成功:

spacer.gifclipboard6.png

        Istio 注入後,client 就處於 Istio 服務網格之中。


5 驗證服務條目樣例

5.1 登錄 client

        執行如下語句登錄 client:

kubectl exec -it $(kubectl get pods | grep -i client | awk '{print $1}') -- sh

        登陸 client,訪問 www.baidu.com 成功,如下所示:

spacer.gifclipboard7.png

        你可能會迷惑,難道這就是服務條目?不是訪問外網嗎?

        好吧,這還就真是服務條目。爲了解除你心中的疑惑,我們現在來對剛纔編寫的 service entries 資源做一些手腳。

5.2 調整 service entiries 解析類型

        調整內容如下所示:

spacer.gifclipboard8.png

        添加了域名解析類型爲 static,同時給出一個自定義 IP:192.168.182.188。再次 kubectl apply 後登陸 client 查看:

spacer.gifclipboard9.png

        再次訪問 baidu,發現已經不會成功了,多試驗幾次,一樣不會成功。

        出現此問題的原因是,service entry 一直都在發揮作用,前面沒報錯的原因是默認指定的域名解析是基於 DNS 的。而調整後,我們設置了靜態域名解析的方式,並隨意給了一個內網 IP 來標識 baidu。kubectl apply service entry 後此配置立刻就被應用在網格內(client)的 envoy,那麼在網格內訪問 baidu 的時候,流量就被路由到了我們所指定的 192.168.182.188 去了。

        執行如下語句刪除 service entry,再次登錄 client 訪問 baidu,發現歲月靜好。

spacer.gifclipboard10.png


6 總結

        使用 service entry 使用場景有哪些?九析這裏給你一個場景,比如工作過程中你需要調用外部合作方服務,該服務跟你的集羣毫無關係,甚至對方服務可以佈置在美國。但是通過服務條目,你可以將對方服務納入到自己的 Istio 網格之內,就像它本身存在你的集羣之內一樣,就好像你做了內網攔截一樣。而且服務條目可以結合虛擬服務(virtual service)、目的地規則(destination rule)做更加精細的流量控制,不僅如此,還可以做失敗注入、重試等功能。

        自此,九析帶你輕鬆完爆 service entry。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章