ASM Serverless網關是ASM推出的全新Service Mesh網關形態,更適合應對突發流量,降低計算成本,提升穩定性。相比運行於資料面ACK Kubernetes叢集之上的ASM網關形態,ASM Serverless網關具有高穩定性、高彈性和低成本的優勢,以Serverless的形式單獨部署,並完全由ASM管理,具備獨立於ACK Kubernetes叢集的高可用性。本文介紹如何使用ASM Serverless網關,以及相關的網關日誌以及監控指標介紹。
前提條件
已添加叢集到ASM執行個體,且ASM版本為1.18.0.147或以上。
適用情境
ASM Serverless網關更適合應對突發流量,降低計算成本,提升穩定性。典型的情境包括:
有明顯波峰波穀的線上業務:例如線上教育、電商等業務通常有明顯的波峰波穀,ASM Serverless網關可以更快速的應對突發流量,顯著減少固定資源集區的維護,降低計算成本。
多叢集情境:例如有兩個ACK叢集同時加入了某一個ASM執行個體,ASM Serverless網關並不部署在某個ACK Kubernetes叢集中,可以提供獨立於Kubernetes叢集的高可用性。
步驟一:部署ASM Serverless入口網關
目前僅支援使用YAML建立。與運行於資料面ACK Kubernetes叢集之上的ASM網關形態相比,ASM Serverless網關增加了一個註解 asm.alibabacloud.com/managed-by-asm: 'true'
,並且無需填寫資料面ACK Kubernetes叢集ID。如果需要採集監控指標,可以通過註解 asm.alibabacloud.com/export-metrics
將該網關的監控指標匯出到對應的目標資料面ACK Kubernetes叢集。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇
。在入口網關頁面,單擊使用YAML建立,輸入網關名稱,配置如下YAML,然後單擊建立。
apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: annotations: asm.alibabacloud.com/managed-by-asm: 'true' asm.alibabacloud.com/export-metrics: 'ack-cluster-id' name: ingressgateway namespace: istio-system spec: gatewayType: ingress dnsPolicy: ClusterFirst externalTrafficPolicy: Local hostNetwork: false ports: - name: http port: 80 protocol: TCP targetPort: 80 - name: https port: 443 protocol: TCP targetPort: 443 replicaCount: 1 resources: limits: cpu: '2' memory: 2G requests: cpu: 200m memory: 256Mi rollingMaxSurge: 100% rollingMaxUnavailable: 25% runAsRoot: true serviceType: LoadBalancer
注意:當前Serverless網關支援LoadBalancer和ClusterIP類型的Service。如果選擇了ClusterIP,需要保證用戶端與網關Pod網路互相打通,例如Terway網路外掛程式預設同一VPC下的Pod可以互相訪問。
步驟二:建立流量規則
建立HTTP網域名稱。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇
。在入口網關頁面,單擊目標網關,在網關導覽列,單擊網域名稱/認證,然後在網域名稱頁簽,單擊建立。
在建立網域名稱頁面,配置網域名稱為*,協議為HTTP,連接埠名稱為http,連接埠為80,然後單擊建立。
匯入productapge服務。
在網關導覽列,單擊上遊服務,然後單擊匯入服務。
在匯入服務頁簽,選擇default命名空間,選中productapge,單擊表徵圖,然後單擊確認。
建立路由規則。
在網關導覽列,單擊路由管理,然後單擊建立。
在設定路由資訊設定精靈,配置路由類型為http,命名空間為default,路由名稱為productapge,在匹配規則地區,匹配方式選擇首碼,匹配內容為/,然後單擊下一步。
在設定路由目的地設定精靈,配置選擇上遊服務為productapge,然後單擊下一步。
在進階選項設定精靈,單擊建立。
步驟三:通過Serverless網關訪問productpage應用
在瀏覽器地址欄輸入{網關IP地址}/productpage
,可以看到productpage的應用介面。關於如何擷取網關,請參見擷取入口網關地址。
步驟四:配置Serverless網關的訪問日誌
配置網關訪問日誌會導致網關重啟,請在業務低峰期操作。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇
。在入口網關頁面,在目標網關右側,單擊查看YAML,在YAML輸入框中增加註解
asm.alibabacloud.com/aliyun-logs-project: k8s-log-****
,配置Log ServiceProject。本樣本將網關日誌採集到ASM對應的LogProject。對應的YAML樣本如下:
單擊確定,更新Serverless網關。
步驟五:配置HTTPS訪問
執行以下命令,產生認證。
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization" openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt
建立認證。
建立HTTPS網域名稱。
在左側導覽列,單擊入口網關,單擊目標網關,在網關導覽列,單擊網域名稱/認證,然後在網域名稱頁簽,單擊建立。
在建立網域名稱頁面,配置網域名稱為*,協議為HTTPS,連接埠名稱為https,連接埠為443,認證選擇myexample-credential,選中是否使用TLS保護串連,然後單擊建立。
執行以下命令,通過HTTPS協議訪問Serverless網關。
curl -k -H Host:aliyun.com --resolve aliyun.com:443:{替換成真實的入口網關IP地址} https://aliyun.com/productpage -I
步驟六:查看Serverless網關日誌
在Project列表地區,單擊目標日誌名稱(步驟四.1配置的日誌名稱),然後在左側導覽列,單擊表徵圖(日誌儲存),在日誌庫單擊mesh-ingress-log,在搜尋方塊輸入productpage,然後單擊查詢/分析。
FAQ
如何匯出Serverless網關的監控指標?
已開啟ASM的指標產生和採集,且可以在將監控指標採集到可觀測監控Prometheus版。
頁面看到指標大盤。具體操作,請參見在Serverless網關的YAML中配置指標匯出的annotations,格式為
asm.alibabacloud.com/export-metrics: ${ack-cluster-id}
。該功能僅支援ASM執行個體版本為1.18.0.147或以上。關於如何升級版本,請參見升級ASM執行個體。
annotations配置後,會將網關的Service和Endpoint同步到指定的ACK叢集,然後在Prometheus的抓取配置中添加對應Endpoint的採集配置即可。
在ARMS控制台,添加Endpoint的採集配置。
- 登入ARMS控制台。
在左側導覽列,單擊
,然後在頁面左上方選擇目標地區。在執行個體列表頁面,單擊Prometheus執行個體名稱,然後在左側導覽列,單擊設定。
在設定頁面的設定頁簽,單擊編輯Prometheus.yaml,添加如下配置,然後單擊儲存。
Serverless網關無法訪問後端應用該如何處理?
確保資料面叢集的安全性群組沒有攔截來自Serverless網關的流量。
查看ASM的vSwitch網段。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在基本資料頁面,單擊交換器右側的連結,然後在交換器詳情頁面,查看對應的網段。
查看資料面叢集的安全性群組資訊。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在叢集資訊頁面,單擊叢集資源頁簽,然後單擊安全性群組右側的連結。
在安全性群組詳情頁面,查看安全性群組的入方向規則,確保該規則包含ASM的vSwitch網段,以及後端服務的Pod連接埠。
如果返回404、503等錯誤,請檢查流量規則配置及後端服務是否正常運行。