基于Istio的多網關運行時:配置、部署和應用

1. 引言

Istio是一個開源的服務網格,主要應用于簡化微服務架構中的服務間通信、提供強大的監控能力以及加強服務的安全管理。通過利用Sidecar模式部署的Envoy代理,Istio能夠在幾乎無需修改服務代碼的情況下,實現服務發現、負載均衡、加密通信、訪問控制等功能。本文將就如何在 Kubernetes 集群環境下,在 istio-system之外的命名空間中配置、部署和應用用戶自定義的網關運行時 Ingress Gateway進行探討。

2. Istio 處理入站請求的流程

在 Kubernetes 集群環境中,默認配置下的 Istio 將會部署至 istio-system 命名空間下,通過向 pod 中自動注入代理容器,Istio 將 pod 納入服務網格的管理之中,實現對服務間通信的統一管理和控制。在 istio-system 命名空間中,網關運行時負責處理所有流入服務網格的外部流量。網關運行時將根據 CRD 資源 Gateway 中的定義監聽特定的域名與端口,并根據 Virtual Service 與 Destination Rule 將請求智能地路由到后端的 Kubernetes Service,并最終訪問到對應的微服務。

3. 為什么需要部署多個網關運行時 Ingress Gateway?

為了保證關鍵應用的可訪問性,用戶可能希望將關鍵應用與一般業務應用進行隔離或單獨配置。此外,在多租戶的情景下,僅利用 Istio-system 命名空間下的默認 Istio 進行管理可能會引起網關運行時宕機,進而導致在訪問各租戶部署的應用時出現異常。

為避免上述可能出現的問題,用戶可以在其他命名空間中,為每個租戶或一組相關服務單獨地部署一套網關運行時Ingress Gateway。這樣做能夠:

1.????? 有效隔離應用間的網絡流量,減少相互影響,提高系統的穩定性和安全性;

2.????? 能夠令用戶根據自身需求定制化網絡策略和配置,如不同的安全策略、路由規則等,而不受全局配置的限制;

3.????? 此外,在默認的 Ingress Gateway出現問題而下線時,應用其它命名空間部署的網關運行時可以減少默認 Ingress Gateway 下線對關鍵應用的影響,便于故障排查和恢復,同時減少對整體服務的影響。

4.?? 用戶自定義網關運行時Ingress Gateway的配置與部署

Ingress Gateway 在 Kubernetes 其他命名空間中的部署依賴于五類 Kubernetes資源,它們默認位于 istio-system 命名空間下,其類型與默認名稱如下所示:

1.????? Deployment: istio-ingressgateway;

2.????? Service: istio-ingressgateway;

3.????? ServiceAccount: istio-ingressgateway-service-account;

4.????? Role: istio-ingressgateway-sds;

5.????? RoleBinding: istio-ingressgateway-sds。

通過獲取 istio-system 命名空間中的 Ingress Gateway 的上述五類資源的 YAML 文件,我們即可獲得一個網關運行時的配置副本模板。之后,通過對上述資源 YAML 文件中的特定字段進行自定義,用戶即可在自己擁有權限的命名空間中部署獨立的 Ingress Gateway 管理應用流量。具體配置修改如下:

對于 Deployment,為了保證 Gateway 資源中的選擇器 Selector 能夠精準匹配到用戶配置的 Ingress Gateway,需要對 Deployment 資源的 Label 進行單獨配置,其中的 app 字段與 istio 字段可由用戶自行定義,如 app: “user-defined”,istio: “user-ingressgateway” 等。之后,再在 Gateway 的 spec.selector 字段中配置上述 label。應保證 Gateway 資源 YAML 中 spec.selector 字段與用戶自建的網關運行時的用戶修改后的 Label 一致,否則會導致 Gateway 資源不能與用戶自建的網關運行時關聯。

為了防止 Istio 將用戶命名空間中部署的 Ingress Gateway 作為普通應用納入服務網格中管理,需要在其 Deployment 的 spec.template.annotations 字段中保證sidecar.istio.io/inject: "false" 字段的存在。

而在 Service 中,可以根據實際需求修改 Service 的類型為 NodePort 或 LoadBalancer。在改為 NodePort 時,需要保證 Service 中配置的五個端口值(status-port,http2,https,tcp,tls)均未被占用。

對于 ServiceAccount、Role與RoleBinding,在修改ServiceAccount與Role的資源名后需要在 RoleBinding 中對應地更新資源名稱。

