ASM網關支援同時部署在多個叢集,以提高服務可用性。您可以將服務部署在多個叢集,然後為多叢集配置統一的入口網關,即可代理多個叢集對應的入口流量。本文介紹如何為多個叢集配置統一的入口網關。
前提條件
已在ASM執行個體的兩個叢集中部署應用。具體操作,請參見添加叢集到ASM執行個體和在ASM執行個體關聯的叢集中部署應用。
已為命名空間注入Sidecar。具體操作,請參見配置Sidecar注入策略。
配置說明
一個ASM網關部署在多個叢集時,會在多個叢集中建立網關Pod和對應的Service,並為每個Service掛載一個CLB執行個體。因此,多叢集網關會有多個IP地址。
ASM網關支援複用已有CLB,但不建議多個Service複用同一個CLB。
本文主要介紹以下兩種情境的配置方式:
情境二:多叢集的網關相關資源配置不同:例如CLB規格、網關副本數等配置不同。
情境一:多叢集的網關相關資源配置完全相同
當多叢集的網關相關資源完全相同時,您可以通過ASM控制台建立多叢集網關,或將單叢集網關修改為多叢集網關。ASM將根據您的網關配置,在所有叢集中建立配置完全相同的網關。
方式一:建立多叢集網關
您可以通過ASM控制台,按照介面的配置項或使用YAML建立多叢集網關。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
建立多叢集網關。
方式一:按照配置項建立多叢集網關
在入口網關頁面,單擊建立。
在建立頁面,部署叢集選擇多個目的地組群,按需進行相關配置,然後單擊建立。
關於其他配置項的說明,請參見建立入口網關。
方式二:使用YAML建立多叢集網關
在入口網關頁面,單擊使用YAML建立。
在建立頁面,配置如下YAML,然後單擊建立。
apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: name: ingressgateway-multi-cluster namespace: istio-system spec: affinity: {} autoCreateGatewayYaml: false clusterIds: - c87e370627c3f4e62ac77a7********* - c877e9b78610a419e833f22********* compression: {} cpu: {} dnsPolicy: ClusterFirst externalTrafficPolicy: Local gatewayType: ingress hostNetwork: false kernel: parameters: {} memory: {} ports: - name: http-0 port: 80 protocol: HTTP targetPort: 80 - name: https-1 port: 443 protocol: HTTPS targetPort: 443 readinessProbe: {} replicaCount: 2 resources: limits: cpu: '2' memory: 4G requests: cpu: 200m memory: 256Mi runAsRoot: true sds: {} serviceAnnotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet serviceType: LoadBalancer
方式二:將單叢集網關修改為多叢集網關
如果您已經建立了單叢集網關,可以在網關YAML的spec.clusterIds數組中添加所需叢集,將單叢集網關修改為多叢集網關。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在入口網關頁面,單擊目標網關右側的查看YAML。
在編輯對話方塊的spec.clusterIds欄位中,增加目的地組群ID,然後單擊確定。
驗證多叢集網關是否建立成功
您可以分別在兩個資料面叢集的istio-system命名空間下,查看網關對應的Service和Deployment等資源。如果兩個叢集中存在相同的配置資源,表明多叢集網關建立成功。
情境二:多叢集的網關相關資源配置不同
如果您有一個網關部署在兩個叢集,且這兩個叢集中需要的網關配置不同。例如,一個叢集需要使用自動建立的CLB,另一個叢集需要複用已有的CLB;一個叢集需要網關副本數為3,另一個需要的副本數則為5。自訂多叢集網關配置需要修改相應的YAML檔案。下文以在建立的多叢集網關中,配置不同類型的CLB為例進行說明,其中一個叢集的網關使用自動建立的CLB,另一個叢集的網關複用已有的CLB。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在入口網關頁面,單擊使用YAML建立。
在建立頁面,配置如下YAML,然後單擊建立。
apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: name: ingressgateway2 namespace: istio-system spec: autoCreateGatewayYaml: false clusterIds: - c0ed16dbd6c5e429faca464********** - c7d5fba8f3c974353b56522********** compression: {} cpu: {} dnsPolicy: ClusterFirst externalTrafficPolicy: Local gatewayType: ingress hostNetwork: false kernel: parameters: {} memory: {} overrides: c0ed16dbd6c5e429faca464***********: serviceAnnotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet c7d5fba8f3c974353b56522**********: serviceAnnotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: lb-bp1lv01rlga******** ports: - name: http-0 port: 80 protocol: HTTP targetPort: 80 - name: https-2 port: 443 protocol: HTTPS targetPort: 443 readinessProbe: {} replicaCount: 1 resources: limits: cpu: '2' memory: 4G requests: cpu: 200m memory: 256Mi rollingMaxSurge: 25% rollingMaxUnavailable: 25% runAsRoot: true sds: {} serviceType: LoadBalancer
overrides是一個Map類型的結構。其中,Key為叢集ID,Value和網關spec中的配置欄位同名,支援配置CLB相關參數、網關副本數、網關資源規格等參數。在overrides欄位中,您可以單獨配置每個叢集的參數。該配置的優先順序高於最外層的網關配置。關於欄位的相關說明,請參見ASM網關CRD說明。
驗證多叢集網關是否建立成功。
您可以分別在兩個叢集的istio-system命名空間下,查看該網關對應的Service。如果一個叢集的Service掛載的IP是自動建立的CLB的IP,另一個叢集的Service掛載的IP是指定的CLB的IP,表明多叢集網關建立成功。