對於處在資料面且網路外掛程式類型為Terway的阿里雲Container ServiceACK叢集,阿里雲Service MeshASM支援整合應用型Server Load Balancer執行個體(ALB),以此簡化服務治理,保障服務間通訊的認證安全以及提供網格可觀測效能力,降低開發與營運的工作負擔。本文主要介紹如何整合Service MeshASM網關與應用型Server Load Balancer執行個體ALB。
前提條
已添加叢集到ASM執行個體,且ASM執行個體和ACK叢集滿足以下要求。
ASM執行個體:規格為企業版。
ACK叢集:
網路外掛程式類型為Terway。
CCM(Cloud Controller Manager)組件版本為v1.9.3.313-g748f81e-aliyun及以上。更多資訊,請參見Cloud Controller Manager。
已安裝ALB Ingress Controller組件。具體操作,請參見管理組件。
已為default命名空間啟用Sidecar網格代理自動注入。具體操作,請參見啟用自動注入。
已建立負載平衡CLB類型為私網訪問、服務連接埠為80的入口網關。具體操作,請參見建立入口網關。
步驟一:部署測試應用
執行以下命令,使用資料面叢集的KubeConfig來建立Bookinfo樣本。更多資訊,請參見在ASM執行個體關聯的叢集中部署應用。
kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/platform/kube/bookinfo.yaml
步驟二:建立Istio資源
本文將以建立的網關資源和虛擬服務進行後續測試。
建立網關規則。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在網關規則頁面,單擊建立,進行如下配置。
在頁面下方單擊預覽,查看網關規則對應的YAML檔案,確認無誤後,單擊確定,然後在建立頁面下方,單擊建立。
建立虛擬服務並設定路由。
在網格詳情頁面左側導覽列,選擇 。
在虛擬服務頁面,單擊建立,為bookinfo-gateway網關設定虛擬服務配置。
在建立頁面下方,單擊預覽,查看YAML檔案,確認無誤後,單擊確認,然後在建立頁面下方,單擊建立。
步驟三:建立AlbConfig
情境一:已有ALB標準版執行個體整合ASM網關
登入負載平衡控制台,擷取ALB執行個體ID。
使用以下內容,建立alb-demo.yaml檔案。
將AlbConfig的
config.id
替換為ALB執行個體ID。apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: default spec: config: id: alb-xxxxx forceOverride: false
執行以下命令,建立AlbConfig。
kubectl apply -f alb-demo.yaml
情境二:建立ALB執行個體整合ASM網關
使用以下內容,建立alb-demo.yaml檔案。更多資訊,請參見ALB Ingress快速入門。
此處設定自動建立的ALB名稱為alb-demo。
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: default spec: config: name: alb-demo addressType: Internet zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** - vSwitchId: vsw-uf6nun9tql5t8nh15****
參數
說明
spec.config.name
表示ALB執行個體名稱。
addressType
(必選)表示負載平衡的地址類型。取值如下:
Internet(預設值):負載平衡具有公網IP地址,DNS網域名稱被解析到公網IP,因此可以在公網環境訪問。
Intranet:負載平衡只有私網IP地址,DNS網域名稱被解析到私網IP,因此只能被負載平衡所在VPC的內網環境訪問。
zoneMappings
(必選)用於設定ALB Ingress交換器ID。您需要至少指定兩個不同可用性區域交換器ID,指定的交換器必須在ALB當前所支援的可用性區域內。關於ALB Ingress支援的地區與可用性區域,請參見ALB支援的地區與可用性區域;關於如何建立交換器,請參見建立和管理交換器。
執行如下命令,建立AlbConfig。
kubectl apply -f alb-demo.yaml
步驟四:建立IngressClass
建立並拷貝以下內容到alb.yaml檔案中,用於建立IngressClass。
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: default scope: Cluster
執行以下命令,建立IngressClass。
kubectl apply -f alb.yaml
預期輸出:
ingressclass.networking.k8s.io/alb created
步驟五:配置Ingress
ASM網關的服務建立在istio-system命名空間中。您需要在資料面叢集(ACK叢集)中的istio-system命名空間中建立Ingress。連接埠和建立ASM網關時設定的80連接埠保持一致。
建立並拷貝以下內容到asm-gateway-ingress.yaml中。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: asm-gateway-ingress namespace: istio-system spec: ingressClassName: alb rules: - http: paths: - backend: service: name: istio-ingressgateway port: number: 80 path: /* pathType: ImplementationSpecific
執行以下命令,建立Ingress。
kubectl apply -f asm-gateway-ingress.yaml
步驟六:測試訪問
執行以下命令,擷取Ingress執行個體的地址。
kubectl get ing -n istio-system
預期輸出:
NAME CLASS HOSTS ADDRESS PORTS AGE asm-gateway-ingress alb * alb-xxxx.xxxx.alb.aliyuncs.com 80 18h
可以看到Ingress執行個體的地址為
alb-xxxx.xxxx.alb.aliyuncs.com
。訪問ASM網關。
方式一:通過上一步擷取到的Ingress執行個體的地址訪問ASM網關
http://alb-xxxx.xxxx.alb.aliyuncs.com/productpage
。方式二:登入ALB控制台,通過ALB公網地址訪問ASM網關。如果ALB已綁定網域名稱,也可以通過網域名稱進行訪問。