主頁 >  其他 > 云原生2.0網關API標準發展趨勢

云原生2.0網關API標準發展趨勢

2023-04-21 07:52:04 其他

摘要:Gateway API希望取代Ingress API,

本文分享自華為云社區《云原生2.0網關API標準發展趨勢》,作者:華為云云原生團隊 ,

云原生網關API標準背景及發展現狀

Gateway API是一個開源的API標準,源自Kubernetes SIG-NETWORK興趣組,從出身角度講,可謂根正苗紅,自從開源以來備受關注,被寄予厚望,Gateway API旨在通過宣告式、可擴展性和面向角色的介面來發展Kubernetes服務網路,并且希望成為供應商的網關API標準并獲得廣泛行業支持,簡而言之,Gateway API希望取代Ingress API,

Gateway API 專案自2019年開源,但是經歷了緩慢的發展,直到2022年7月才發布Beta版本,同時發起了GAMMA(Gateway API for Mesh Management and Administration),筆者認為這里主要有兩方面的原因:

- Ingress存在已久,并且是幾乎所有的Ingress Controller的默認實作,Kubernetes的用戶早已習慣Ingress,盡管Ingress在易用性和功能豐富度上面存在很大的差距,

- 服務網格或者API網關專案,例如Istio、Linkerd、Kong、Contour、Ambassador等都有自己的API標準,Gateway API用戶接受度還不夠高,

- 由于Gateway API并沒有強大的用戶基礎,因而缺少功能、體驗上的反饋,因而迭代比較緩慢,

什么是GAMMA

GAMMA (Gateway API for Mesh Management and Administration)是Gateway API專案的一個作業組,該小組的目標是調查、設計和跟蹤網關API資源、語意,并負責其他與服務網格技術和用戶使用場景相關的工件,此外,GAMMA倡導服務網格專案的網關API實作之間的一致性,無論Istio還是Linkerd,大家最好都來遵守這里定義的API規范和標準,GAMMA的Lead團隊由來自Google的John Howard(Istio),來自微軟的Keith Mattix(Open Service Mesh)和來自HashiCorp的Mike Morris(Consul)組成,在不同組織和服務網格專案的推動下,Gateway API有望統一服務網格API,

推波助瀾

KubeCon EUateway API, EG將會使Envoy擴展更加容易,

Envoy上游開源一個網關專案,并且EG是站在Ambassador以及Contour等專案的肩膀上前進,給普通開發者帶來無限的遐想,最重要的是,EG是第一個主要實作Gateway API的專案,這一操作也為Gateway API帶來新的活力,直接推動Gateway API在7月份發布了Beta版本,

Gateway API生態

前面提到Envoy Gateway專案宣布以Gateway API為唯一的網關標準,并且EG也是唯一一個只遵守Gateway API標準的Ingress網關專案,其他實作者,都是在自身API的基礎上,額外支持Gateway API,并且對Gateway API的支持普遍比較初級:

Gateway API絕不僅僅關注南北向流量治理策略的標準,東西向流量也是它所重點覆寫的方向,南北向主要是一些網關專案的領地,東西向是服務網格的領地,當然服務網格如Istio都有自己的Ingress Gateway, 能夠對北向流量進行管理,東西向流量從特征上要比南北向流量更多,因為客戶端在集群中,可以通過Labels標簽表示客戶端的屬性,通過ServiceAccount標識身份,網格在東西向流量治理時能夠充分利用K8s作業負載的標簽、身份進行更多的路由、安全策略控制,Gateway API標準在東西向流量這一塊目前并沒有對等服務網格現有的能力,具體在最后一章再來進行對比,前期Gateway API主要關注的還是南北向的流量治理標準,這與它 “取代Ingress” 的設計初衷相符,

Gateway API設計

Gateway API基于可移植、可擴展、表達性強以及面向不同角色四個原則設計,

- 可移植:相對Ingress來說這一點并不是改進,而是保持與Ingress一致,通過通用的規范,能讓更多的網關輕松實作,而Gateway API所追求的領域絕不僅限于南北向網關,而且它還要覆寫服務網格,

