在大規模分布式系統、微服務應用流量管理等情境下,特別是已採用或計劃採用Istio作為服務網格架構的業務情境中,推薦您使用ASM網關實現Knative服務的流量分發和路由。ASM網關相容社區Istio規範,控制面組件由ACK託管,簡化了服務治理,包括服務調用之間的流量路由與拆分管理、服務間通訊的認證安全以及網格的可觀測效能力。
前提條件
已建立ASM執行個體,且ASM執行個體版本為1.21.6.84及以,請參見建立ASM執行個體。
建立ASM執行個體時,在Kubernetes叢集地區,將已建立的ACK託管叢集或ACK Serverless叢集添加到ASM執行個體中,並選中啟用資料面叢集KubeAPI訪問Istio資源。
步驟一:部署Knative時選擇ASM為服務網關
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在Knative頁面的組件管理頁簽下,單擊一鍵部署Knative,然後在服務網關處選擇ASM,然後單擊一鍵部署。
部署成功後,可在Knative中使用服務網格ASM。
步驟二:通過ASM入口網關訪問部署的服務
本小節結合一個Knative Service樣本示範如何通過ASM完成服務部署。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在Knative頁面的服務管理頁簽,選擇命名空間為default,單擊使用模板建立,將以下YAML樣本粘貼至模板,然後單擊建立,建立一個名為helloworld-go的服務。
重要請將下方代碼中的
{REGION-ID}
替換為您叢集的所在地區(例如cn-beijing
),以確保可以正確訪問和使用鏡像。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry.{REGION-ID}.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # 請將{REGION-ID}替換為您叢集所在地區。 env: - name: TARGET value: "Knative"
在服務管理頁面的訪問網關列,擷取helloworld-go服務的網關地址。
執行以下命令,訪問helloworld-go服務。
curl -H "host: helloworld-go.default.example.com" http://39.XX.XX.XX # 網關的IP和網域名稱請以您的實際資料為準。
預期輸出:
Hello Knative!
預期輸出表明,服務訪問成功。
(可選)步驟三:查看服務監控資料
Knative提供開箱即用的可觀測能力,在Knative頁面,單擊監控大盤頁簽,即可查看目標Knative服務的監控資料情況。如何開啟Knative監控大盤,請參見查看Knative服務監控大盤。
相關文檔
您可以為Knative服務啟用自訂網域名,請參見使用自訂網域名。
您可以為Knative服務配置HTTPS認證訪問,請參見配置HTTPS認證訪問。
您可以在Knative中部署gRPC服務,提升網路效率,請參見在Knative中部署gRPC服務。
您可以配置探針(Probe),監測Knative服務的健康狀態和可用性,請參見在Knative中配置連接埠探測。
如果您的ECI執行個體有串連公網的需求,您需要綁定EIP,請參見為ECI綁定EIP實現公網訪問。