All Products
Search
Document Center

Container Service for Kubernetes:Ekspos layanan dengan Nginx Ingress

Last Updated:Mar 26, 2026

Ingress adalah objek resource Kubernetes yang digunakan untuk mengaktifkan akses eksternal ke layanan (Services) dalam kluster Kubernetes. Topik ini menjelaskan cara membuat, melihat, memperbarui, dan menghapus NGINX Ingress di Container Service for Kubernetes (ACK) menggunakan Konsol ACK atau kubectl.

Prasyarat

Sebelum memulai, pastikan Anda telah:

Batasan

Jangan melanggar batasan berikut karena dapat memengaruhi apakah controller NGINX Ingress berjalan dengan benar:

  • Jangan menghapus layanan kube-system/nginx-ingress-lb. Ini adalah layanan default yang digunakan oleh controller NGINX Ingress. Menghapusnya dapat menyebabkan controller gagal atau berhenti.

  • Sesuaikan parameter komponen hanya melalui halaman detail kluster di Konsol ACK atau melalui API ACK. Metode lain dapat menyebabkan perilaku tak terduga atau kegagalan pembaruan.

Rekomendasi

  • Konfigurasikan fitur komponen melalui anotasi dan parameter, bukan melalui kode Snippet atau Lua. ACK tidak memberikan dukungan teknis untuk masalah yang disebabkan oleh konfigurasi Snippet.

  • Perbarui controller NGINX Ingress ke versi terbaru untuk menghindari bug dan kerentanan yang diketahui dari rilis open-source upstream.

  • Pada skenario beban tinggi, sebarkan setiap Pod controller NGINX Ingress pada node khusus. Lihat Sebarkan controller Ingress dalam arsitektur berkeandalan tinggi.

Untuk referensi penggunaan lengkap, lihat Catatan penggunaan controller NGINX Ingress.

Buat NGINX Ingress di Konsol ACK

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

  2. Pada halaman Clusters, klik nama kluster target. Di panel kiri, pilih Network > Ingresses.

  3. Pada halaman Ingresses, klik Create Ingress. Pada kotak dialog Create Ingress, konfigurasikan parameter berikut:

    ParameterDeskripsiContoh
    Gateway TypePilih ALB, MSE Cloud-native Gateway, atau Nginx. Untuk perbandingan, lihat Perbandingan antara Nginx Ingress, ALB Ingress, dan MSE Ingress.Nginx
    NameNama Ingress.nginx-ingress
    Ingress ClassKelas Ingress.nginx
    RulesKlik +Add Rule untuk menentukan aturan routing. Untuk setiap aturan, tentukan: Domain name (domain kustom), Path (jalur URL layanan backend), Rule (Prefix, Exact, atau ImplementationSpecific), Service (layanan backend), dan Port (port layanan yang diekspos). Klik + Add untuk menambahkan beberapa jalur untuk domain yang sama.Domain name: test.example.com, Path: /, Rule: ImplementationSpecific, Service: nginx-ingress-lb, Port: 80
    TLS SettingsAktifkan otentikasi TLS. Tentukan nama domain dan pilih atau buat Secret (memerlukan Name, Cert, dan Key). Klik + Add untuk menyambungkan beberapa sertifikat TLS. Lihat Dukungan Ingress.Domain name: test.example.com, Secret: cert
    MoreKonfigurasikan fitur opsional: Canary release — arahkan traffic berdasarkan header permintaan (nginx.ingress.kubernetes.io/canary-by-header, nginx.ingress.kubernetes.io/canary-by-header-value, nginx.ingress.kubernetes.io/canary-by-header-pattern), cookie (nginx.ingress.kubernetes.io/canary-by-cookie), atau bobot (nginx.ingress.kubernetes.io/canary-weight, bilangan bulat 0–100). Saat beberapa metode aktif, header permintaan memiliki prioritas lebih tinggi daripada cookie, dan cookie lebih tinggi daripada bobot. Protocol — atur protokol backend (nginx.ingress.kubernetes.io/backend-protocol): HTTP, HTTPS, gRPC, atau gRPCS. Rewrite Path — tulis ulang jalur permintaan sebelum meneruskan (nginx.ingress.kubernetes.io/rewrite-target).Canary release: berdasarkan header permintaan foo: bar (Exact Match); Protocol: gRPC
    AnnotationTambahkan anotasi kustom berdasarkan nama dan nilai. Pilih dari daftar drop-down atau masukkan kunci kustom. Tidak ada batasan jumlah anotasi. Lihat Annotations.Name: nginx.ingress.kubernetes.io/proxy-body-size, Value: 10m
    LabelsTambahkan label untuk menggambarkan karakteristik Ingress. Tidak ada batasan jumlah label.Name: foo, Value: bar
  4. Klik OK.

Ingress akan muncul di halaman Ingresses.

Kelola Ingress yang sudah ada

Di halaman Ingresses, gunakan kolom Actions untuk mengelola Ingress yang sudah ada:

  • Update — edit konfigurasi Ingress

  • Edit YAML — modifikasi langsung YAML Ingress

  • Monitor — lihat metrik pemantauan

  • 更多 > Delete — hapus Ingress

Buat NGINX Ingress menggunakan kubectl

Langkah 1: Buat Deployment dan Service

Ingress mengarahkan traffic ke Service, sehingga Service harus sudah ada sebelum Anda membuat Ingress.

  1. Buat file bernama test-deployment-service.yaml dengan konten berikut:

    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. Terapkan manifes:

    kubectl apply -f test-deployment-service.yaml

Langkah 2: Buat Ingress

Format manifes Ingress berbeda antar versi Kubernetes. Perbedaan utamanya terletak pada field versi API dan struktur spesifikasi untuk menentukan layanan backend. Kedua contoh di bawah mengarahkan /foo dan /bar ke web1-service pada port 8080.

Kubernetes 1.19 dan yang lebih baru (menggunakan networking.k8s.io/v1 dengan pathType eksplisit):

  1. Buat file bernama test-ingress.yaml dengan konten berikut:

    FieldDeskripsi
    metadata.nameNama resource Ingress (test-ingress).
    spec.rules[].hostNama domain untuk akses eksternal (test-ingress.com). Traffic hanya diteruskan ke backend jika host dan path sesuai dengan permintaan inbound.
    spec.rules[].http.paths[].pathJalur URL yang dicocokkan (/foo, /bar).
    spec.rules[].http.paths[].pathTypeMode pencocokan jalur. ImplementationSpecific mendelegasikan perilaku ke controller Ingress.
    backend.service.nameNama layanan backend (web1-service).
    backend.service.port.numberPort layanan tempat traffic diteruskan (8080).
    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

    Field utama:

Versi Kubernetes sebelum 1.19 (menggunakan networking.k8s.io/v1beta1 tanpa pathType):

  1. Buat file bernama test-ingress.yaml dengan konten berikut:

    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
  2. Terapkan manifes:

    kubectl apply -f test-ingress.yaml

Langkah 3: Verifikasi Ingress

Jalankan perintah berikut untuk memastikan Ingress berhasil dibuat:

   kubectl get ingress

Lihat, perbarui, dan hapus Ingress

OperasiPerintah
Lihat semua Ingresskubectl get ingress
Perbarui Ingresskubectl edit ingress <Ingress name>
Hapus Ingresskubectl delete ingress <Ingress name>

Langkah selanjutnya