All Products
Search
Document Center

Alibaba Cloud Service Mesh:Ekspos aplikasi localhost ke Pod lain

Last Updated:Aug 29, 2026

Konfigurasikan resource Sidecar agar Pod lain dalam kluster dapat mengakses aplikasi yang mendengarkan pada localhost melalui Service.

Mengapa Pod lain tidak dapat mengakses aplikasi localhost

localhost adalah alamat loopback yang hanya dapat dijangkau dari dalam Pod yang sama. Ketika sebuah aplikasi yang dideploy di kluster mendengarkan pada localhost, Pod lain dalam kluster tidak dapat mengaksesnya, meskipun port service aplikasi tersebut telah diekspos melalui Service.

Contoh berikut menunjukkan cara aplikasi yang ditulis dalam berbagai bahasa mendengarkan pada localhost:

  • Golang: net.Listen("tcp", "localhost:8080")

  • Node.js: http.createServer().listen(8080, "localhost")

  • Python: socket.socket().bind(("localhost", 8083))

Pilih opsi

Tersedia dua opsi untuk mengekspos aplikasi Anda. Pilih salah satu berdasarkan apakah Anda dapat memodifikasi kode aplikasi:

  • Opsi 1 — Ubah alamat jaringan tempat aplikasi mendengarkan. Pilih opsi ini jika Anda dapat memodifikasi kode aplikasi.

  • Opsi 2 — Gunakan Service Mesh (ASM) untuk mengekspos aplikasi yang mendengarkan pada localhost. Pilih opsi ini jika Anda tidak ingin memodifikasi kode aplikasi.

Opsi 1: Ubah alamat jaringan tempat aplikasi mendengarkan

Untuk mengekspos aplikasi Anda, modifikasi kode aplikasi agar mendengarkan pada 0.0.0.0, bukan localhost.

Opsi 2: Gunakan ASM untuk mengekspos aplikasi yang mendengarkan pada localhost

Buat resource Sidecar di Konsol ASM. Resource Sidecar akan mengintersepsi permintaan inbound ke Pod yang Anda pilih dan meneruskan permintaan tersebut ke aplikasi Anda di localhost.

Ikuti langkah-langkah berikut:

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

  2. Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih Traffic Management Center > Sidecar Traffic Configuration. Pada halaman yang muncul, klik Create from YAML.

  3. Pada halaman Create, pilih Namespaces dan Scenario Template yang sesuai, konfigurasikan YAML berikut, lalu klik Create.

    apiVersion: networking.istio.io/v1beta1
    kind: Sidecar
    metadata:
      name: localhost-access
      namespace: {namespace}
    spec:
      ingress:
        - defaultEndpoint: '127.0.0.1:{container_port}'
          port:
            name: tcp
            number: {port}
            protocol: TCP
      workloadSelector:
        labels:
          {key}: {value}

    Ganti parameter berikut dengan nilai aktual Anda:

    Parameter

    Deskripsi

    {namespace}

    Namespace tempat aplikasi dideploy.

    {container_port}

    Port container tempat aplikasi mendengarkan pada localhost.

    {port}

    Port Service aplikasi.

    {key}: {value}

    Label yang memilih Pod aplikasi.

Catatan

Konfigurasi di atas hanya berlaku untuk Pod yang memiliki label yang didefinisikan di bawah workloadSelector, dan hanya mengekspos satu port TCP yang didefinisikan di bawah ingress.