All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasikan jenis jaringan untuk Nginx Ingress Controller

Last Updated:Apr 29, 2026

Nginx Ingress Controller mendukung tiga mode akses: akses jaringan publik dan pribadi sekaligus, hanya akses jaringan publik, serta hanya akses jaringan pribadi, sehingga memenuhi kebutuhan akses klien di berbagai lingkungan jaringan.

Cara kerja

Di dalam kluster, instans SLB menerima permintaan klien dan meneruskannya ke workload Nginx Ingress Controller, yang kemudian meneruskan permintaan tersebut ke layanan lainnya.

Konfigurasikan Nginx Ingress untuk akses jaringan publik dan pribadi sekaligus

Deploy dua Service untuk pod backend Nginx Ingress Controller—satu dikaitkan dengan instans SLB publik dan yang lainnya dengan instans SLB pribadi—untuk mendukung akses jaringan publik maupun pribadi.

  1. Periksa jenis jaringan SLB saat ini.

    kubectl describe service -n kube-system nginx-ingress-lb | grep "service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type"

    Jika output berisi intranet, jenis saat ini adalah pribadi. Jika tidak, jenisnya publik.

  2. Buat Service baru untuk memastikan kedua jenis jaringan (publik dan pribadi) tersedia.

    Buat dan simpan file bernama nginx-ingress-lb-new.yaml. Jalankan kubectl apply -f nginx-ingress-lb-new.yaml untuk membuat Service tersebut.

    Tambahkan Service jaringan pribadi

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-ingress-lb-intranet
      namespace: kube-system
      labels:
        app: nginx-ingress-lb
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: intranet # Menentukan bahwa instans SLB menggunakan alamat jaringan pribadi.
    spec:
      type: LoadBalancer
      externalTrafficPolicy: "Cluster"
      ports:
      - port: 80
        name: http
        targetPort: 80
      - port: 443
        name: https
        targetPort: 443
      selector:
        app: ingress-nginx

    Tambahkan Service jaringan publik

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-ingress-lb-internet
      namespace: kube-system
      labels:
        app: nginx-ingress-lb
    spec:
      type: LoadBalancer
      externalTrafficPolicy: "Cluster"
      ports:
      - port: 80
        name: http
        targetPort: 80
      - port: 443
        name: https
        targetPort: 443
      selector:
        app: ingress-nginx
  3. Ganti <service-name> dalam perintah berikut dengan nama Service baru Anda, lalu jalankan perintah tersebut. Jika mengembalikan 200, Service baru tersebut berfungsi dengan benar.

    curl -s -o /dev/null -w "%{http_code}\n" http://$(kubectl get service -n kube-system <service-name> -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  4. Ganti <service-name> dengan nama Service baru Anda, lalu jalankan kubectl get service <service-name>. Catat External IP Service tersebut dan konfigurasikan DNS berdasarkan jenis Service:

    Service jaringan pribadi baru

    1. Masuk ke Alibaba Cloud DNS – Private DNS. Pada tab Authoritative Zone > User Defined Zones, klik Add Zone. Jika domain sudah ditambahkan sebelumnya, lanjutkan ke langkah c.

    2. Pada Authoritative Zone, masukkan nama domain Anda. Biarkan opsi lain tetap pada nilai default, lalu klik OK.

    3. Klik domain target. Pada tab Settings, klik Add Record. Isi formulir menggunakan nilai-nilai pada tabel di bawah. Biarkan pengaturan lain tetap pada nilai default, lalu klik OK.

      Item konfigurasi

      Nilai

      Record Type

      A

      Hostname

      Masukkan awalan subdomain sesuai kebutuhan.

      Record Value

      Alamat IP dari Service baru.

    4. Kembali ke daftar User Defined Zones. Pada kolom Actions untuk domain target Anda, pilih Effective Scope. Di bawah Effective in VPCs, pilih VPC tempat kluster ACK Anda berada. Lalu klik OK.

    Service jaringan publik baru

    1. Masuk ke Alibaba Cloud DNS – Public Authoritative DNS. Klik domain target Anda untuk membuka halaman Settings. Klik tombol Add Record.

    2. Isi formulir menggunakan nilai-nilai pada tabel di bawah. Biarkan pengaturan lain tetap pada nilai default, lalu klik OK.

      Item konfigurasi

      Nilai

      Record Type

      A.

      Hostname

      Masukkan awalan subdomain sesuai kebutuhan.

      Record Value

      Alamat IP dari Service baru.

Ubah jenis jaringan

Penting

