全部产品
Search
文档中心

Container Service for Kubernetes:Buat Ingress NGINX

更新时间:Jul 02, 2025

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-lb Service, 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

  1. Masuk ke konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.

  2. Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel sebelah kiri, pilih Network > Ingresses.

  3. 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:

      1. Klik Create di sebelah kanan Secret.

      2. Di kotak dialog Create Secret, tentukan parameter Name, Cert, dan Key. Lalu, klik OK.

      3. 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.

      Catatan

      Anda 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, atau nginx.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-target untuk 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

  4. 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

  1. Buat Deployment dan Layanan.

    Anda harus membuat Layanan untuk mengaktifkan akses eksternal sebelum membuat Ingress.

    1. 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: 8080
    2. Jalankan perintah berikut untuk membuat Deployment dan Layanan:

      kubectl apply -f test-deployment-service.yaml
  2. Buat Ingress.

    1. 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: 8080

      Kluster 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 Layanan backend hanya saat permintaan masuk cocok dengan pengaturan host dan path.

      • backend: nama dan nomor port Layanan backend.

        • Nama Layanan: nama Layanan backend.

        • Port Layanan: port Layanan yang dipaparkan.

    2. Jalankan perintah berikut untuk membuat Ingress:

      kubectl apply -f test-ingress.yaml

Lihat Ingress

Jalankan perintah berikut untuk melihat Ingress:

kubectl get ingress

Perbarui 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>