- 表達性強:Gateway API支持核心功能,如基于Header匹配、流量權重分隔以及其他功能,這些功能只有在Ingress中通過自定義注釋Annotation才能實作,

- 可擴展:Gateway API允許參考其他的自定義資源物件,這使得在API結構中的適當位置進行個性化定制成為可能,

- 面向角色:從上圖可見Gateway 由不同的API資源構成,分別為不同的角色設計,其中應用開發者定義HTTPRoute,集群維護者定義Gateway物件,基礎設施提供者定義GatewayClass,

本章選取面向角色和可擴展性兩個最具代表性的設計原則,詳細解釋Gateway API的設計,

面向角色的API設計

無論是道路、電力、資料中心還是Kubernetes集群,基礎設施都是為共享而構建的,然而,共享基礎架構提出了一個共同的挑戰--如何為基礎架構的用戶提供足夠的靈活性,同時保持基礎架構所有者的獨立控制?

Gateway API通過面向角色的設計為K8s服務網路提供靈活的控制,該設計在分布式靈活性和集中控制之間取得了平衡,它允許許多不同的團隊使用共享網路基礎架構(硬體負載平衡器、云網路、網關等),所有這些團隊都受集群維護者設定的策略限制和約束,如下是Gateway API官網的實體,集群維護者通過Gateway定義流量入口,以及TLS Terminate,集群中有兩個租戶,其中存盤開發者在Store命名空間部署了自己的微服務,站點開發者在Site命名空間也部署了自己的微服務,他們在集群網關上共用同一域名,同一埠,因此網關只能通過匹配不同的HTTP Authority來路由客戶端的請求,路由策略的設定則是由應用開發者們(Store、Site開發者)自己定義,然后系結到同一個Gateway上,

下面通過一個官方示例,為大家展示不同的角色如何根據自己的權限來定義服務的治理策略,

集群維護者通過Gateway定義Listener以及允許系結的路由策略,如下 *shared-gateway*表示在443埠監聽連接,通過 *foo-example-com*證書在網關處做TLS終結,

```yaml
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: shared-gateway
  namespace: infra-ns
spec:
  gatewayClassName: shared-gateway-class
  listeners:
  - name: https
    hostname: "foo.example.com"
    protocol: HTTPS
    port: 443
    allowedRoutes:
      namespaces:
        from: Selector
        selector:
          matchLabels:
            shared-gateway-access: "true"
    tls:
      certificateRefs:
      - name: foo-example-com
```

集群維護者定義只允許以下命名空間的路由策略能夠系結網關,因為它們有shared-gateway-access: "true"標簽,

```yaml
apiVersion: v1
kind: Namespace
metadata:
  name: infra-ns
  labels:
    shared-gateway-access: "true"
---
apiVersion: v1
kind: Namespace
metadata:
  name: site-ns
  labels:
    shared-gateway-access: "true"
---
apiVersion: v1
kind: Namespace
metadata:
  name: store-ns
  labels:
    shared-gateway-access: "true"
```

Store開發者可以定義以下HTTP路由,當請求路徑前綴是/store時,將其路由到store服務,同理Site開發者也可以定義自己的路由然后系結到網關,

```yaml
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: store
  namespace: store-ns
spec:
  parentRefs:
  - name: shared-gateway
    namespace: infra-ns
  rules:
  - matches:
    - path:
        value: /store
    backendRefs:
    - name: store
      port: 8080
```

這里可以看出,不同角色權限控制比較嚴格,只有集群維護者允許的路由策略才能系結到網關上,應用開發者,只能對所擁有的服務具有控制權,

可擴展性-Policy掛載

策略掛載提供了高擴展性,雖然超時,重試,以及個性化的健康檢查在一些網關實作中很常見,但是大多數網關的實作方式是不同的,沒有統一的API標準,保持這類API的一致性變得艱難,所以Gateway API特意設計了Policy掛載,允許在網關、路由中插入個性化的策略控制,

