基於 APIGateway 打造生產級別的 Knative 服務

file

做者 | 阿里雲智能事業羣高級開發工程師  元毅html

導讀:在實際應用中,經過 APIGateway(即 API 網關),能夠爲內部服務提供保護、提供統一的鑑權管理、限流、監控等能力,開發人員只須要關注內部服務的業務邏輯便可。做者元毅在本文中將會爲你們介紹:如何經過阿里雲 API 網關以及內網 SLB,將 Knative 服務對外發布,以打造生產級別的 Knative 服務。後端

關於阿里雲 API 網關

阿里雲 API 網關爲您提供完整的 API 託管服務,輔助用戶將能力、服務、數據以 API 的形式開放給合做夥伴,也能夠發佈到 API 市場供更多的開發者採購使用。api

  • 提供防攻擊、防重放、請求加密、身份認證、權限管理、流量控制等多重手段保證 API 安全,下降 API 開放風險
  • 提供 API 定義、測試、發佈、下線等全生命週期管理,並生成 SDK、API 說明文檔,提高 API 管理、迭代的效率
  • 提供便捷的監控、報警、分析、API 市場等運維、運營工具,下降 API 運營、維護成本

基於阿里雲 API 網關發佈服務

綁定 Istio 網關到內網 SLB

建立內網 SLB,綁定 Istio 網關應用。能夠直接經過下面的 yaml 建立內網 SLB:安全

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 信息:session

file

此處內網 SLB 地址爲:192.168.0.23app

建立 Knative 服務

登陸阿里雲容器服務控制檯,建立 Knative 服務。 這裏咱們建立 helloworld 服務,如圖所示:less

file

驗證一下服務是否能夠訪問:運維

[root@iZbp1c1wa320d487jdm78aZ ~]# curl -H "Host:helloworld.default.example.com" http://192.168.0.23
Hello World!

配置 API 網關

接下來進入重頭戲,如何配置 API 網關與 Knative Service 進行訪問。curl

建立分組

因爲 API 須要歸屬分組,咱們首先建立分組。登陸阿里雲 API 網關控制檯,開放 API-> 分組管理:工具

file

點擊【建立分組】,選擇共享實例(VPC)。

file

建立完成以後,咱們須要在分組詳情中開啓公網域名,以進行公網服務訪問:能夠經過 1 開啓公網二級域名進行測試,或者經過 2 設置獨立域名。

file

這裏咱們開啓公網二級域名進行測試訪問,開啓後如圖所示:

file

建立 VPC 受權

因爲咱們是訪問 K8s VPC 內的服務,須要建立 VPC 受權。選擇開放 API->VPC 受權:

file

點擊【建立受權】,設置 VPC Id 以及內網 SLB 實例 Id。這裏建立 knative-test VPC 受權。file

建立應用

建立應用用於阿里雲 APP 身份認證。該認證要求請求者調用該 API 時,需經過對 APP 的身份認證。這裏咱們建立 knative 應用。

file

建立 API

登陸阿里雲 API 網關控制檯,開放 API->API 列表,選擇【建立 API】。關於建立 API,詳細可參考:建立 API

file

接下來咱們輸入【基本信息】。選擇安全認證:阿里雲 APP;AppCode 認證能夠選擇:容許 AppCode 認證(Header & Query)。具體 AppCode 認證方式能夠參考:使用簡單認證(AppCode)方式調用 API

file

點擊下一步,定義 API 請求。協議能夠選擇 HTTP 和 HTTPS, 請求 Path 可設置 /

file

點擊下一步,定義 API 後端服務。後端服務類型咱們設置爲 VPC,設置 VPC 受權名稱等。

file

設置常量參數,其中後端參數名稱:Host,參數值:helloworld.default.example.com,參數位置:Header。

file

點擊下一步,完成建立。

file

發佈 API

建立完成以後,可直接進行發佈。

file

選擇 線上,點擊【發佈】。

file

驗證 API

發佈完成以後,咱們能夠在【API 列表】中看到當前 API:線上 (運行中)。

file

在調用 API 測試以前,咱們須要對該 API 進行應用受權,進入 API 詳情,選擇【受權信息】。

file

點擊【添加受權】,這裏咱們選擇上面建立的 knative 應用進行受權。

file

接下來咱們進行驗證 API,點擊在 API 詳情中,選擇【調試 API】,點擊【發送請求】,能夠看到測試結果信息:

file

至此,咱們經過阿里雲 API 網關將 Knative 服務發佈完成。

小結

經過上面的介紹,相信你們對如何經過阿里雲 API 網關將 Knative 服務對外發布有了初步的瞭解。在實際生產中咱們對 Serverless 服務的訪問安全、流控、監控運維等要求是沒必要可少的,而經過阿里雲 API 網關剛好能夠對 Knative 服務提供保駕護航能力。經過阿里雲 API 網關能夠對 API 服務配置:

  • 流量控制
  • 訪問鑑權
  • 日誌監控
  • API 全生命週期管理 : 測試、發佈、下線

正是經過這些能力,阿里雲 API 網關爲 Knative 提供生產級別的服務。歡迎有興趣的同窗一塊兒交流。

歡迎加入 Knative 交流羣

file

做者簡介:元毅,阿里雲容器平臺高級開發工程師,負責阿里雲容器平臺 Knative 相關工做。瞭解 ACK 容器服務,請查看: https://www.aliyun.com/product/kubernetes

相關文章
相關標籤/搜索