日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

在ASM上訪問外部服務的流量管理

服務網格ASM提供了訪問外部服務的三種方式,包含設置外部服務訪問策略、配置ServiceEntry和設置攔截對外訪問的網段。本文介紹如何在服務網格ASM上訪問外部服務。

設置外部服務訪問策略

您可以在服務網格ASM中設置對外部服務的訪問策略OutboundTrafficPolicy,用于配置對外部服務(即未在Istio的內部服務注冊表中定義的服務)的訪問策略。

說明

登錄ASM控制臺,單擊目標實例名稱,在左側導航欄選擇網格實例 > 網絡狀態,查看Istio的內部服務注冊表中定義的服務。

  • 如果該選項設置為ALLOW_ANY,則Sidecar代理允許對未知服務的透傳通過。優點是直接透傳對外部服務的訪問,缺點是失去了對外部服務流量的網格層面的監視和控制。

    重要

    在ALLOW_ANY出口策略下,如果沒有為外部服務定義ServiceEntry,Envoy代理將允許TCP流量離開網格到任何IP和端口。然而,這種方式缺乏明確的流量控制,可能導致意外的流量行為,尤其是當多個服務監聽同一個端口時。對于訪問外部服務(例如數據庫),強烈不建議使用該方式,避免造成訪問沖突。

    建議您為外部服務定義ServiceEntry,顯式地控制流量的目的地并避免潛在的問題和沖突。

  • 如果該選項設置為REGISTRY_ONLY,則Sidecar代理將阻止任何沒有在網格中定義了HTTP服務或集群外服務的主機。

  1. 登錄ASM控制臺

  2. 在左側導航欄,選擇服務網格 > 網格管理

  3. 網格管理頁面,找到待配置的實例,單擊實例的名稱或在操作列中單擊管理

  4. 在網格詳情頁面左側導航欄,選擇數據面組件管理 > Sidecar代理配置

  5. Sidecar代理配置頁面全局頁簽下,單擊外部服務訪問策略,設置對外部服務的訪問策略OutboundTrafficPolicyALLOW_ANY,單擊更新設置

    在注入了Sidecar代理的應用容器中,運行curl命令請求訪問外部HTTP或HTTPS服務,可以看到正常返回結果。

    • 訪問外部HTTP服務

      curl -I  http://www.aliyun.com/

      預期輸出:

      HTTP/1.1 301 Moved Permanently
      server: envoy
      date: Mon, 07 Sep 2020 09:28:54 GMT
      content-type: text/html
      content-length: 239
      location: https://www.aliyun.com/
      eagleeye-traceid: 0be3e0a615994709353116335ea5ea
      timing-allow-origin: *
      x-envoy-upstream-service-time: 67
    • 訪問外部HTTPS服務

      curl -I  https://www.aliyun.com/

      預期輸出:

      HTTP/2 200
      server: Tengine
      date: Mon, 07 Sep 2020 09:16:31 GMT
      content-type: text/html; charset=utf-8
      vary: Accept-Encoding
      vary: Accept-Encoding
      strict-transport-security: max-age=31536000
      x-download-options: noopen
      x-content-type-options: nosniff
      x-xss-protection: 1; mode=block
      x-readtime: 0
      eagleeye-traceid: 0b57ff8715994701916963132ec7ad
      strict-transport-security: max-age=0
      timing-allow-origin: *

配置集群外服務(ServiceEntry)

如果設置對外部服務的訪問策略OutboundTrafficPolicyREGISTRY_ONLY,在注入了Sidecar代理的應用容器中,運行curl命令請求訪問外部HTTP或HTTPS服務,可以看到不能正常返回結果。

  • 訪問外部HTTP服務。

    curl -I  http://www.aliyun.com/

    預期輸出:

    HTTP/1.1 502 Bad Gateway
    date: Mon, 07 Sep 2020 09:25:58 GMT
    server: envoy
    transfer-encoding: chunked
  • 訪問外部HTTPS服務。

    curl -I https://www.aliyun.com/

    預期輸出:

    curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to www.aliyun.com:443

