全部產品
Search
文件中心

Alibaba Cloud Service Mesh:管理叢集外服務

更新時間:Jun 30, 2024

叢集外服務用於將網格外的服務添加到網格內部維護的服務註冊表中,描述了服務的網域名稱、連接埠、協議、端點等資訊,以便網格內的服務可以訪問到網格外的服務。本文介紹如何建立、修改和刪除叢集外服務。

注意事項

  • 為了避免與Sidecar的連接埠發生衝突,建立叢集外服務時請勿使用以下Envoy連接埠:

    連接埠

    協議

    使用者

    描述

    15000

    TCP

    Envoy

    Envoy管理連接埠。

    15001

    TCP

    Envoy

    Envoy出口流量的連接埠。

    15006

    TCP

    Envoy

    Envoy入口流量的連接埠。

    15020

    HTTP

    Envoy

    合并來自Istio代理、Envoy和應用程式的Prometheus遙測的連接埠。

    15021

    HTTP

    Envoy

    健全狀態檢查連接埠。

    15090

    HTTP

    Envoy

    Envoy Prometheus遙測的連接埠。

  • 在叢集外服務中命名連接埠時必須遵循以下規則:

    協議

    連接埠名稱

    帶尾碼的連接埠名稱

    HTTP

    http

    http-<尾碼>

    HTTP2

    http2

    http2-<尾碼>

    HTTPS

    https

    https-<尾碼>

    TLS

    tls

    tls-<尾碼>

    gRPC

    grpc

    grpc-<尾碼>

    TCP

    tcp

    tcp-<尾碼>

    UDP

    UDP

    udp-<尾碼>

    Mongo

    mongo

    mongo-<尾碼>

    MySQL

    mysql

    mysql-<尾碼>

    Redis

    redis

    redis-<尾碼>

  • 使用HTTP、HTTPS、TLS和TCP協議時請注意以下事項:

    • 使用HTTP、HTTPS和TLS協議時,必須在叢集外服務中指定主機。

      apiVersion: networking.istio.io/v1alpha3
      kind: ServiceEntry
      metadata:
        name: aliyun
      spec:
        hosts:
        - www.aliyun.com
        - aliyun.com
        ports:
        - number: 443
          name: https
          protocol: HTTPS
        resolution: DNS
        location: MESH_EXTERNAL
    • 使用TCP協議時,必須在叢集外服務中指定IP範圍。

      apiVersion: networking.istio.io/v1alpha3
      kind: ServiceEntry
      metadata:
        name: mysql-external
      spec:
        hosts:
        - mysql-01.foo.bar
        addresses:
        - 10.0.0.5/32
        - 10.0.0.6/32
        ports:
        - name: tcp
          number: 3306
          protocol: tcp
        location: MESH_EXTERNAL
  • 如果您有多個外部服務使用TCP協議共用同一個連接埠,請區分服務的IP地址。

    • 外部服務1

      apiVersion: networking.istio.io/v1beta1
      kind: ServiceEntry
      metadata:
        name: external-svc-1
        namespace: default
      spec:
        hosts:
        - fqdna.fqdn.com
        addresses:
        - 10.0.0.0
        location: MESH_EXTERNAL
        ports:
        - name: TCP
          number: 3306
          protocol: TCP
        resolution: DNS
    • 外部服務2

      apiVersion: networking.istio.io/v1beta1
      kind: ServiceEntry
      metadata:
        name: external-svc-2
        namespace: default
      spec:
        hosts:
        - fqdnb.fqdn.com
        addresses:
        - 10.1.0.0
        location: MESH_EXTERNAL
        ports:
        - name: TCP
          number: 3306
          protocol: TCP
        resolution: DNS
  • 預設情況下,使用叢集外服務添加到網格的任何外部服務將可用於所有命名空間。如果您不希望其他istio-proxy訪問外部服務,您可以在叢集外服務中添加exportTo參數,將值設定為".",從而將外部服務的存取範圍限定為僅建立叢集外服務的命名空間。

    apiVersion: networking.istio.io/v1alpha3
    kind: ServiceEntry
    metadata:
      name: aliyun
    spec:
      hosts:
      - www.aliyun.com
      exportTo:
      - "."
      ports:
      - number: 443
        name: https
        protocol: HTTPS
      resolution: DNS
      location: MESH_EXTERNAL
  • 建議使用DNS解析。DNS解析將忽略原始目標IP地址並將流量定向到選定的主機,然後執行DNS查詢以擷取主機的IP地址。

    apiVersion: networking.istio.io/v1alpha3
    kind: ServiceEntry
    metadata:
      name: aliyun
    spec:
      hosts:
      - '*.aliyun.com'
      addresses:
       - 192.168.0.0
       - 172.16.0.0
      location: MESH_EXTERNAL
      ports:
      - number: 443
        protocol: https
        name: https
      resolution: DNS

    resolution:設定參數值為DNS,表示使用DNS解析;設定參數值為NONE,表示不使用DNS解析。

建立叢集外服務

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

  2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇叢集與工作負載管理 > 叢集外服務(ServiceEntry),然後單擊使用YAML建立

  3. 建立頁面,選擇命名空間情境模版,在YAML文字框按需修改配置資訊,然後單擊建立

    關於欄位的說明,請參見Service Entry

修改叢集外服務

  1. 在網格詳情頁面左側導覽列,選擇叢集與工作負載管理 > 叢集外服務(ServiceEntry)

  2. 叢集外服務(ServiceEntry)頁面的操作列,單擊目的地組群外服務對應的查看YAML

  3. 編輯對話方塊,修改叢集外服務配置資訊,然後單擊確定

刪除叢集外服務

  1. 在網格詳情頁面左側導覽列,選擇叢集與工作負載管理 > 叢集外服務(ServiceEntry)

  2. 叢集外服務(ServiceEntry)頁面的操作列,單擊目的地組群外服務對應的刪除

  3. 確認對話方塊,單擊確定