Operasi ini menghapus dan membuat ulang Service untuk mengganti instans SLB, sehingga menyebabkan gangguan sementara pada Nginx Ingress. Instans SLB yang dihapus beserta alamat IP-nya tidak dapat dipulihkan.

  1. Pastikan instans SLB yang ada tidak memiliki traffic:

    1. Masuk ke Container Service Management Console. Klik kluster target Anda. Di panel navigasi sebelah kiri, buka Network > Services. Temukan nginx-ingress-lb di namespace kube-system. Catat External IP-nya.

    2. Masuk ke Classic Load Balancer console. Pilih wilayah yang sama dengan kluster Anda. Temukan instans CLB yang IP Address-nya sesuai dengan alamat IP yang dicatat pada langkah sebelumnya. Klik instans tersebut. Pada tab Monitoring, pastikan jumlah koneksi adalah 0 sebelum melanjutkan.

  2. Hapus Service saat ini yang digunakan oleh Nginx Ingress Controller.

    kubectl delete svc -n kube-system nginx-ingress-lb
  3. Buat dan simpan file bernama nginx-ingress-lb.yaml. Lalu jalankan kubectl apply -f nginx-ingress-lb.yaml untuk membuat Service tersebut.

    Penting

    Nama Service baru harus nginx-ingress-lb.

    Service jaringan pribadi

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-ingress-lb
      namespace: kube-system
      labels:
        app: nginx-ingress-lb
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: intranet # Menentukan bahwa instans SLB menggunakan alamat jaringan pribadi.
    spec:
      type: LoadBalancer
      externalTrafficPolicy: "Cluster"
      ports:
      - port: 80
        name: http
        targetPort: 80
      - port: 443
        name: https
        targetPort: 443
      selector:
        app: ingress-nginx

    Service jaringan publik

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-ingress-lb
      namespace: kube-system
      labels:
        app: nginx-ingress-lb
    spec:
      type: LoadBalancer
      externalTrafficPolicy: "Cluster"
      ports:
      - port: 80
        name: http
        targetPort: 80
      - port: 443
        name: https
        targetPort: 443
      selector:
        app: ingress-nginx
  4. Uji Service baru. Jika mengembalikan 200, Service tersebut berfungsi dengan benar.

    curl -s -o /dev/null -w "%{http_code}\n" http://$(kubectl get service -n kube-system nginx-ingress-lb -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
  5. Jalankan kubectl get service nginx-ingress-lb. Catat External IP Service tersebut dan konfigurasikan DNS berdasarkan jenis Service:

    Service jaringan pribadi baru

    1. Masuk ke Alibaba Cloud DNS – Private DNS. Pada tab Authoritative Zone > User Defined Zones, klik Add Zone. Jika domain sudah ditambahkan sebelumnya, lanjutkan ke langkah c.

    2. Pada Authoritative Zone, masukkan nama domain Anda. Biarkan opsi lain tetap pada nilai default, lalu klik OK.

    3. Klik domain target. Pada tab Settings, klik Add Record. Isi formulir menggunakan nilai-nilai pada tabel di bawah. Biarkan pengaturan lain tetap pada nilai default, lalu klik OK.

      Item konfigurasi

      Nilai

      Record Type

      A

      Hostname

      Masukkan awalan subdomain sesuai kebutuhan.

      Record Value

      Alamat IP dari Service baru.

    4. Kembali ke daftar User Defined Zones. Pada kolom Actions untuk domain target Anda, pilih Effective Scope. Di bawah Effective in VPCs, pilih VPC tempat kluster ACK Anda berada. Lalu klik OK.

    Service jaringan publik baru

    1. Masuk ke Alibaba Cloud DNS – Public Authoritative DNS. Klik domain target Anda untuk membuka halaman Settings. Klik tombol Add Record.

    2. Isi formulir menggunakan nilai-nilai pada tabel di bawah. Biarkan pengaturan lain tetap pada nilai default, lalu klik OK.

      Item konfigurasi

      Nilai

      Record Type

      A.

      Hostname

      Masukkan awalan subdomain sesuai kebutuhan.

      Record Value

      Alamat IP dari Service baru.

FAQ

Mengapa saya tidak bisa membuat Service baru sebelum menghapus yang lama?

Saat mengubah jenis jaringan Nginx Ingress Controller, Anda tidak dapat beralih dengan membuat Service baru terlebih dahulu lalu menghapus yang lama. Anda harus menghapus Service lama sebelum membuat yang baru. Selama peningkatan komponen, workload Nginx Ingress Controller mencocokkan Service berdasarkan nama default-nya (nginx-ingress-lb). Karena Service tidak dapat memiliki nama yang sama, membuat Service baru sebelum menghapus yang lama akan mencegah workload mencocokkan instans SLB yang benar, sehingga menyebabkan kegagalan peningkatan.

Mengapa alamat IP yang digunakan klien berbeda dari endpoint yang ditampilkan di konsol?

Endpoint yang ditampilkan pada halaman Ingress di konsol adalah alamat IP instans SLB yang dikaitkan dengan Service bernama nginx-ingress-lb. Saat beberapa Service bertipe LoadBalancer dikonfigurasi, Nginx Ingress tetap meneruskan semua permintaan dengan benar. Namun, konsol hanya menampilkan alamat IP instans SLB yang terkait dengan Service default. Alamat IP aktual yang diakses klien bergantung pada instans SLB yang mereka gunakan (yang dapat Anda verifikasi melalui pengujian resolusi DNS). Oleh karena itu, alamat tersebut mungkin berbeda dari Endpoint yang ditampilkan di konsol.

Jika Anda menghapus nginx-ingress-lb dan membuat ulang Service dengan nama yang sama, Anda harus memperbarui resource Ingress untuk merefresh endpoint yang ditampilkan.

Bagaimana cara melakukan rollback setelah perubahan yang salah?

Lakukan langkah-langkah berikut secara berurutan sesegera mungkin:

  1. Hapus Service yang baru dibuat untuk mencegah konflik penamaan yang menghalangi komponen membuat Service default.

  2. Di konsol, uninstall dan reinstall komponen Nginx Ingress Controller, yang akan membuat Service default baru di kluster untuk memulihkan titik masuk Nginx Ingress.

  3. Konfigurasikan DNS untuk menambahkan resolusi nama domain untuk Service default baru (nginx-ingress-lb), lalu uji apakah penerusan berfungsi dengan baik.

Referensi

Untuk detail tentang konfigurasi anotasi untuk instans SLB yang sudah ada, lihat Use an existing SLB instance.