在實際應用中,經過 APIGateway(即 API 網關),能夠爲內部服務提供保護,提供統一的鑑權管理,限流、監控等能力,開發人員只須要關注內部服務的業務邏輯便可。本文就會介紹一下如何經過阿里雲 API 網關結合內網 SLB,將 Knative 服務對外發布,以打造生產級別的 Knative 服務。html
阿里雲 API 網關爲您提供完整的 API 託管服務,輔助用戶將能力、服務、數據以 API 的形式開放給合做夥伴,也能夠發佈到 API 市場供更多的開發者採購使用。後端
建立內網SLB,綁定 Istio 網關應用。能夠直接經過下面的 yaml 建立內網 SLB:api
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alicloud-loadbalancer-address-type: "intranet" labels: app: istio-ingressgateway istio: ingressgateway name: istio-ingressgateway-intranet namespace: istio-system spec: externalTrafficPolicy: Cluster ports: - name: status-port port: 15020 protocol: TCP targetPort: 15020 - name: http2 port: 80 protocol: TCP targetPort: 80 - name: https port: 443 protocol: TCP targetPort: 443 - name: tls port: 15443 protocol: TCP targetPort: 15443 selector: app: istio-ingressgateway istio: ingressgateway sessionAffinity: None type: LoadBalancer
建立完成以後,能夠在登陸阿里雲容器服務控制檯,進入 【路由和工做負載】菜單,選擇 istio-system
命名空間,能夠查看到所建立的內網 SLB 信息:安全
此處內網 SLB 地址爲:192.168.0.23session
登陸阿里雲容器服務控制檯,建立 Knative 服務。
這裏咱們建立 helloworld 服務,如圖所示:app
驗證一下服務是否能夠訪問:less
[root@iZbp1c1wa320d487jdm78aZ ~]# curl -H "Host:helloworld.default.example.com" http://192.168.0.23 Hello World!
接下來進入重頭戲,如何配置 API 網關與 Knative Service 進行訪問。運維
因爲 API 須要歸屬分組,咱們首先建立分組。登陸阿里雲API 網關控制檯,開放API->分組管理:curl
點擊【建立分組】,選擇共享實例(VPC)工具
建立完成以後,咱們須要在分組詳情中開啓公網域名,以進行公網服務訪問:能夠經過 1
開啓公網二級域名進行測試,或者經過 2
設置獨立域名。
這裏咱們開啓公網二級域名進行測試訪問,開啓後如圖所示:
因爲咱們是訪問K8s VPC內的服務,須要建立 VPC 受權。選擇 開放API->VPC 受權:
點擊【建立受權】,設置VPC Id以及內網SLB實例Id。這裏建立 knative-test
VPC 受權
建立應用用於阿里雲APP
身份認證。該認證要求請求者調用該 API 時,需經過對 APP 的身份認證。這裏咱們建立 knative
應用。
登陸阿里雲API 網關控制檯,開放API->API列表,選擇【建立API】。關於建立API,詳細可參考:建立API。
接下來咱們輸入【基本信息】,選擇安全認證:阿里雲APP,AppCode認證能夠選擇:容許AppCode認證(Header & Query)。具體AppCode認證方式能夠參考:使用簡單認證(AppCode)方式調用API
[](https://help.aliyun.com/docum...,定義API請求。協議能夠選擇HTTP和HTTPS, 請求Path可設置/
。
點擊下一步,定義API後端服務。後端服務類型咱們設置爲VPC,設置VPC受權名稱等。
設置常量參數
,其中後端參數名稱:Host,參數值:helloworld.default.example.com,參數位置:Header。
點擊下一步,完成建立。
建立完成以後,可直接進行發佈。
選擇 線上
,點擊【發佈】
發佈完成以後,咱們能夠在【API列表】中看到當前API:線上 (運行中)
在調用API測試以前,咱們須要對該API進行應用受權,進入API詳情,選擇【受權信息】
點擊【添加受權】,這裏咱們選擇上面建立的knative
應用進行受權
接下來咱們進行驗證API,點擊在API詳情中,選擇【調試API】,點擊【發送請求】,能夠看到測試結果信息:
至此,咱們經過阿里雲 API 網關將 Knative 服務發佈完成。
經過上面的介紹,相信你們對如何經過阿里雲 API 網關將 Knative 服務對外發布有了初步的瞭解。在實際生產中咱們對Serverless 服務的訪問安全、流控、監控運維等要求是沒必要可少的,而經過阿里雲 API 網關剛好能夠對 Knative 服務提供保駕護航能力。經過阿里雲 API 網關能夠對 API 服務配置:
正是經過這些能力,阿里雲 API 網關爲 Knative 提供生產級別的服務。歡迎有興趣的同窗一塊兒交流。
本文爲雲棲社區原創內容,未經容許不得轉載。