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,表明多集群網關創建成功。