Ingress adalah objek sumber daya Kubernetes yang digunakan untuk mengaktifkan akses eksternal ke Layanan dalam kluster Kubernetes. Container Service for Kubernetes (ACK) memungkinkan Anda menggunakan Ingress untuk mengonfigurasi aturan pengalihan guna menangani permintaan ke pod dalam kluster Kubernetes. Topik ini menjelaskan cara membuat, melihat, memperbarui, dan menghapus Ingress NGINX di konsol ACK atau dengan menggunakan kubectl.
Prasyarat
Kluster ACK telah dibuat. Untuk informasi lebih lanjut, lihat Buat kluster terkelola ACK.
Catatan Penggunaan
Perhatikan hal-hal berikut saat menggunakan pengontrol Ingress NGINX:
Jika ingin menyesuaikan parameter komponen, buka halaman detail kluster di konsol ACK atau panggil API ACK. Jika menggunakan metode lain, komponen mungkin tidak berfungsi seperti yang diharapkan dan dapat mengalami masalah pembaruan.
Jangan hapus
kube-system/nginx-ingress-lbService, yang merupakan Service default untuk pengontrol Ingress NGINX. Menghapusnya dapat menyebabkan komponen Ingress NGINX tidak berfungsi atau bahkan berhenti beroperasi.Gunakan anotasi dan parameter untuk mengonfigurasi fitur komponen, bukan Snippet atau kode Lua. ACK tidak menyediakan dukungan teknis jika konfigurasi Snippet digunakan dan tidak berfungsi sesuai harapan.
Pengontrol Ingress NGINX mungkin memiliki bug atau kerentanan yang ditemukan di versi open source. Perbarui ke versi terbaru untuk menghindari dampak negatif pada aplikasi Anda.
Dalam skenario beban berat, terapkan setiap pod dari pengontrol Ingress NGINX pada node eksklusif. Untuk informasi lebih lanjut, lihat Terapkan Pengontrol Ingress dalam arsitektur berkeandalan tinggi.
Untuk informasi lebih lanjut tentang penggunaan pengontrol Ingress NGINX, lihat Catatan penggunaan pengontrol Ingress NGINX.
Metode 1: Buat Ingress NGINX di konsol ACK
Create an NGINX Ingress
Masuk ke konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel sebelah kiri, pilih .
Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan Ingress.
Parameter
Deskripsi
Contoh
Gateway Type
Anda dapat memilih ALB, MSE Cloud-native Gateway, atau Nginx sesuai kebutuhan Anda.
Untuk informasi lebih lanjut tentang perbedaan di antara ketiga tipe gateway, lihat Perbandingan antara Ingress Nginx, Ingress ALB, dan Ingress MSE.
Nginx
Name
Tentukan nama Ingress.
nginx-ingress
Ingress Class
Tentukan kelas Ingress.
nginx
Rules
Klik +Add Rule untuk menambahkan aturan Ingress.
Domain Name: Masukkan nama domain kustom.
Mappings: Tentukan parameter berikut:
Path: Masukkan path URL dari Layanan backend. Dalam contoh ini, path root / digunakan.
Rule: Anda dapat memilih Prefix (Prefix-based Match), Exact (Exact Match), atau ImplementationSpecific (Default Value).
Service: Pilih Layanan backend.
Port: Tentukan port Layanan yang ingin Anda paparkan.
Anda dapat mengonfigurasi beberapa path untuk nama domain. Klik + Add untuk menambahkan path.
Domain Name: test.example.com
Mappings:
Path: Dalam contoh ini, path root / digunakan.
Rule: ImplementationSpecific (Nilai Default)
Service: nginx-ingress-lb
Port: 80
TLS Settings
Anda dapat mengaktifkan otentikasi TLS untuk Ingress.
Domain Name: Masukkan nama domain kustom.
Secret: Pilih Secret yang ingin digunakan.
Jika Anda ingin membuat Rahasia, lakukan langkah-langkah berikut:
Klik Create di sebelah kanan Secret.
Di kotak dialog Create Secret, tentukan parameter Name, Cert, dan Key. Lalu, klik OK.
Pilih Rahasia yang Anda buat dari daftar drop-down Secret.
Klik + Add untuk menambahkan sertifikat TLS.
Untuk informasi lebih lanjut tentang cara menggunakan Ingress, lihat Dukungan Ingress.
Aktifkan otentikasi TLS.
Domain Name: test.example.com
Secret: cert
More
Canary Release: Aktifkan rilis canary. Anda dapat mengonfigurasi aturan rilis canary berdasarkan header permintaan, cookie, dan bobot.
CatatanAnda dapat mengonfigurasi aturan rilis canary berdasarkan hanya salah satu elemen berikut: header permintaan, cookie, dan bobot. Anda juga dapat mengonfigurasi aturan rilis canary berdasarkan header permintaan, cookie, dan bobot secara bersamaan. Dalam hal ini, header permintaan, cookie, dan bobot berlaku dalam urutan prioritas menurun.
Based on Request Header: Distribusikan lalu lintas berdasarkan header permintaan dengan menambahkan anotasi
nginx.ingress.kubernetes.io/canary-by-header,nginx.ingress.kubernetes.io/canary-by-header-value, ataunginx.ingress.kubernetes.io/canary-by-header-pattern.Based on Cookie: Distribusikan lalu lintas berdasarkan cookie dengan menambahkan anotasi
nginx.ingress.kubernetes.io/canary-by-cookie.Based on Weight: Distribusikan lalu lintas berdasarkan bobot Layanan (bilangan bulat dari 0 hingga 100) dengan menambahkan anotasi
nginx.ingress.kubernetes.io/canary-weight.
Protocol: Pilih protokol yang digunakan oleh Layanan backend dengan menambahkan anotasi
nginx.ingress.kubernetes.io/backend-protocol.HTTP, HTTPS, gRPC, dan gRPCS didukung.
Rewrite Path: Tambahkan anotasi
nginx.ingress.kubernetes.io/rewrite-targetuntuk menulis ulang path dalam permintaan klien sebelum permintaan diteruskan ke Layanan backend.
Aktifkan rilis canary.
Pilih Based on Request Header lalu tentukan parameter berikut:
Header Permintaan: foo
Match Rule: Exact Match
Match Value: bar
Protocol: gRPC
Rewrite Path: Biarkan parameter ini kosong.
Annotation
Anda dapat memasukkan nama dan nilai anotasi kustom. Anda juga dapat memilih atau mencari anotasi berdasarkan nama dari daftar drop-down. Untuk informasi lebih lanjut tentang anotasi Ingress, lihat Anotasi.
Klik +Add Annotation untuk menambahkan anotasi. ACK tidak membatasi jumlah anotasi Ingress yang dapat Anda tambahkan.
Name: nginx.ingress.kubernetes.io/proxy-body-size
Value: 10m
Labels
Anda dapat menambahkan label untuk menggambarkan karakteristik Ingress.
Klik +Add Label untuk menambahkan label. Tidak ada batasan jumlah label Ingress yang dapat Anda tambahkan.
Name: foo
Value: bar
Setelah konfigurasi selesai, klik OK.
Di halaman Ingresses, Anda dapat melihat Ingress setelah dibuat.
Referensi
Di halaman Ingresses, Anda dapat mengklik Update, Edit YAML, atau Monitor, atau pilih
> Delete di kolom Actions untuk mengelola Ingress.
Metode 2: Buat Ingress NGINX dengan menggunakan kubectl
Buat Ingress NGINX
Buat Deployment dan Layanan.
Anda harus membuat Layanan untuk mengaktifkan akses eksternal sebelum membuat Ingress.
Buat file bernama test-deployment-service.yaml dan salin konten berikut ke file tersebut.
Template YAML berikut digunakan untuk membuat Deployment bernama test-web1 dan Layanan bernama web1-service:
apiVersion: apps/v1 kind: Deployment metadata: name: test-web1 labels: app: test-web1 spec: replicas: 1 selector: matchLabels: app: test-web1 template: metadata: labels: app: test-web1 spec: containers: - name: test-web1 imagePullPolicy: IfNotPresent image: registry.cn-hangzhou.aliyuncs.com/yilong/ingress-test:web1 ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: web1-service spec: type: ClusterIP selector: app: test-web1 ports: - port: 8080 targetPort: 8080Jalankan perintah berikut untuk membuat Deployment dan Layanan:
kubectl apply -f test-deployment-service.yaml
Buat Ingress.
Buat file bernama test-ingress.yaml dan salin konten berikut ke file tersebut:
Kluster yang menjalankan versi Kubernetes lebih awal dari 1.19
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: test-ingress namespace: default spec: rules: - host: test-ingress.com http: paths: - path: /foo backend: serviceName: web1-service servicePort: 8080 - path: /bar backend: serviceName: web1-service servicePort: 8080Kluster yang menjalankan Kubernetes 1.19 atau lebih baru
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress namespace: default spec: rules: - host: test-ingress.com http: paths: - path: /foo backend: service: name: web1-service port: number: 8080 pathType: ImplementationSpecific - path: /bar backend: service: name: web1-service port: number: 8080 pathType: ImplementationSpecific: nama Ingress. Dalam contoh ini, nama diatur menjadi test-ingress.: nama domain yang mengizinkan akses eksternal ke Layanan backend.: path URL yang digunakan untuk mencocokkan permintaan.SLB meneruskan lalu lintas ke Layananbackendhanya saat permintaan masuk cocok dengan pengaturanhostdanpath.backend: nama dan nomor port Layanan backend.Nama Layanan: nama Layanan
backend.Port Layanan: port Layanan yang dipaparkan.
Jalankan perintah berikut untuk membuat Ingress:
kubectl apply -f test-ingress.yaml
Lihat Ingress
Jalankan perintah berikut untuk melihat Ingress:
kubectl get ingressPerbarui Ingress
Jalankan perintah berikut untuk memperbarui Ingress:
kubectl edit ingress <Nama Ingress>Hapus Ingress
Jalankan perintah berikut untuk menghapus Ingress:
kubectl delete ingress <Nama Ingress>