Ingress策略掛載 Mesh策略掛載

從上圖可以看到,無論是Gateway還是HTTPRoute都允許任意參考其他的策略,此設計大大提高了Gateway API的擴展能力,

Gateway API還有多遠

Gateway API與其他主流API對比

從上述功能豐富度對比來看,Istio API > Gateway API > Ingress, 然而Gateway API通過Reference其他自定義物件提供的擴展能力明顯強于Istio,盡管當前Gateway API沒有提供故障注入,超時、重試,限流等策略,但是通過它超強的擴展能力能夠很容易做到,

相信通過閱讀本文,大家對Gateway API一定充滿了好奇,Gateway API距離成熟、大規模商用還有多遠?

首先從目前的生態分析,Gateway API被Kubernetes圈普遍認可,包括開源專案、甚至商業服務GKE的支持,歸根到底,Gateway API由Kubernetes網路組發起、維護,并且吸引了大量開源網路專案的維護者參與,當然實際背后控制者是Google,Google在開源技術的領導力毋庸置疑,但是不得不認識到,目前所有Gateway API的支持都處于初級階段,

其次,從兼容性的角度看,一些成熟的專案,比如Istio,用戶長期以來習慣了Istio的API標準,Istio社區也不會貿然的廢棄原有的API,轉而只支持Gateway API,因此這種多種API并存的局面將會持續很久,即使在未來Gateway API成熟了,

最后,前面講到Gateway API對超時、重試、故障注入等能力預留了擴展能力,但是這種基本的網路能力,Gateway API應該提供標準的API,而不是讓用戶自己去定義私有的標準,這也違背了Gateway API想要統一服務網路標準的初衷,除此之外,靈活的擴展性如果違背了易用性,顯然用戶是不會買賬的,

綜上所述,筆者認為至少在一兩年之內,Gateway API將會持續迭代,短時間內很難形成成熟的標準,或許可以期待,2024年以后服務網格和API網關的標準將會統一,

在當前的歷史貧訓下,華為云應該牢牢把味訓會,基于Gateway API推出自己的云原生網關服務,這將是一次難得的彎道超車的好機會,添加小助手微信k8s2222,進入技術交流群,

參考文獻

1. Kubernetes gateway API官網:https://gateway-api.sigs.k8s.io/2. https://blog.envoyproxy.io/introducing-envoy-gateway-ad385cc595323. Istio官網:https://istio.io/4. Nginx Ingress Controller: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/

 

點擊關注,第一時間了解華為云新鮮技術~

1. Kubernetes gateway API官網:https://gateway-api.sigs.k8s.io/2. https://blog.envoyproxy.io/introducing-envoy-gateway-ad385cc595323. Istio官網:https://istio.io/3. Nginx Ingress Controller: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550669.html

標籤:其他

上一篇:常用內核架構

下一篇:返回列表

