全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Akses layanan eksternal dari instance ASM

更新时间:Jun 28, 2025

Untuk mengizinkan pod dalam Service Mesh (ASM) mengakses layanan eksternal, Anda dapat mengonfigurasi kebijakan akses, membuat entri layanan, atau menentukan blok CIDR untuk akses yang diintercept. Artikel ini menjelaskan cara mengakses layanan eksternal dari instance ASM. Layanan eksternal adalah layanan yang tidak terdaftar di Istio.

Konfigurasikan kebijakan untuk mengakses layanan eksternal

Di konsol ASM, Anda dapat menyetel parameter Outbound Traffic Policy untuk mengonfigurasi kebijakan akses layanan eksternal dari instance ASM.

Catatan

Masuk ke konsol ASM. Klik nama instance ASM yang ingin dikonfigurasi. Di panel navigasi sisi kiri, pilih ASM Instance > Instances Status untuk melihat layanan yang didefinisikan dalam registri layanan internal Istio.

  • Jika parameter Outbound Traffic Policy disetel ke ALLOW_ANY, proxy sidecar di instance ASM mengizinkan semua lalu lintas keluar tanpa memeriksa tujuan. Ini memungkinkan layanan di instance ASM mengakses semua layanan eksternal, namun lalu lintas tersebut tidak dipantau atau dikendalikan.

    Penting

    Ketika parameter Outbound Traffic Policy disetel ke ALLOW_ANY dan tidak ada entri layanan yang didefinisikan untuk layanan eksternal, proxy sidecar mengizinkan lalu lintas TCP dari instance ASM ke alamat IP dan port apa pun. Namun, metode ini kurang kontrol eksplisit dan dapat menyebabkan perilaku lalu lintas yang tidak terduga, terutama jika beberapa layanan mendengarkan pada port yang sama. Untuk menghindari konflik akses, kami sangat menyarankan agar Anda tidak menggunakan metode ini untuk mengakses layanan eksternal seperti database.

    Kami menyarankan Anda mendefinisikan entri layanan untuk layanan eksternal guna secara eksplisit mengontrol tujuan lalu lintas dan menghindari masalah serta konflik potensial.

  • Jika parameter Outbound Traffic Policy disetel ke REGISTRY_ONLY, proxy sidecar di instance ASM menolak akses ke layanan eksternal yang tidak didefinisikan dalam registri layanan instance ASM.

  1. Masuk ke konsol ASM.

  2. Di panel navigasi sisi kiri, pilih Service Mesh > Mesh Management.

  3. Pada halaman Mesh Management, temukan instance ASM yang ingin dikonfigurasi. Klik nama instance ASM atau klik Manage di kolom Actions.

  4. Pada halaman detail instance ASM, pilih Data Plane Component Management > Sidecar Proxy Setting di panel navigasi sisi kiri.

  5. Pada tab global halaman Sidecar Proxy Setting, klik Outbound Traffic Policy, atur parameter Outbound Traffic Policy menjadi ALLOW_ANY, lalu klik Update Settings.

    Di dalam pod dengan proxy sidecar yang diinjeksikan, jalankan perintah curl -I untuk mengakses layanan HTTP atau HTTPS eksternal. Tanggapan sukses akan dikembalikan, seperti yang ditunjukkan dalam contoh berikut:

    • Contoh: Akses layanan HTTP eksternal. Tanggapan sukses dikembalikan.

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

      Output yang diharapkan:

      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
    • Contoh: Akses layanan HTTPS eksternal. Tanggapan sukses dikembalikan.

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

      Output yang diharapkan:

      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: *

Buat entri layanan

Jika parameter Outbound Traffic Policy dari instance ASM disetel ke REGISTRY_ONLY, jalankan perintah curl -I di dalam pod dengan proxy sidecar yang diinjeksikan untuk mengakses layanan HTTP atau HTTPS eksternal. Permintaan akan ditolak oleh proxy sidecar, seperti yang ditunjukkan dalam contoh berikut:

  • Contoh: Akses layanan HTTP eksternal. Permintaan ditolak.

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

    Output yang diharapkan:

    HTTP/1.1 502 Bad Gateway
    date: Mon, 07 Sep 2020 09:25:58 GMT
    server: envoy
    transfer-encoding: chunked
  • Contoh: Akses layanan HTTPS eksternal. Permintaan ditolak.

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

    Output yang diharapkan:

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

