作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與新應用遞送方案的介紹與推廣。

本系列文內我們要和大家談論如何應用NSX Advanced Load Balancer (Avi Networks) 內的AKO (Avi Kubernetes Operator) 方案,提供高效能、功能完善的容器平台應用遞送機制。在系列文內我會分別就AKO的架構、特點、優勢等逐步和大家進行介紹。但在吹捧自己、批評他人之前,得先要有一個討論:在生產環境的容器平台內,怎麼樣才是好的應用遞送服務?得做到哪些條件,我們才可以將一個產品稱為堪用或優秀的容器應用遞送方案? 本篇文章內會試圖回答這些問題。我們認為,一個可以完善支持容器平台應用遞送功能的方案,應該要符合下列條件:

1. 基於Kubernetes YAML 組態檔提供需求應用遞送配置

在Kubernetes平台內有個重點:所有配置都可以透過YAML檔來實作。無論是管理者要手動建立 Deployment / Service / Ingress,或相關配置由上層CI/CD流程下發,總歸一句話,管理者不應該得要自行到不同的設備,手動在不同的UI / Command Line介面進行設定。負責應用發布的管理者,應該要能使用 對應的YAML宣告來配置需求的應用遞送功能,比如說

  • 應用需求的LoadBalancer / Ingress配置,包含IP/FQDN/Port/憑證等。
  • 負載平衡本身之設定如健康檢查、連線堅持、連線派送機制。
  • 相關應用遞送服務如WAF / GSLB之啟用及配置。
  • 應用資源要求,是否需要獨立資源支持
  • 路徑控制,提供金絲雀部署 / 灰度發布使用

上述功能的多寡,是否完整,就是各家廠商各憑本事了。但有一個重點:如果要提供一個功能,無論是採用Annotation或是自建的CRD或configmap或任何方法,反正必須採用YAML宣告。如果要求管理者使用一個功能,需要登入到特定設備的UI內哪個頁面,或是特殊Command Line裡下什麼指令,傳統環境內可以這麼做,容器環境內就不合格了。

2. 提供核心業務需求之交易效能

無論重要應用是採用實體機或虛機或容器哪種架構,可否自動快速部署,不變的重點是核心業務需求的交易能力能夠不僅在平常,甚至於峰值時都可被滿足。在應用遞送服務部分,需要做到的包含

  • 方案可提供的加解密效能,如每秒可新增連線數,可乘載頻寬等。
  • 峰值有大量交易需求時,是否可快速進行Scale-Up / Scale-Out提升效能
  • 可否針對不同應用提供獨立資源以滿足效能要求

尤其是對應新世代雲原生架構,要在Internet上面提供服務的業務,峰值與平時交易量可能相差極大。在需要時能否在短時間內提供需求的交易效能,是新應用遞送方案的重要挑戰與要求。

3. 提供核心業務需求之應用遞送進階功能

在Kubernetes基礎部署的應用遞送服務就是本地負載均衡,包含L4 (Type LoadBalancer) 與L7 HTTP/HTTPS (Ingress) 的負載平衡機制。但除此之外,你的重要核心業務提供 Internet 對外服務時,通常也不是放台基本負載平衡器就夠啦,一般還需要

  • 交易的日誌、統計、分析。
  • 前端安全防護的機制,包含如Web Application Firewall
  • 跨Site部署,如全域負載均衡機制

當然,企業可以採用多種方案堆起來提供完整的應用遞送需求功能。但此時隨之而來的當然就會是架構的複雜,效能的低落,以及這些功能怎麼進行自動化這些問題了。

4. 跨雲運作

不言而喻,企業的容器平台可能採用自建,可能運作在不同公有雲平台上。此時無論應用放在哪邊,我們需要在不同的平台上

  • 具備相同的完備應用遞送功能。無論我們業務是在自己的資料中心或放在AWS上,需求的負載平衡、WAF等功能都要做得到
  • 具備相同的介面與呼叫方式。在應用需要移轉至不同的公私有雲平台時,採用一致方法進行應用遞送功能部署,不用更換成一個完全不同的配置機制

5. 具備需求之路徑控制功能

在現代化雲原生平台內,應用團隊會極為關心如何進行新應用發布及上版方式,包含如金絲雀部署 (Canary Deployment)、藍綠部署、灰度部署等機制要如何達成等等。應用遞送服務在這裡佔了極為吃重的角色,在HTTP要求進來時,能夠依據應用團隊的需求,採用比例、表頭、cookie指定等不同方式來做用戶連線於不同版本的導向。

在我個人意見看來,無論是開源方案或是老牌的應用遞送友商,在上面的要求都還無法做到百分之百,或需要疊床架屋用多個方案堆起來。即使是Avi Kubernetes Operator我們也不敢打包票說上面的功能已經都做到完美了,但無論是已有的機制與近期內看到會開發出的新功能,我敢說NSX Advanced Load Balancer在容器應用遞送需求上是功能相對極為完整的。

所以下篇文章從架構開始談起,希望在系列文內可以逐步讓大家看到Avi Kubernetes Operator如何應用在容器環境,並提供需求的應用遞送功能。