標籤雲
其他(157712) Python(38083) JavaScript(25376) Java(17984) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 云原生2.0網關API標準發展趨勢

    摘要:Gateway API希望取代Ingress API。 本文分享自華為云社區《云原生2.0網關API標準發展趨勢》,作者:華為云云原生團隊 。 云原生網關API標準背景及發展現狀 Gateway API是一個開源的API標準,源自Kubernetes SIG-NETWORK興趣組。從出身角度講 ......

    uj5u.com 2023-04-21 07:52:04 more
  • 常用內核架構

    本文分享自天翼云開發者社區《常用內核架構》,作者:JackW 宏內核 應用程式呼叫記憶體分配的 API(應用程式介面)函式。 處理器切換到特權模式,開始運行內核代碼。 內核里的記憶體管理代碼按照特定的演算法,分配一塊記憶體。 把分配的記憶體塊的首地址,回傳給記憶體分配的 API 函式。 記憶體分配的 API 函式 ......

    uj5u.com 2023-04-21 07:51:28 more
  • 貪心演算法基礎及leetcode例題

    參考 #理論 **本質:**找到每個階段的區域最優,然后去推導得到全域最優 **兩個極端:**常識&&很難: 很多同學通過了貪心的題目,但都不知道自己用了貪心演算法,因為貪心有時候就是常識性的推導,所以會認為本應該就這么做! 套路: 貪心沒有套路,說白了就是常識性推導加上舉反例 做題的時候,只要想清楚 ......

    uj5u.com 2023-04-21 07:51:13 more
  • 【ACM演算法競賽日常訓練】DAY16【奇♂妙拆分】【區區區間間間】

    DAY16共3題: 奇♂妙拆分(簡單數學) 區區區間間間(單調堆疊) 小AA的數列(位運算dp) 🎈 作者:Eriktse 🎈 簡介:19歲,211計算機在讀,現役ACM銀牌選手🏆力爭以通俗易懂的方式講解演算法!??歡迎關注我,一起交流C++/Python演算法。(優質好文持續更新中……)🚀 🎈 ......

    uj5u.com 2023-04-21 07:51:04 more
  • 圖計算引擎分析--GridGraph

    GridGraph是一種單機核外圖處理系統,在大規模圖處理系統中充分利用磁盤讀寫,在有限記憶體中高效完成大規模圖計算。GridGraph充分利用磁盤大容量,解決單機記憶體有限時實作大規模圖計算問題。GridGraph采用Streaming-Apply方式減少計算中的IO 請求數量,通過檔案調入順序減少不... ......

    uj5u.com 2023-04-21 07:50:06 more
  • 護士排班

    護士排班問題是一種經典的優化問題,它的目標是為醫院的護士制定一個合理的排班計劃,以確保醫院的正常運轉。在本篇文章中,我們將介紹護士排班問題的背景、演算法思路以及實作方法。 一、背景 護士排班問題是一種 NP 難問題,它的目標是為醫院的護士制定一個合理的排班計劃,以確保醫院的正常運轉。在醫院中,護士的工 ......

    uj5u.com 2023-04-21 07:49:22 more
  • 時而實踐、時而學習

    讀毛選、林語堂的《蘇東坡傳》和德魯克的《卓有成效的管理》有感!提升自己的作業方法、管理方法和思想境界。 ......

    uj5u.com 2023-04-21 07:48:34 more
  • 詳解資料結構中堆疊的定義和操作

    摘要:本文為大家詳解資料結構中堆疊的定義和操作。 本文分享自華為云社區《資料結構:詳細講解堆疊的定義、堆疊的操作》,作者: 高彬滔 。 1.堆疊的定義 堆疊(stack):是只允許在一端進行插入或者洗掉操作的線性表(即后進先出,大概可以理解為吃飽了吐出來) 空堆疊:不含元素的空標配 堆疊頂:表尾端 堆疊底:表頭端 ......

    uj5u.com 2023-04-21 07:48:18 more
  • 數字先鋒 | 乘“云”之勢,天翼云助力長春市婦產醫院步入智慧醫療

    近年來,大資料、云計算、5G等新興技術逐步融入衛生健康服務各個領域,驅動傳統醫療衛生服務向數字健康發展階段邁進。各地醫療機構積極回應國家號召,推進醫院資訊化建設提檔升級,加快資訊系統云上部署,我國醫療行業正逐步邁向數字化轉型新階段。 長春市婦產醫院始建于1896年,是一所集預防、保健、醫療、康復、科 ......

    uj5u.com 2023-04-21 07:48:01 more
  • 時隔6年后,我又回到博客園了

    多年的程式員生涯,從青春年少到三十而立,迷迷糊糊又到了不惑之年,有很多話想找人說說,可默然回首,卻不知道說什么。 兢兢業業的作業,上有老,下有少,作業不敢有一絲失誤,當怕自己成那失業大軍的一員。 丟失了作業激情,也在俯首電腦間一年一年的磨滅了生活的激情。 想感嘆些什么,可又說不出什么。 這么些年,學 ......

    uj5u.com 2023-04-21 07:47:57 more