全部產品
Search
文件中心

Alibaba Cloud Service Mesh:ASM整合應用型Server Load Balancer執行個體ALB

更新時間:Jun 30, 2024

對於處在資料面且網路外掛程式類型為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資源

本文將以建立的網關資源和虛擬服務進行後續測試。

  1. 建立網關規則。

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

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

    3. 網關規則頁面,單擊建立,進行如下配置。

      4

    4. 在頁面下方單擊預覽,查看網關規則對應的YAML檔案,確認無誤後,單擊確定,然後在建立頁面下方,單擊建立

      展開查看預覽YAML

      apiVersion: networking.istio.io/v1beta1
      kind: Gateway
      metadata:
        name: bookinfo-gateway
        namespace: default
      spec:
        selector:
          istio: ingressgateway
        servers:
          - port:
              number: 80
              name: http
              protocol: HTTP
            hosts:
              - '*'
  2. 建立虛擬服務並設定路由。

    1. 在網格詳情頁面左側導覽列,選擇流量管理中心 > 虛擬服務

    2. 虛擬服務頁面,單擊建立,為bookinfo-gateway網關設定虛擬服務配置。

      96

    3. 建立頁面下方,單擊預覽,查看YAML檔案,確認無誤後,單擊確認,然後在建立頁面下方,單擊建立

      展開查看預覽YAML

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        name: bookinfo
        namespace: default
      spec:
        gateways:
          - bookinfo-gateway
        hosts:
          - '*'
        http:
          - match:
              - uri:
                  exact: /productpage
              - uri:
                  prefix: /static
              - uri:
                  exact: /login
              - uri:
                  exact: /logout
              - uri:
                  prefix: /api/v1/products
            route:
              - destination:
                  host: productpage
                  port:
                    number: 9080
                              

步驟三:建立AlbConfig

情境一:已有ALB標準版執行個體整合ASM網關

  1. 登入負載平衡控制台,擷取ALB執行個體ID。

  2. 使用以下內容,建立alb-demo.yaml檔案。

    將AlbConfig的config.id替換為ALB執行個體ID。

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: default
    spec:
      config:
        id: alb-xxxxx 
        forceOverride: false
  3. 執行以下命令,建立AlbConfig。

    kubectl apply -f alb-demo.yaml

情境二:建立ALB執行個體整合ASM網關

  1. 使用以下內容,建立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支援的地區與可用性區域;關於如何建立交換器,請參見建立和管理交換器

  2. 執行如下命令,建立AlbConfig。

     kubectl apply -f alb-demo.yaml

步驟四:建立IngressClass

  1. 建立並拷貝以下內容到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
  2. 執行以下命令,建立IngressClass。

    kubectl apply -f alb.yaml

    預期輸出:

    ingressclass.networking.k8s.io/alb created

步驟五:配置Ingress

ASM網關的服務建立在istio-system命名空間中。您需要在資料面叢集(ACK叢集)中的istio-system命名空間中建立Ingress。連接埠和建立ASM網關時設定的80連接埠保持一致。

  1. 建立並拷貝以下內容到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
                    
  2. 執行以下命令,建立Ingress。

    kubectl apply -f asm-gateway-ingress.yaml

步驟六:測試訪問

  1. 執行以下命令,擷取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

  2. 訪問ASM網關。

    • 方式一:通過上一步擷取到的Ingress執行個體的地址訪問ASM網關http://alb-xxxx.xxxx.alb.aliyuncs.com/productpage

    • 方式二:登入ALB控制台,通過ALB公網地址訪問ASM網關。如果ALB已綁定網域名稱,也可以通過網域名稱進行訪問。95

相關文檔

使用Terway網路外掛程式