通過利用修改后的 YAML 在 Kubernetes 集群的特定命名空間中進行部署,即可實現用戶自定義的 Ingress Gateway。在完成 Gateway 的配置之后,后續的 Virtual Service 與 Destination Rule 的配置則與在默認的網關運行時上進行配置的步驟相同。

5.?? 用戶自定義網關運行時Ingress Gateway的應用

在完成上述配置之后,便實現了用戶自建的網關運行時 Ingress Gateway – Gateway – Virtual Service 等資源的聯動,用戶能夠根據 Gateway 的定義利用域名:端口訪問 Kubernetes 集群中的資源。下圖為一個簡單樣例,展示了在按照上述流程設置成功后,訪問集群中某命名空間中的 nginx 的測試頁面。其中,在 Gateway 和 VirtualService 中配置了 a.cn 的路由規則,并在 host 文件中對 a.cn 配置了對應的 IP 地址,端口號為用戶自建的網關運行時的 Service 中的 http2 對應的 Nodeport 端口。

6.?? 總結

本文主要介紹了如何通過獲取位于Kubernetes集群環境中的 istio-ingressgateway 的 yaml 資源模板,以及如何經過用戶自行修改配置并在自己指定的命名空間中部署與應用。

種草環節:歡迎大家下載我們的inBuilder低代碼平臺開源社區版,可免費下載使用,加入我們,開啟開發之旅!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40894.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40894.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40894.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【LinuxC語言】管理者線程函數

文章目錄 前言工作者工作流程函數實現實現原理函數代碼概況總結前言 在并發編程中,管理者線程函數是一個重要的組成部分,它負責管理和調度工作線程。在Linux C語言環境下,我們可以使用POSIX線程庫(pthread)來創建和控制管理者線程。管理者線程通常負責添加任務到任務隊列…

WRF學習——使用CMIP6數據驅動WRF/基于ncl與vdo的CMIP6數據處理

