全部產品
Search
文件中心

Alibaba Cloud Service Mesh:為多個叢集配置統一的入口網關

更新時間:Jul 30, 2024

ASM網關支援同時部署在多個叢集,以提高服務可用性。您可以將服務部署在多個叢集,然後為多叢集配置統一的入口網關,即可代理多個叢集對應的入口流量。本文介紹如何為多個叢集配置統一的入口網關。

前提條件

配置說明

一個ASM網關部署在多個叢集時,會在多個叢集中建立網關Pod和對應的Service,並為每個Service掛載一個CLB執行個體。因此,多叢集網關會有多個IP地址。

ASM網關支援複用已有CLB,但不建議多個Service複用同一個CLB。

本文主要介紹以下兩種情境的配置方式:

情境一:多叢集的網關相關資源配置完全相同

當多叢集的網關相關資源完全相同時,您可以通過ASM控制台建立多叢集網關,或將單叢集網關修改為多叢集網關。ASM將根據您的網關配置,在所有叢集中建立配置完全相同的網關。

方式一:建立多叢集網關

您可以通過ASM控制台,按照介面的配置項或使用YAML建立多叢集網關。

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇ASM網關 > 入口網關

  3. 建立多叢集網關。

    • 方式一:按照配置項建立多叢集網關

      1. 入口網關頁面,單擊建立

      2. 建立頁面,部署叢集選擇多個目的地組群,按需進行相關配置,然後單擊建立

        關於其他配置項的說明,請參見建立入口網關入口網關配置

    • 方式二:使用YAML建立多叢集網關

      1. 入口網關頁面,單擊使用YAML建立

      2. 建立頁面,配置如下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數組中添加所需叢集,將單叢集網關修改為多叢集網關。

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇ASM網關 > 入口網關

  3. 入口網關頁面,單擊目標網關右側的查看YAML

  4. 編輯對話方塊的spec.clusterIds欄位中,增加目的地組群ID,然後單擊確定

    YAML樣本

驗證多叢集網關是否建立成功

您可以分別在兩個資料面叢集的istio-system命名空間下,查看網關對應的Service和Deployment等資源。如果兩個叢集中存在相同的配置資源,表明多叢集網關建立成功。

情境二:多叢集的網關相關資源配置不同

如果您有一個網關部署在兩個叢集,且這兩個叢集中需要的網關配置不同。例如,一個叢集需要使用自動建立的CLB,另一個叢集需要複用已有的CLB;一個叢集需要網關副本數為3,另一個需要的副本數則為5。自訂多叢集網關配置需要修改相應的YAML檔案。下文以在建立的多叢集網關中,配置不同類型的CLB為例進行說明,其中一個叢集的網關使用自動建立的CLB,另一個叢集的網關複用已有的CLB。

  1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇ASM網關 > 入口網關

  3. 入口網關頁面,單擊使用YAML建立

  4. 建立頁面,配置如下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說明

  5. 驗證多叢集網關是否建立成功。

    您可以分別在兩個叢集的istio-system命名空間下,查看該網關對應的Service。如果一個叢集的Service掛載的IP是自動建立的CLB的IP,另一個叢集的Service掛載的IP是指定的CLB的IP,表明多叢集網關建立成功。