NGINX Ingress Controller berfungsi sebagai gerbang masuk untuk kluster terkelola Alibaba Cloud Container Service for Kubernetes (ACK), mengarahkan lalu lintas eksternal ke layanan internal berdasarkan aturan routing yang fleksibel. Dengan mendukung fitur seperti enkripsi HTTPS, rilis canary, dan konfigurasi kustom melalui anotasi, controller ini menyediakan akses jaringan Lapisan 7 (L7) yang aman, andal, dan dapat diskalakan.
-
Mulai 11 September 2025, sehubungan dengan penghentian metode penagihan berbasis spesifikasi untuk Classic Load Balancer (CLB), instance Network Load Balancer (NLB) akan digunakan secara default saat Anda membuat layanan bertipe load balancer atau menginstal NGINX Ingress Controller baru di konsol Container Service for Kubernetes. Pembuatan layanan berbasis CLB akan dibatasi hanya untuk daftar izin (allowlist) dan menggunakan model penagihan pay-as-you-go secara default. Untuk informasi selengkapnya, lihat [Perubahan Produk] Pengumuman tentang perubahan tipe load balancer default dan metode penagihan untuk layanan baru serta NGINX Ingress Controller.
-
Proyek open-source Ingress-NGINX tidak akan lagi dipelihara setelah Maret 2026. Akibatnya, Container Service for Kubernetes akan menghentikan pemeliharaan komponen NGINX Ingress Controller. Harap waspada terhadap risiko yang terkait. Untuk informasi selengkapnya, lihat [Pengumuman Produk] Pengumuman tentang Penghentian Pemeliharaan Komponen NGINX Ingress Controller.
Catatan penggunaan
-
Jangan hapus layanan default yang digunakan oleh NGINX Ingress Controller. Setelah add-on diinstal, layanan default bernama
nginx-ingress-lbdibuat di namespacekube-system. Menghapus layanan ini menyebabkan add-on menjadi tidak stabil dan dapat crash. -
Gunakan Add-ons atau OpenAPI untuk mengonfigurasi parameter kustom pada add-on. Memodifikasi konfigurasi melalui metode lain dapat menyebabkan add-on mengalami malfungsi dan mengganggu proses peningkatan di masa depan.
-
Gunakan ConfigMap NGINX Ingress untuk konfigurasi kustom. Dukungan teknis tidak mencakup masalah yang disebabkan oleh konfigurasi tambahan, seperti snippet atau kode Lua.
-
Segera lakukan peningkatan add-on NGINX Ingress Controller untuk mencegah gangguan bisnis akibat bug atau kerentanan keamanan pada versi komunitas hulu.
Instal add-on NGINX Ingress Controller
Buat aplikasi contoh
Aplikasi contoh ini menerapkan dua beban kerja tanpa status (Deployment) bernama coffee dan tea, serta layanan (Service) terkaitnya bernama coffee-svc dan tea-svc.
Konsol
|
1. Buat resource
|
|
2. Lihat hasilnya Di kotak dialog YAML Resource Creation Result, klik View di kolom Actions untuk sebuah resource guna memastikan bahwa resource tersebut telah dibuat. |
kubectl
-
Dapatkan KubeConfig untuk kluster Anda dan gunakan kubectl untuk terhubung ke kluster.
-
Buat file bernama test-deployment-service.yaml dengan konten berikut.
-
Terapkan konfigurasi untuk membuat Deployment dan Service.
kubectl apply -f test-deployment-service.yaml -
Verifikasi status Deployment
coffeedantea.kubectl get deployment coffee teaOutput yang diharapkan:
NAME READY UP-TO-DATE AVAILABLE AGE coffee 2/2 2 2 14m tea 2/2 2 2 14m -
Verifikasi status Service
coffee-svcdantea-svc.kubectl get service coffee-svc tea-svcOutput yang diharapkan:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE coffee-svc ClusterIP 192.168.xxx.xxx <none> 80/TCP 15m tea-svc ClusterIP 192.168.xxx.xxx <none> 80/TCP 15m
Buat NGINX Ingress
Contoh ini menggunakan test-nginx-ingress.com sebagai nama domain (host). Ganti dengan nama domain terdaftar Anda sendiri. Pemetaan path (paths) diambil dari contoh Buat aplikasi contoh. Sesuaikan path-path ini agar sesuai dengan konfigurasi aplikasi Anda.
Konsol
|
1. Buat Ingress
|
|
2. Dapatkan titik akhir Setelah sekitar satu menit, segarkan halaman. Nginx Ingress berhasil dibuat jika Alamat IP Elastis (EIP) muncul di kolom Endpoint. EIP ini adalah alamat layanan publik dari instance Cloud Load Balancer (CLB) terkait. Jika informasi titik akhir tidak muncul setelah beberapa menit, klik nama Ingress dan periksa tab Events untuk troubleshooting. |
kubectl
-
Buat file bernama test-ingress.yaml dengan konten berikut.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-nginx-ingress namespace: default spec: ingressClassName: nginx rules: - host: test-nginx-ingress.com # Ganti dengan nama domain terdaftar Anda http: paths: - path: /coffee backend: service: name: coffee-svc port: number: 80 pathType: ImplementationSpecific - path: /tea backend: service: name: tea-svc port: number: 80 pathType: ImplementationSpecific - host: www.test-nginx-ingress.com # Ganti dengan nama domain terdaftar Anda http: paths: - path: /coffee backend: service: name: coffee-svc port: number: 80 pathType: ImplementationSpecific - path: /tea backend: service: name: tea-svc port: number: 80 pathType: ImplementationSpecificDeskripsi parameter:
-
name: Nama Ingress. Dalam contoh ini, namanya adalahtest-nginx-ingress. -
host: Nama domain yang digunakan untuk mengakses layanan. Dalam contoh ini, nama domainnya adalahtest-nginx-ingress.com. Ganti dengan nama domain terdaftar Anda. -
path: Path URL untuk aturan tersebut. Agar permintaan diarahkan ke backend, permintaan tersebut harus cocok dengan host dan path yang ditentukan. Dalam contoh ini, path-nya adalah/coffeedan/tea. -
backend: Terdiri dari nama layanan dan port layanan.-
Nama layanan: Nama layanan backend tempat Ingress meneruskan trafik. Misalnya,
coffee-svcdantea-svc. -
Port layanan: Port target pada Service backend. Dalam contoh ini, port-nya adalah
80.
-
-
-
Buat Ingress.
kubectl apply -f test-ingress.yaml -
Lihat Ingress dan dapatkan Alamat IP Elastis (EIP)-nya, misalnya
8.xxx.xxx.117.kubectl get ingressOutput yang diharapkan:
NAME CLASS HOSTS ADDRESS PORTS AGE test-nginx-ingress nginx test-nginx-ingress.com,www.test-nginx-ingress.com 8.xxx.xxx.117 80 2m39s -
Gunakan EIP untuk memverifikasi bahwa Nginx Ingress berfungsi dengan benar.
curl http://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"Output yang diharapkan:
... <title>Halo Dunia</title> ... <p>Alamat server: 10.xxx.xxx.19:80</p> <p>Nama server: coffee-96d4bc87-l29dh</p> <p class="smaller">Tanggal: 08/Aug/2025:02:21:02 +0000</p> <p class="smaller">URI: /coffee</p> ... <div id="footer"> <div id="center" align="center"> ID Permintaan: 42e2d73c85b16b55b6ab52deb7d995d4<br/> © NGINX, Inc. 2018 </div> </div> ...
Konfigurasi resolusi DNS
Daftarkan nama domain. Anda hanya perlu menambahkan nama domain jika domain tersebut didaftarkan melalui penyedia pihak ketiga. Alibaba Cloud secara otomatis menambahkan nama domain yang dibeli melalui platformnya ke zona otoritatif publik di Alibaba Cloud DNS, sehingga Anda dapat langsung menambahkan rekaman DNS.
|
1. Tambahkan nama domain
|
|
2. Tambahkan rekaman DNS
Untuk informasi selengkapnya, lihat Tambahkan rekaman resolusi website. |
|
3. Verifikasi nama domain dan path Di browser Anda, kunjungi Jika permintaan berhasil, halaman akan mengembalikan informasi dari pod backend NGINX, termasuk bidang server address, server name, Date, dan URI. Untuk mengonfirmasi hasilnya, Anda juga dapat merujuk ke Metode untuk menguji resolusi DNS. Jika rekaman DNS tidak berlaku, lihat Cara cepat mengatasi kegagalan resolusi DNS. |
Konfigurasi keamanan HTTPS
Beli sertifikat komersial, dan ajukan sertifikat tersebut. Pastikan sertifikat berada dalam status Issued. Kemudian, ikuti langkah-langkah berikut untuk mengunduh sertifikat dan menambahkan konfigurasi TLS. Hal ini memungkinkan akses HTTPS terenkripsi ke domain Anda.
Konsol
|
1. Unduh sertifikat
Untuk detail selengkapnya, lihat Unduh sertifikat SSL. |
|
2. Buat Secret
|
|
3. Tambahkan konfigurasi TLS
|
|
4. Verifikasi akses HTTPS Di browser web Anda, buka |
Kubectl
-
Masuk ke Konsol Layanan Manajemen Sertifikat.Di panel navigasi kiri, pilih .
-
Di tab Commercial Certificates, pilih sertifikat yang ingin Anda unduh, lalu klik Download di pojok kiri bawah daftar sertifikat.
-
Di kotak dialog yang muncul, pilih Nginx sebagai tipe server, unduh paket sertifikat, lalu ekstrak.
-
Gunakan file sertifikat (.pem) dan file kunci privat (.key) yang telah diunduh untuk membuat Secret.
kubectl create secret tls nginx-ingress-tls --cert test-nginx-ingress.com.pem --key test-nginx-ingress.com.key -n default -
Tambahkan konfigurasi TLS ke Ingress
test-nginx-ingress. Gantitest-nginx-ingress.comdalam perintah dengan nama domain terdaftar aktual Anda.kubectl patch ingress test-nginx-ingress -p '{"spec":{"tls":[{"hosts":["test-nginx-ingress.com"],"secretName":"nginx-ingress-tls"}]}}' -
Verifikasi akses HTTPS terenkripsi ke path layanan dengan menjalankan perintah berikut menggunakan Alamat IP Elastis aktual Anda.
curl -v -k https://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"-
Parameter:
-
-v: Menampilkan output verbose, termasuk proses jabat tangan TLS. -
-k(atau --insecure): Melewati verifikasi sertifikat. Gunakan opsi ini jika Anda menggunakan sertifikat tanda tangan sendiri.
-
-
Output yang diharapkan:
... * Trying 8.xxx.xxx.117:443... * Connected to 8.xxx.xxx.117 (8.xxx.xxx.117) port 443 * ALPN: curl offers h2,http/1.1 * (304) (OUT), TLS handshake, Client hello (1): * (304) (IN), TLS handshake, Server hello (2): * (304) (IN), TLS handshake, Unknown (8): * (304) (IN), TLS handshake, Certificate (11): * (304) (IN), TLS handshake, CERT verify (15): * (304) (IN), TLS handshake, Finished (20): * (304) (OUT), TLS handshake, Finished (20): ... <title>Hello World</title> ... <p>Server address: 10.xxx.xxx.159:80</p> <p>Server name: coffee-96d4bc87-6cstv</p> <p class="smaller">Date: 14/Aug/2025:09:27:42 +0000</p> <p class="smaller">URI: /coffee</p> ... <div id="footer"> <div id="center" align="center"> Request ID: fee5fe107106748a35d99a2dbbbc6652<br/> © NGINX, Inc. 2018 </div> </div> ...
-
Konfigurasi lanjutan
Rilis canary
Untuk meningkatkan layanan, Anda dapat menggunakan berbagai strategi penerapan, seperti pembaruan bergulir, rilis bertahap, penyebaran biru-hijau, dan rilis canary. Untuk petunjuk detail, lihat Implementasikan rilis bertahap dan penyebaran biru-hijau menggunakan NGINX Ingress.
Protokol layanan backend
Untuk menentukan protokol layanan backend, tambahkan anotasi nginx.ingress.kubernetes.io/backend-protocol. Protokol yang didukung adalah HTTP, HTTPS, gRPC, dan gRPCS. Untuk contoh konfigurasi, lihat Konfigurasi layanan gRPC untuk NGINX Ingress.
Penulisan ulang URL
Saat menggunakan controller NGINX Ingress, permintaan diteruskan berdasarkan path lengkap. Misalnya, permintaan ke /service1/api diteruskan ke path /service1/api pada pod backend. Jika path layanan backend Anda adalah /api, terjadi ketidakcocokan path yang mengakibatkan error 404. Untuk mengatasi masalah ini, Anda dapat menambahkan anotasi nginx.ingress.kubernetes.io/rewrite-target untuk menulis ulang path permintaan ke direktori yang benar.
Untuk petunjuk detail, lihat Konfigurasi pengalihan URL.
Anotasi
NGINX Ingress mendukung berbagai fitur yang dapat diaktifkan dengan anotasi. Untuk informasi selengkapnya, lihat Kamus konfigurasi NGINX Ingress dan Konfigurasi lanjutan NGINX Ingress.
Observabilitas
Aktifkan Simple Log Service (SLS) saat pembuatan kluster untuk mengakses laporan analisis log akses NGINX Ingress yang komprehensif dan dasbor pemantauan waktu nyata. Untuk detailnya, lihat Analisis dan pantau log akses NGINX Ingress.
Skenario beban tinggi
Untuk meningkatkan kinerja dan stabilitas NGINX Ingress Controller dalam skenario beban tinggi, lihat Konfigurasi NGINX Ingress Controller untuk skenario muatan tinggi dan Saran penggunaan NGINX Ingress Controller.
FAQ
IP eksternal tidak dapat dijangkau dari dalam kluster
Header atau cookie besar
Konfigurasi CORS
Transmisi langsung IP klien
Referensi
-
Untuk versi dan catatan rilis, lihat NGINX Ingress Controller.
-
Untuk masalah umum dan troubleshooting, lihat FAQ NGINX Ingress dan Troubleshoot masalah NGINX Ingress.