API閘道器為K8s容器應用叢集提供強大的接入能力
摘要: 我們可以看到Kubernetes叢集是有足夠理由作為應用服務的首選,但是Kubernetes叢集沒有足夠的接入能力,特別在大型應用中,它是不能夠直接對使用者提供服務的,否則會有非常大的安全風險。而API閘道器作為成熟的雲產品,已經整合了非常豐富的接入能力,把API閘道器放在Kubernetes叢集前面作為應用叢集的接入服務使用,將大大提高Kubernetes叢集的服務能力,可以作為標準的大型網際網路應用的標準架構。
1. Kubernetes叢集介紹
Kubernetes(K8S)作為自動化容器操作的開源平臺已經名聲大噪,目前已經成為成為容器玩家主流選擇.Kubernetes在容器技術的基礎上,增加排程和節點叢集間擴充套件能力,可以非常輕鬆地讓你快速建立一個企業級容器應用叢集,這個叢集主要擁有以下能力:
自動化容器的部署和複製
隨時擴充套件或收縮容器規模
將容器組織成組,並且提供容器間的負載均衡
很容易地升級應用程式容器的新版本
提供容器彈性,如果容器失效就替換它
下面是一個典型的Kubernetes架構圖:
2. API閘道器作為Kubernetes叢集的接入層架構
我們可以看到Kubernetes叢集是有足夠理由作為應用服務的首選,但是Kubernetes叢集沒有足夠的接入能力,特別在大型應用中,它是不能夠直接對使用者提供服務的,否則會有非常大的安全風險。而API閘道器作為成熟的雲產品,已經整合了非常豐富的接入能力,把API閘道器放在Kubernetes叢集前面作為應用叢集的接入服務使用,將大大提高Kubernetes叢集的服務能力,可以作為標準。的大型網際網路應用的標準架構下面是使用阿里雲架構圖:
從架構圖中我們可以看到,API閘道器作為Kubernetes叢集的橋頭堡,負責處理所有客戶端的接入及安全工作,API閘道器和Kubernetes叢集中每個服務的內網SLB進行通訊。
3. API閘道器接入能力
讀者要問了,接入了API閘道器具體能為整個架構帶來哪些好處呢?下面我們列一下這種架構中,API閘道器具體能給整個應用帶來什麼價值。
1.API閘道器允許客戶端和API閘道器使用多種協議進行通訊,其中包括:
2.API閘道器使用多種方法保證和客戶端之間的通訊安全:
* 允許定義API和APP之間的授權關係,只有授權的APP允許呼叫;
* 全鏈路通訊都使用簽名驗證機制,包括客戶端和API閘道器之間的通訊和API閘道器和後端服務之間的通訊,保證請求在整個鏈路上不會被篡改;
* 支援使用者使用自己的SSL證照進行HTTPS通訊;
* 支援OPENID CONNECT;
3.API閘道器具備iOS/Android/Java三種SDK的自動生成能力,並且具備API呼叫文件自動生成能力;
4.API閘道器支援入參混排能力,請求中的引數可以對映到後端請求中的任何位置;
5.API閘道器提供引數清洗能力,使用者定義API的時候可以指定引數的型別,正則等規則,API閘道器會幫使用者確認傳輸給後端服務的請求是符合規則的資料;
6.API閘道器支援流量控制能力,支援的維度為使用者/APP/API;
7.API閘道器提供雙向通訊的能力;
8.API閘道器提供基於請求數/錯誤數/應答超時時間/流量監控報警能力,所有的報警資訊會使用簡訊或者郵件在一分鐘內發出;
9.API閘道器已經和阿里雲的SLS產品打通,使用者可以將所有請求日誌自動上傳到使用者自己的SLS中,後繼好對訪問日誌進行統計分析;
10.API閘道器支援Mock模式,在聯通中這個能力非常方便;
11.API閘道器支援使用者自動以的IP白名單和黑名單;
12.API閘道器結合阿里雲的雲市場,為Provider提供向API使用者收費的能力。
阿里雲的API閘道器是一個上線數年的成熟雲產品,在穩定性和效能方面,經過了時間和阿里雲的工程師的不斷打磨,有高效能需求的使用者儘管放馬過來。
4. 在阿里雲快速配置Kubernetes叢集和API閘道器
阿里雲支援快速建立Kubernetes叢集,同一個區域內的Kubernetes叢集和API閘道器的整合也非常簡單,下面我們來一步一步地在阿里雲中配置出本文第二節中架構設計。我們假設要建立的目標叢集是一個Tomcat的叢集,同時有6個容器對外服務,對外服務的介面是8080。
4.1建立Kubernetes叢集,生成具備內網SLB的服務
首先我們來通過YAML檔案建立一個具備內網SLB的Kubernetes叢集。
4.1.1在控制檯建立一個Kubernetes
1.進入Kubernetes集團管理控制檯介面:https ://cs.console.aliyun.com/#/k8s/cluster/list
2.點選左上角“建立Kubernetes叢集”按鈕,進入
3.在建立叢集頁面選擇不同的規格
4.建立成功後可以在Kubernetes列表頁面看到剛才建立的叢集。
4.1.2在Kubernetes叢集內建立一個多容器的服務
現在叢集有了,我們需要在叢集內建立一個服務,這個服務由6個容器組成,每個容器都由最新的Tomcat的映象生成。容器的服務埠是8080,整個服務對外服務的埠也是8080。
1.進入Kubernetes集團管理控制檯介面:https ://cs.console.aliyun.com/#/k8s/cluster/list
2.選在剛才建立的Kubernetes叢集,點選“控制檯”連結:
3.進入Kubernetes叢集的控制檯頁面後,點選左邊選單欄的“服務”按鈕,進入服務頁面後,點選右上角的“建立”按鈕進入建立頁面:
4.進入建立頁面後,點選使用文字建立按鈕,輸入下面的資源編排文字點選上傳按鈕進行建立:
對這段編排模板建立文字做下解釋:
第一段是使用最新的Tomcat的映象建立6個容器的意思,容器的服務埠是8080;
第二段是將所有標籤為“Tomcat的演示”的容器,建立一個服務。服務使用內網SLB對外提供服務。
另外,所有資源編排的模板執行都可以在“容器服務”,使用模板這個頁面去執行部署,在這個頁面有所有的資源模板,可以改後即發:
好了,目前為止,我們已經建立了一個Kubernetes叢集,並且在這個叢集下面建立了六個容器,每個容器上面跑著一個最新的Tomcat的。這六個容器組成一個服務,使用內網SLB對內網提供服務我們可以進入服務詳情頁面看到整個服務的執行情況:
需要注意的是,我們外部服務的地址是一個VPC地址,是不可以直接在API閘道器上配置的,下面我們看看對於VPC的內網地址如何在API閘道器上配置。
4.2在API閘道器建立Kubernets叢集的API
4.2.1建立VPC授權
API閘道器如果要訪問VPC內的SLB,需要增加VPC網路的授權,首先我們需要準備VPC的標識和內網SLB的示例ID,我們可以在VPC控制檯獲取:
1.登入VPC控制檯(vpcnext.console.aliyun.com),找到剛才建立Kubernetes服務時自動建立的VCP,點選進去檢視詳情,我們可以在這個頁面看到VPC的標識:
2.我們點選SLB例項,進入SLB列表頁面,然後點選進入SLB例項詳情頁面,我們可以在這個頁面找到SLB的例項ID:
好了,目前我們已經獲取到了VPC的ID和SLB的例項ID,下面我們來建立API閘道器的授權:
3.進入API閘道器授權頁面:https://apigateway.console.aliyun.com/#/cn-beijing/vpcAccess/list ,點選右上角的建立授權按鈕,彈出建立VPC授權的小頁面,將剛才查詢到的VPC標識和SLB例項ID填入到對應的內容中:
點選確認按鈕後,授權關係就建立好了。
4.2.1 建立API
在API閘道器控制檯建立API的時候,後端服務這塊,我們需要選擇剛才建立的VPC授權關係,然後API的請求就會直接傳送到剛才建立的內網SLB上去了。
4.3 呼叫測試
API建立好了以後,我們把API釋出到線上就可以使用API閘道器的測試工具進行測試,看看能否將請求傳送到剛才建立的Kubernetes叢集中去。
我們進入剛才建立好的API的詳情頁面,點選左側選單中的除錯API,進入除錯頁面。在除錯頁面填寫好相應的引數,點選“發起請求”按鈕。
我們可以看到,請求傳送到了Kubernetes的叢集中的容器中,並且收到了容器中tomcate的200的應答。
5 總結
讓我們總結一下本文的內容,在前三節中,我們描述了Kubernetes叢集和API閘道器的各項能力,並且畫出了結合他倆作為後端應用服務生產的架構圖。我們結合API閘道器+Kubernetes叢集的架構替代了傳統的Nginx(Ecs)+Tomcat(Ecs)(如下圖),讓系統具備了動態伸縮,動態路由,支援多協議接入,SDK自動生成,雙向通訊等各項能力,成為可用性更高,更靈活,更可靠的一套架構。
在最後一節,我們描述了在阿里雲的公有云如何建立一整套API閘道器加Kubernetes的流程,關鍵點在於Kubernetes叢集通過VPC中的SLB結合容器做服務發現,API閘道器繫結VPC中的SLB,將所有請求傳送到SLB上。下面我們再總結一下:
建立一個Kubernetes的叢集;
使用資源編排命令,在Kubernetes叢集中建立六個執行這最新版本的Tomcat的容器,並且基於這六個容器建立一個VPC內負載均衡(SLB)的服務;
到VPC內找到VPC的ID和SLB的例項ID,在API閘道器建立一個VPC授權;
在API閘道器建立一些列API,後端服務使用剛才建立的VPC授權。這些API的請求將傳送到Kubernetes叢集的SLB上,由SLB分發給容器內部的Tomcat服務上。
本文作者:fredlong
詳情請閱讀原文
相關文章
- 《springcloud 二》微服務動態閘道器,閘道器叢集SpringGCCloud微服務
- 美暢影片接入閘道器(VGate)的應用場景分析
- Janusec應用安全閘道器(WAF閘道器)
- API 閘道器 KongAPI
- 為什麼微服務需要API閘道器?微服務API
- API 閘道器的10個最常見用例API
- Serverless Kubernetes 再升級 | 全新的閘道器能力增強Server
- SASE 的核心能力:安全Web閘道器Web
- api閘道器設計API
- Tetrate提供融合API閘道器WAF和服務網格功能與開箱即用的API治理功能的應用連線平臺API
- 開放API閘道器實踐(一) ——設計一個API閘道器API
- API閘道器,企業級閘道器可擴充套件API套件
- 高效能API閘道器(1)、微服務API閘道器架構設計API微服務架構
- API 閘道器策略二三事API
- 企業API閘道器適用業務場景API
- sbc(六) Zuul GateWay 閘道器應用ZuulGateway
- Ocelot API閘道器的實現剖析API
- 註冊中心與API閘道器不是這樣用的!API
- 容器、服務網格和API閘道器:它始於邊緣API
- 為 UWP 應用提供的 .NET 網路 APIAPI
- 振動感測器資料採集閘道器的功能及應用場景
- 體驗下,大廠在使用功能的API閘道器!API
- Hystrix斷路器在微服務閘道器中的應用微服務
- API閘道器:第8層網路API
- Spring Boot整合Zuul API閘道器Spring BootZuulAPI
- SpringCloud系列之閘道器(Gateway)應用篇SpringGCCloudGateway
- 小米智慧閘道器玩法介紹 小米閘道器怎麼用?
- kong 一個高效能的 API 閘道器API
- Zilla:一個事件驅動的API閘道器事件API
- 微服務設計中的API閘道器模式微服務API模式
- 工業智慧閘道器的功能和應用場景
- 應用閘道器的演進歷程和分類
- Terraform部署容器服務Swarm叢集及WordPress應用ORMSwarm
- 什麼是閘道器?閘道器的作用是什麼,閘道器的作用詳解
- 微服務基礎——厲害了!API閘道器微服務API
- 開放API閘道器實踐(三) —— 限流API
- 拆輪子:閘道器GOKU-API-GatewayGoAPIGateway
- 如何建設企業級API閘道器API