All Products
Search
Document Center

Alibaba Cloud Service Mesh:Mengelola entri layanan

Last Updated:Mar 12, 2026

Anda dapat menambahkan entri untuk layanan eksternal—seperti database, API pihak ketiga, atau sistem warisan—ke dalam registrasi layanan internal instans Service Mesh (ASM), sehingga layanan dalam instans ASM tersebut dapat mengakses layanan eksternal tersebut.

Setiap entri layanan mendefinisikan nama domain, port, protokol, dan titik akhir dari layanan eksternal.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Instans ASM

  • Akses ke Konsol ASM

  • Layanan eksternal target dengan host, alamat IP, atau nama domain yang diketahui

Buat entri layanan

  1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih Cluster & Workload Management > External Service(ServiceEntry).

  3. Klik Create from YAML.

  4. Pada halaman Create, pilih namespace dan templat skenario, edit YAML di editor kode, lalu klik Create. Untuk daftar lengkap bidang entri layanan, lihat ServiceEntry dalam dokumentasi Istio.

Verifikasi hasil

Setelah membuat entri layanan, verifikasi bahwa entri tersebut berfungsi:

  1. Pastikan entri layanan muncul di halaman External Service(ServiceEntry) dengan nama dan namespace yang sesuai.

  2. Dari Pod di dalam mesh, kirim permintaan uji ke layanan eksternal: Output yang diharapkan (mengonfirmasi bahwa layanan eksternal dapat dijangkau melalui mesh):

       kubectl exec <pod-name> -c <container-name> -- curl -sI https://www.aliyun.com | grep "HTTP/"
       HTTP/2 200

Ubah entri layanan

  1. Pada halaman detail instans ASM, pilih Cluster & Workload Management > External Service(ServiceEntry) di panel navigasi sebelah kiri.

  2. Temukan entri layanan yang ingin diubah, lalu klik YAML pada kolom Actions.

  3. Pada kotak dialog Edit, perbarui konfigurasi, lalu klik OK.

Hapus entri layanan

  1. Pada halaman detail instans ASM, pilih Cluster & Workload Management > External Service(ServiceEntry) di panel navigasi sebelah kiri.

  2. Temukan entri layanan yang ingin dihapus, lalu klik Delete pada kolom Actions.

  3. Pada pesan Submit, klik OK.

Penting

Menghapus entri layanan akan langsung mencabut akses ke layanan eksternal tersebut untuk semua workload dalam mesh. Sebelum menghapus entri, pastikan tidak ada workload aktif yang bergantung padanya.

Referensi bidang entri layanan

Bidang

FieldDescription
hostsNama DNS yang terkait dengan layanan eksternal. Untuk HTTP, proxy mencocokkan Header Host. Untuk HTTPS/TLS, proxy mencocokkan nilai SNI. Mendukung wildcard (misalnya, *.aliyun.com).
addressesAlamat IP virtual untuk layanan tersebut. Wajib diisi untuk layanan TCP yang tidak memiliki Header Host atau SNI.
portsPort yang diekspos oleh layanan eksternal. Nama port harus mengikuti konvensi penamaan yang tercantum di bagian Konvensi penamaan port di bawah ini.
locationMESH_EXTERNAL untuk layanan di luar mesh. MESH_INTERNAL untuk workload yang tidak dikelola (misalnya, VM) yang harus diperlakukan sebagai bagian dalam mesh.
resolutionCara proxy melakukan resolusi alamat IP layanan. Lihat bagian Mode resolusi di bawah ini.
exportToMengontrol namespace mana yang dapat mengakses entri layanan tersebut. Nilai default-nya adalah semua namespace ("*"). Atur ke "." untuk membatasi hanya pada namespace tempat entri dibuat.

Mode resolusi

Bidang resolution mengontrol cara proxy melakukan resolusi alamat IP layanan eksternal:

ModeBehaviorWhen to use
DNSMelakukan kueri DNS untuk meresolusi host dan mengarahkan traffic ke IP yang dikembalikan.Layanan yang diidentifikasi berdasarkan nama domain. Disarankan untuk sebagian besar kasus penggunaan.
NONEMeneruskan traffic ke alamat IP tujuan asli tanpa melakukan resolusi.Koneksi yang sudah diarahkan ke IP yang benar, misalnya melalui aturan iptables.

Dengan resolusi DNS, proxy mengabaikan alamat IP tujuan asli dan melakukan kueri DNS terhadap host yang ditentukan untuk mendapatkan alamat IP yang dapat dirutekan.

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

Konvensi penamaan port

Istio menggunakan nama port untuk menentukan protokol dalam perutean traffic. Beri nama port dalam entri layanan sesuai konvensi berikut:

ProtocolPort namePort name with a suffix
HTTPhttphttp-\
HTTP2http2http2-\
HTTPShttpshttps-\
TLStlstls-\
gRPCgrpcgrpc-\
TCPtcptcp-\
UDPUDPudp-\
Mongomongomongo-\
MySQLmysqlmysql-\
Redisredisredis-\

Port Envoy yang dicadangkan

Jangan gunakan port berikut dalam entri layanan. Port-port ini dicadangkan oleh proxy sidecar Envoy dan dapat menyebabkan konflik:

PortProtocolDescription
15000TCPPort admin Envoy
15001TCPPort arah keluar Envoy
15006TCPPort arah masuk Envoy
15020HTTPTelemetri Prometheus gabungan dari proxy Istio, Envoy, dan aplikasi
15021HTTPPort pemeriksaan kesehatan
15090HTTPPort telemetri Prometheus Envoy

Konfigurasi spesifik protokol

Bidang yang diperlukan dalam entri layanan bergantung pada protokolnya.

HTTP, HTTPS, atau TLS

Tentukan bidang hosts. Proxy mencocokkan Header Host (HTTP) atau nilai SNI (HTTPS/TLS) untuk mengarahkan traffic.

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

Tentukan bidang addresses dengan rentang IP. Proxy menggunakan pencocokan berbasis IP karena TCP tidak memiliki Header Host atau SNI.

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

Beberapa layanan TCP pada port yang sama

Berikan alamat IP yang berbeda untuk setiap entri layanan agar proxy dapat membedakan traffic.

Layanan 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

Layanan 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

Visibilitas namespace

Secara default, entri layanan dapat diakses dari semua namespace dalam mesh. Untuk membatasi visibilitas hanya ke namespace tempat entri tersebut dibuat, atur exportTo ke ".":

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

Langkah selanjutnya

Setelah membuat entri layanan, terapkan kebijakan manajemen traffic ke layanan eksternal tersebut dengan menggunakan resource VirtualService dan DestinationRule. Anda dapat mengonfigurasi timeout, retry, atau fault injection. VirtualService berikut menetapkan timeout 3 detik untuk permintaan ke layanan eksternal:

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: aliyun-ext
spec:
  hosts:
  - www.aliyun.com
  http:
  - timeout: 3s
    route:
    - destination:
        host: www.aliyun.com

Untuk informasi lebih lanjut tentang bidang entri layanan dan konfigurasi lanjutan, lihat ServiceEntry dalam dokumentasi Istio.