您可以使用集群外服務(ServiceEntry)配置,從網格內訪問網格外部的可公開訪問的服務,同時保留Istio的流量監視和控制功能,實現對外部服務的受控訪問。

  1. 創建集群外服務。

    1. 登錄ASM控制臺

    2. 在左側導航欄,選擇服務網格 > 網格管理

    3. 網格管理頁面,找到待配置的實例,單擊實例的名稱或在操作列中單擊管理

    4. 在網格詳情頁面左側導航欄,選擇集群與工作負載管理 > 集群外服務(ServiceEntry),然后在右側頁面,單擊使用YAML創建

    5. 選擇命名空間,將以下內容復制到文本框中,然后單擊創建

      根據實際需求設置hosts,在本示例中hostswww.aliyun.com

      apiVersion: networking.istio.io/v1alpha3
      kind: ServiceEntry
      metadata:
        name: aliyun-com-ext
      spec:
        hosts:
        - 'www.aliyun.com'
        ports:
        - number: 80
          name: http
          protocol: HTTP
        - number: 443
          name: https
          protocol: HTTPS  
        resolution: DNS
        location: MESH_EXTERNAL
  2. 訪問外部HTTP或HTTPS服務,可以看到正常返回結果。

    • 訪問外部HTTP服務。

      curl -I  http://www.aliyun.com/

      預期輸出:

      HTTP/1.1 301 Moved Permanently
      server: envoy
      date: Mon, 07 Sep 2020 09:49:17 GMT
      content-type: text/html
      content-length: 239
      location: https://www.aliyun.com/
      eagleeye-traceid: 0be3e0a915994721583014504e7b31
      timing-allow-origin: *
      x-envoy-upstream-service-time: 66
    • 訪問外部HTTPS服務。

      curl -I https://www.aliyun.com/

      預期輸出:

      HTTP/2 200
      server: Tengine
      date: Mon, 07 Sep 2020 09:49:31 GMT
      content-type: text/html; charset=utf-8
      vary: Accept-Encoding
      vary: Accept-Encoding
      strict-transport-security: max-age=31536000
      x-download-options: noopen
      x-content-type-options: nosniff
      x-xss-protection: 1; mode=block
      x-readtime: 1
      eagleeye-traceid: 0be3e0b115994721709577294ed9e8
      strict-transport-security: max-age=0
      timing-allow-origin: *
  3. 創建虛擬服務。

    1. 登錄ASM控制臺

    2. 在左側導航欄,選擇服務網格 > 網格管理

    3. 網格管理頁面,找到待配置的實例,單擊實例的名稱或在操作列中單擊管理

    4. 在網格詳情頁面左側導航欄,選擇流量管理中心 > 虛擬服務,然后在右側頁面,單擊使用YAML創建

    5. 選擇命名空間,將以下內容復制到文本框中,然后單擊創建

      為使用集群外服務(ServiceEntry)配置訪問的外部服務設置路由規則。在本示例中,對www.aliyun.com服務的調用注入了延遲時間fixedDelay的規則。

      apiVersion: networking.istio.io/v1alpha3
      kind: VirtualService
      metadata:
        name: aliyun-com-ext
      spec:
        hosts:
          - 'www.aliyun.com'
        http:
        - fault:
            delay:
              percent: 100
              fixedDelay: 5s
          route:
            - destination:
                host: www.aliyun.com
              weight: 100
  4. 查看定義的路由規則是否生效。

    返回結果中real的時間為5.07s,說明路由規則已生效。

    time curl -o /dev/null -s -w "%{http_code}\n" http://www.aliyun.com/

    預期輸出:

    301
    real  0m 5.07s
    user  0m 0.00s
    sys 0m 0.00s

設置網格攔截指定地址范圍

設置指定的網格攔截IP范圍,使得未被指定的其他IP范圍不被網格內的Sidecar代理流量攔截,從而可以繞過Sidecar代理直接訪問目標服務。

您可以在服務網格ASM中配置攔截對外訪問的地址范圍,設置流量被攔截的IP范圍,通常設置為所管理的Kubernetes集群的Service CIDR。即訪問集群內目標服務需要經過服務網格內的Sidecar代理進行流量攔截,非集群內目標則繞過服務網格內的Sidecar代理。

  1. 登錄ASM控制臺

  2. 在左側導航欄,選擇服務網格 > 網格管理

  3. 網格管理頁面,找到待配置的實例,單擊實例的名稱或在操作列中單擊管理

  4. 在網格詳情頁面左側導航欄,選擇數據面組件管理 > Sidecar代理配置

  5. Sidecar代理配置頁面全局頁簽下,單擊按端口或地址來啟用/禁用Sidecar代理,在攔截對外訪問的地址范圍文本框中設置攔截的網段,然后單擊更新設置

    您也可以在不攔截對外訪問的地址范圍文本框中設置不攔截的網段,那么除了設置的不攔截的網段,其他網段都將被攔截。

    說明

    攔截對外訪問的地址范圍默認為*,表示對所有的IP網段進行攔截。可以根據實際需要設置攔截的IP網段,一般情況下可以設置為Kubernetes集群的Service CIDR。