動力降尺度 國際耦合模式比較計劃(CMIP)為研究不同情景下的氣候變化提供了大量的模擬數據,而在實際研究中,全球氣候模式輸出的數據空間分辨率往往較低(>100Km,缺乏區域氣候特征,為了更好地研…

有哪些在本地運行大模型的方法

前言 在本文中,我們將看到在本地運行任何 LLM 的不同方法 1/ LMStudio LM Studio 是一款桌面應用程序,用于在計算機上運行本地 LLM。鏈接:https://lmstudio.ai/ 2/ Ollama Ollama 是一款工具,可讓您在機器上本地運行開源大型語…

vue項目靜態圖片下載

正常情況下只需要傳入圖片路徑就可以進行下載 methods: {downs(path, name) {//必須同源才能下載var alink document.createElement("a");alink.href path;alink.download name; //圖片名alink.click();},}, 但是當我們downs方法中直接傳入"/assets/load/xx…

二、分布式軟總線是如何高效的傳輸數據和任務的

分布式軟總線在HarmonyOS中高效傳輸數據和任務主要依靠以下幾個關鍵技術點和設計原則: 設備快速發現與連接: 利用多種通信技術(如Wi-Fi、藍牙、有線連接等),結合廣播、多播及服務發現協議,實現設備間的快速發現與穩定連接。這包括設備的唯一標識管理、網絡條件自適應選擇…

【pytorch14】感知機

單層感知機模型 對于單層的感知機,它的激活函數是一個sigmoid 對于符號的定義做一個規范化,輸入層每一層進行一個編號 輸入是第0層,上標0表示屬于輸入層,下標0到n表示一共有n個節點(這里嚴格來說應該是0~n-1,為了書寫…

一站式廣告監測新體驗,Xinstall助你廣告投放更精準

在這個移動互聯網飛速發展的時代,App推廣與運營成為了每個開發者與廣告主關注的焦點。然而,面對琳瑯滿目的廣告平臺和復雜的投放環境,如何精準評估廣告效果、優化投放策略,成為了擺在面前的一道難題。今天,我們就來聊聊…

Jemeter--關聯接口壓測

Jemeter–獨立不變參接口壓測 Jemeter–獨立變參接口壓測 Jemeter–關聯接口壓測 案例分析 比如:有個波次復核接口很慢,優化后需要壓測。但是波次復核接口數據是由另外兩個接口(配單詳情、內盒信息)的數據組合而來,而…

排序題目:三個數的最大乘積

文章目錄 題目標題和出處難度題目描述要求示例數據范圍 解法一思路和算法代碼復雜度分析 解法二思路和算法代碼復雜度分析 題目 標題和出處 標題:三個數的最大乘積 出處:628. 三個數的最大乘積 難度 3 級 題目描述 要求 給定一個整數數組 nums …

fastadmin最新版導出數據時 表格中會有 html標簽的解決辦法

fastadmin 自帶的導出方法, 是一個純前端的導出, 沒有請求后臺的接口 當我們使用導出功能時, 有些數據, 我們在設計的時候,配置的是 枚舉類型的 但是當我們導出數據的時候, 居然導出的數據中帶有 html 的…

使用el-col和el-row布局,有版心,一頁有兩欄布局 三欄布局 四欄布局 使用vue動態渲染元素

使用Vue結合Element UI的el-row和el-col組件來實現版心布局,并動態渲染不同欄數的布局,可以通過以下步驟實現: 定義版心容器:使用el-container來定義整個頁面的容器,其中el-header、el-main、el-footer分別定義頭部、主…

k8s-第十節-Ingress

Ingress 介紹 Ingress 為外部訪問集群提供了一個 統一 入口,避免了對外暴露集群端口;功能類似 Nginx,可以根據域名、路徑把請求轉發到不同的 Service。可以配置 https 跟 LoadBalancer 有什么區別? LoadBalancer 需要對外暴露…

Promise解決異步編程問題

一個典型的異步編程問題:即您嘗試在循環中發起多個異步請求,并希望在所有請求都完成后執行某些操作。然而,由于JavaScript的異步性質,num和total的比較在循環結束時立即執行,而不是在所有請求都完成后執行。這可能導致…

【12321騷擾電話舉報受理中心-短信驗證安全分析報告】

前言 由于網站注冊入口容易被黑客攻擊,存在如下安全問題: 暴力破解密碼,造成用戶信息泄露短信盜刷的安全問題,影響業務及導致用戶投訴帶來經濟損失,尤其是后付費客戶,風險巨大,造成虧損無底洞…

開發常識:命令行終端、庫源碼、開發環境階段

目錄 命令行終端 集成開發環境(IDE ):有插件校驗等限制,成功率低于操作系統 庫源碼 github上搜 官網 UNPKG托管開源的包 專業名詞 環境 開發:本地機 開發和調試 生產:最終部署 測試:…

交流負載箱的主要功能有哪些?

交流負載箱可以模擬各種實際用電設備的功率、電流、電壓等參數,使得電源系統在運行過程中能夠承受實際負載的考驗,確保電源系統的穩定運行。通過交流負載箱對電源設備進行測試,可以檢測出電源設備在過載、短路等異常情況下的保護功能是否正常…

Linux和mysql中的基礎知識

cpu讀取的指令大部分在內存中(不考慮緩存) 任何程序在運行之前都的加入到內存。 eip->pc指針,指明當前指令在什么位置。 代碼大概率是從上往下執行的,基于這樣的基本理論。既可以將一部分指令加載到CPU對應的緩存中&#xf…

解決zip文件中文亂碼問題

后臺微服務運行在linux環境里,前端Vue。在一個項目中,把后臺的文件打包成zip,下載到前臺。結果發現zip文件名本身亂碼,zip文件內壓縮的文件也是亂碼。所謂亂碼,程序員都見過,就是中文變成了亂七八糟的字符。…

【CSAPP】-datalab實驗

實驗原理與內容 本實驗每位學生拿到一個datalab-handout.tar文件。學生可以通過U盤、網盤、虛擬機共享文件等方式將其導入到Unbuntu實驗環境中,選擇合適位置存放。然后在Ubuntu環境下解壓。解壓后,根據文件中的敘述和要求更改bits.c文件。本次實驗的主要…

【全網最全】2024年APMCM第十四屆亞太地區大學生數學建模競賽(中文賽項)完整思路解析+代碼+論文

我是Tina表姐,畢業于中國人民大學,對數學建模的熱愛讓我在這一領域深耕多年。我的建模思路已經幫助了百余位學習者和參賽者在數學建模的道路上取得了顯著的進步和成就。現在,我將這份寶貴的經驗和知識凝練成一份全面的解題思路與代碼論文集合…