Dalam kasus ini, Anda dapat membuat entri layanan untuk layanan eksternal guna mengizinkan akses ke layanan tersebut. Dengan metode ini, lalu lintas ke layanan eksternal dipantau dan dikendalikan oleh Istio.

  1. Buat entri layanan.

    1. Masuk ke konsol ASM.

    2. Di panel navigasi sisi kiri, pilih Service Mesh > Mesh Management.

    3. Pada halaman Mesh Management, temukan instance ASM yang ingin dikonfigurasi. Klik nama instance ASM atau klik Manage di kolom Actions.

    4. Pada halaman detail instance ASM, pilih Cluster & Workload Management > External Service(ServiceEntry) di panel navigasi sisi kiri. Pada halaman yang muncul, klik Create from YAML.

    5. Pada halaman Buat, pilih namespace sesuai kebutuhan, salin konten berikut ke editor kode, lalu klik Create.

      Atur parameter hosts berdasarkan kebutuhan bisnis Anda. Dalam contoh ini, parameter hosts disetel ke www.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. Di dalam pod dengan proxy sidecar yang diinjeksikan, jalankan perintah curl -I untuk mengakses layanan HTTP atau HTTPS eksternal. Tanggapan sukses akan dikembalikan, seperti yang ditunjukkan dalam contoh berikut:

    • Contoh: Akses layanan HTTP eksternal. Tanggapan sukses dikembalikan.

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

      Output yang diharapkan:

      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
    • Contoh: Akses layanan HTTPS eksternal. Tanggapan sukses dikembalikan.

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

      Output yang diharapkan:

      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. Buat layanan virtual.

    1. Masuk ke konsol ASM.

    2. Di panel navigasi sisi kiri, pilih Service Mesh > Mesh Management.

    3. Pada halaman Mesh Management, temukan instance ASM yang ingin dikonfigurasi. Klik nama instance ASM atau klik Manage di kolom Actions.

    4. Pada halaman detail instance ASM, pilih Traffic Management Center > VirtualService di panel navigasi sisi kiri. Pada halaman yang muncul, klik Create from YAML.

    5. Pada halaman Buat, pilih namespace sesuai kebutuhan, salin konten berikut ke editor kode, lalu klik Create.

      Buat layanan virtual untuk layanan eksternal sehingga Anda dapat mengonfigurasi aturan routing untuk layanan tersebut. Dalam kode berikut, parameter fixedDelay disetel untuk menentukan bahwa setiap permintaan untuk layanan eksternal www.aliyun.com menerima tanggapan dengan latensi tetap.

      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. Periksa apakah aturan routing berlaku.

    Pada tanggapan, nilai parameter real adalah 5.07s. Ini menunjukkan bahwa aturan routing telah berlaku.

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

    Output yang diharapkan:

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

Intersep akses ke blok CIDR tertentu

Anda dapat mengonfigurasi proxy sidecar dalam instance ASM untuk mengintersep akses ke blok CIDR tertentu. Dengan cara ini, lalu lintas akses ke blok CIDR lain melewati proxy sidecar dan langsung dirutekan ke layanan tujuan tanpa diintersep.

Untuk instance ASM, Anda dapat menyetel parameter Addresses to Which External Access Is Redirected to Sidecar Proxy ke blok CIDR layanan kluster Kubernetes pada bidang data instance ASM. Dengan cara ini, akses ke layanan tujuan dalam kluster Kubernetes diintersep oleh proxy sidecar. Akses ke layanan tujuan di luar kluster Kubernetes melewati proxy sidecar.

  1. Masuk ke konsol ASM.

  2. Di panel navigasi sisi kiri, pilih Service Mesh > Mesh Management.

  3. Pada halaman Mesh Management, temukan instance ASM yang ingin dikonfigurasi. Klik nama instance ASM atau klik Manage di kolom Actions.

  4. Pada halaman detail instance ASM, pilih Data Plane Component Management > Sidecar Proxy Setting di panel navigasi sisi kiri.

  5. Pada tab global halaman Sidecar Proxy Setting, klik Enable/Disable Sidecar Proxy by Ports or IP Addresses, masukkan blok CIDR di bidang Addresses to Which External Access Is Redirected to Sidecar Proxy, lalu klik Update Settings. Dengan cara ini, akses ke blok CIDR yang ditentukan diintersep.

    Anda juga dapat memasukkan blok CIDR di bidang Addresses to Which External Access Is Not Redirected to Sidecar Proxy. Dengan cara ini, akses ke semua blok CIDR kecuali blok CIDR yang ditentukan diintersep.

    Catatan

    Nilai default di bidang Alamat Tujuan Akses Eksternal yang Diredirect ke Proxy Sidecar adalah *. Ini menunjukkan bahwa akses ke semua blok CIDR diintersep. Anda dapat memasukkan blok CIDR berdasarkan kebutuhan bisnis Anda. Secara umum, Anda dapat memasukkan blok CIDR layanan kluster Kubernetes pada bidang data instance ASM.