All Products
Search
Document Center

Container Service for Kubernetes:Tingkatkan NGINX Ingress controller

Last Updated:Jun 24, 2026

Setelah peningkatan kluster, tingkatkan NGINX Ingress agar tetap kompatibel dengan API kluster yang telah ditinggalkan. Versi lama membawa risiko keamanan dan stabilitas serta tidak memiliki fitur terbaru; oleh karena itu, segera tingkatkan ke versi terbaru. Peningkatan dilakukan secara bertahap—pantau kesehatan add-on dan layanan selama proses untuk menghindari gangguan trafik.

Penting

Proyek open-source Ingress-NGINX tidak akan lagi dipelihara setelah Maret 2026. Akibatnya, Container Service for Kubernetes juga akan menghentikan pemeliharaan add-on NGINX Ingress controller. Harap waspada terhadap risiko terkait. Lihat [Pengumuman Produk] Penghentian Pemeliharaan Komponen NGINX Ingress Controller.

Proses peningkatan

NGINX Ingress controller merupakan komponen bidang data kritis yang harus tetap stabil.

Perubahan kustom yang signifikan dan kesenjangan versi yang besar dapat menyebabkan ketidakcocokan konfigurasi yang mungkin tidak langsung terlihat setelah peningkatan, sehingga peningkatan satu langkah ke versi terbaru berisiko tinggi.

Peningkatan dilakukan secara bertahap agar Anda dapat memverifikasi layanan pada setiap tahap dan melakukan rollback jika terjadi masalah.

Bagian 1: Pemeriksaan Awal

Pemeriksaan awal dijalankan secara otomatis sebelum peningkatan untuk memverifikasi bahwa komponen memenuhi persyaratan. Pemeriksaan awal gagal jika pengaturan tidak kompatibel atau komponen tidak sehat. Selesaikan masalah ini sebelum melanjutkan.

Bagian 2: Tahap verifikasi

Pada tahap verifikasi, Pod baru menjalankan versi target untuk memvalidasi operasi dan aturan Ingress. Trafik kemudian dialihkan sebagian ke Pod tersebut. Pantau trafik melalui log kontainer, Simple Log Service, atau Managed Service for Prometheus.

Setelah Pod verifikasi berhasil diskalakan, peningkatan dijeda. Pastikan komponen dan layanan dalam kondisi sehat, lalu lanjutkan secara manual. Untuk rollback, hapus Pod baru untuk menghentikan peningkatan.

Tahap ini memodifikasi spec.minReadySeconds dan spec.strategy dalam Deployment.

Bagian 3: Tahap rilis

Tahap rilis melakukan pembaruan bergulir penuh untuk menggantikan semua instans lama. Peningkatan dijeda setelah semua Pod diperbarui agar Anda dapat memastikan status akhir. Lakukan rollback semua Pod ke versi sebelumnya jika muncul masalah.

Bagian 4: Rollback (opsional)

Saat jeda pada tahap verifikasi atau rilis, lakukan rollback untuk mengembalikan komponen ke kondisi sebelum peningkatan jika Anda menemukan masalah.

Sebelum memulai

  • Pemeliharaan untuk NGINX Ingress controller v1.2 dan versi sebelumnya telah berakhir. Lihat [Pengumuman Produk] Penghentian Pemeliharaan NGINX Ingress Controller v1.2 dan Versi Sebelumnya. Versi lama tidak mendapatkan fitur baru, perbaikan bug, maupun dukungan tepat waktu, serta tetap rentan terhadap kerentanan yang belum diperbaiki. Tingkatkan komponen sesegera mungkin.

  • Siapkan pemantauan untuk mendeteksi masalah trafik dengan Simple Log Service atau Managed Service for Prometheus. Lihat Kumpulkan dan analisis log akses NGINX Ingress dan Hubungkan dan konfigurasi Managed Service for Prometheus.

  • Verifikasi bahwa komponen dalam kondisi sehat, semua Pod berstatus Ready, dan tidak ada log error.

  • Jika Anda menggunakan aturan auto-scaling seperti HPA, hapus aturan tersebut sebelum peningkatan dan pulihkan setelah peningkatan selesai.

  • Verifikasi bahwa layanan tipe LoadBalancer untuk NGINX Ingress controller (secara default bernama nginx-ingress-lb) berfungsi normal dan tidak memiliki event abnormal.

  • Jangan memodifikasi komponen atau aturan Ingress selama peningkatan.

  • Jika versi NGINX Ingress controller Anda lebih awal dari v0.44, tinjau perubahan pada logika pencocokan path sebelum meningkatkan.

  • Peningkatan menggunakan rilis canary: Pod versi baru dibuat terlebih dahulu, lalu pembaruan bergulir dimulai setelah Anda memverifikasi trafik. Pastikan kluster memiliki cukup node yang dapat dijadwalkan untuk Pod NGINX Ingress.

Prosedur

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

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Components and Add-ons.

  3. Di halaman Add-ons, temukan NGINX Ingress controller dan klik Upgrade di pojok kanan bawah.

  4. Di dialog peningkatan, klik Start dan konfirmasi untuk memulai peningkatan.

    Catatan

    Anda dapat meninggalkan halaman ini selama peningkatan. Untuk kembali, klik Progress di halaman Add-ons.

  5. Peningkatan dimulai dengan pemeriksaan awal, lalu secara otomatis melanjutkan ke tahap berikutnya.

    Jika Pemeriksaan Awal gagal, klik View Details di bawah Precheck untuk membuka halaman Check Report, perbaiki masalah pada item yang gagal, lalu lihat detail Pemeriksaan Awal. Setelah masalah teratasi, klik Retry untuk memulai ulang peningkatan.

  6. Setelah tahap verifikasi, peningkatan dijeda. Verifikasi status komponen dan layanan menggunakan detail tahap verifikasi.

  7. Setelah verifikasi tampak normal, klik Continue untuk memulai tahap rilis. Peningkatan dijeda lagi setelah pembaruan bergulir selesai. Lakukan pemeriksaan akhir; klik Rollback jika muncul masalah. Setelah rollback selesai, mulai ulang dari halaman Add-ons.

  8. Setelah Anda memastikan komponen dan layanan dalam kondisi sehat, klik Continue untuk menyelesaikan peningkatan.

    Catatan

    Selesaikan seluruh peningkatan dalam waktu satu minggu.

Pemeriksaan Awal

Item pemeriksaan awal

Item pemeriksaan

Deskripsi

Troubleshooting

Deployment exists

Deployment komponen (kube-system/nginx-ingress-controller) ada.

-

Deployment health

Semua Pod Deployment berstatus Ready dan stabil (tidak sedang bergulir).

-

Pod error logs

Memeriksa 200 entri log Pod terakhir untuk log Error atau Fatal.

Log ini mungkin menunjukkan error terbaru akibat salah konfigurasi. Selesaikan sebelum memulai ulang peningkatan. Lihat Troubleshoot masalah NGINX Ingress.

LoadBalancer Service health

Memeriksa apakah layanan LoadBalancer NGINX Ingress (kube-system/nginx-ingress-lb) ada, lalu memverifikasi tidak memiliki event error.

Layanan yang hilang juga dianggap sebagai event Warning.

Jika layanan hilang, ikuti bagian "Hapus secara manual layanan nginx-ingress-lb di namespace kube-system saat NGINX Ingress controller diinstal" dalam Catatan penggunaan dan operasi berisiko tinggi.

Jika layanan ada tetapi memiliki event abnormal, selesaikan menggunakan detail event di Event layanan dan troubleshooting. Pemeriksaan ini dilewati untuk layanan non-LoadBalancer.

HPA

Deployment tidak dikelola oleh HPA. HPA aktif dapat mengganggu peningkatan.

Hapus HPA selama peningkatan dan aktifkan kembali setelah selesai.

Deployment template

Templat Deployment hanya berisi modifikasi yang kompatibel.

Perubahan kustom pada Deployment NGINX Ingress mungkin tidak bertahan setelah peningkatan.

  • Bidang-bidang berikut dipertahankan dan ditambahkan sebagai parameter kustom ke templat baru:

    • Jumlah replika (replicas)

    • Label Pod (template.metadata.labels)

    • Node selector (template.spec.nodeSelector)

    • Toleransi (template.spec.tolerations)

    • Batas resource kontainer controller (template.spec.containers[0].resources)

  • Bidang-bidang berikut tidak memengaruhi pemeriksaan awal tetapi dibuang setelah peningkatan:

    • redeploy-timestamp dalam anotasi Pod (template.metadata.annotations).

    • kubectl.kubernetes.io/restartedAt dalam anotasi Pod.

    • scheduler.alpha.kubernetes.io/critical-pod dalam anotasi Pod.

    • imagePullPolicy gambar.

    • template.spec.containers.securityContext.procMount dibuang jika diatur ke Default.

    • Konfigurasi terkait webhook, seperti parameter runtime, volume yang dimount, dan port.

Perubahan templat ini tidak menyebabkan kegagalan pemeriksaan. Perubahan templat tidak sah atau versi lama yang tidak memenuhi persyaratan peningkatan akan gagal dalam pemeriksaan dan mengurangi keberhasilan peningkatan. Penyebab kegagalan umum meliputi:

  • Volume kustom dimount melalui plug-in seperti EDAS. Nonaktifkan sementara fitur EDAS terkait selama peningkatan dan pulihkan setelah selesai.

  • podAntiAffinity berbeda dari templat standar, mungkin karena templat komponen berubah dari required ke preferred. Sejajarkan secara manual podAntiAffinity dengan templat standar terlebih dahulu.

  • Anda menggunakan nodeAffinity untuk node khusus. Beralihlah ke nodeSelector.

Jika pemeriksaan templat Deployment gagal, pulihkan templat secara manual. Lihat Apa yang harus saya lakukan jika pemeriksaan templat Deployment gagal?.

Ingress configuration

Sumber daya Ingress hanya menggunakan fitur yang kompatibel.

Fitur Ingress yang tidak kompatibel dapat mengganggu penerusan trafik setelah peningkatan dan menyebabkan gangguan layanan. Lihat Kompatibilitas peningkatan di bawah untuk mengidentifikasi dan memperbaiki masalah.

Component configuration

Memverifikasi ConfigMap komponen (kube-system/nginx-configuration) tidak memiliki konfigurasi yang tidak kompatibel.

Pengaturan ConfigMap yang tidak kompatibel dapat mengganggu penerusan trafik setelah peningkatan dan menyebabkan gangguan layanan. Lihat Kompatibilitas peningkatan di bawah untuk mengidentifikasi dan memperbaiki masalah.

Kompatibilitas peningkatan

Versi NGINX Ingress baru mungkin menambahkan fitur, meningkatkan fitur yang ada, atau memperbaiki masalah keamanan, tetapi perubahan arsitektur internal atau dependensi dapat mengganggu kompatibilitas dengan versi sebelumnya. Untuk riwayat perubahan, lihat NGINX Ingress Controller.

Perubahan konfigurasi keamanan default

Versi yang terpengaruh: Versi sebelum v1.12.6-release.1.

Mulai v1.12.6-release.1, ingress-nginx memperketat pengaturan keamanan default, termasuk:

  • Tingkat default annotations-risk-level diturunkan dari Critical ke High. Perubahan ini membuat sumber daya Ingress yang ada dengan anotasi tingkat Critical, seperti anotasi terkait snippet, tidak tersedia.

  • allow-cross-namespace-resources diubah dari true ke false. Konfigurasi ini menonaktifkan referensi lintas-namespace untuk sumber daya seperti ConfigMap dan Secrets secara default.

  • strict-validate-path-type diubah dari false ke true. Konfigurasi ini mengaktifkan validasi path ketat secara default. Artinya, untuk path bertipe Exact dan Prefix, hanya path yang dimulai dengan / dan hanya berisi huruf, angka, -, _, ., dan tambahan / yang diizinkan.

Jika Anda menggunakan fitur yang diblokir oleh pengaturan keamanan ini, aktifkan secara manual di ConfigMap kube-system/nginx-configuration setelah menilai risiko keamanannya.

Validasi native NGINX dinonaktifkan secara default

Versi yang terpengaruh: Versi sebelum v1.11.5-aliyun.1.

Untuk memperbaiki CVE-2025-1974, NGINX Ingress controller menonaktifkan validasi native NGINX (logika nginx -t) secara default mulai v1.11.5-aliyun.1. Webhook validasi tetap diaktifkan tetapi tidak memvalidasi aturan berbasis snippet; hanya anotasi non-snippet yang divalidasi secara default. Untuk aturan snippet, periksa log error runtime NGINX. Lihat Pengumuman Kerentanan CVE-2023-1097, CVE-2023-1098, CVE-2023-1974, CVE-2023-24513, CVE-2023-24514.

Jika Anda menggunakan anotasi snippet, periksa log Pod NGINX Ingress untuk entri terkait Error setiap kali Anda mengubah aturan Ingress terkait:

kubectl logs -f <Nginx-ingress-pod-name> -n kube-system |grep Error

Untuk mengaktifkan kembali validasi native NGINX, tambahkan enable-nginx-native-validation: "true" ke ConfigMap kube-system/nginx-configuration setelah sepenuhnya menilai risikonya.

Anotasi snippet dinonaktifkan secara default

Versi yang terpengaruh: Versi sebelum v1.9.3-aliyun.1.

Karena alasan keamanan, NGINX Ingress controller menonaktifkan semua anotasi snippet secara default mulai v1.9.3-aliyun.1, termasuk:

  • nginx.ingress.kubernetes.io/configuration-snippet

  • nginx.ingress.kubernetes.io/server-snippet

  • nginx.ingress.kubernetes.io/stream-snippet

  • nginx.ingress.kubernetes.io/auth-snippet

  • nginx.ingress.kubernetes.io/modsecurity-snippet

Karena risiko keamanan dan stabilitas, lebih baik gunakan anotasi alternatif atau opsi konfigurasi lain.

Untuk menggunakan anotasi snippet, tambahkan allow-snippet-annotations: "true" ke ConfigMap kube-system/nginx-configuration setelah sepenuhnya menilai risikonya.

Versi TLS lawas tidak didukung

Versi yang terpengaruh: Versi sebelum v1.7.0-aliyun.1.

Karena masalah keamanan pada TLS 1.1 dan versi sebelumnya, versi NGINX Ingress baru tidak lagi mendukung TLS v1.1 dan TLS v1.0 secara default. Sebelum meningkatkan, pastikan layanan Anda tidak bergantung pada TLS v1.1 atau versi sebelumnya dan hapus dari konfigurasi Anda. Perubahan ConfigMap berlaku segera.

Misalnya, jika ConfigMap (kube-system/nginx-configuration) untuk NGINX Ingress controller dikonfigurasi sebagai berikut:

ssl-protocols: SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3

Setelah memastikan layanan Anda tidak terpengaruh, hapus baris ini untuk menggunakan nilai default, atau hapus SSLv3, SSLv2, TLSv1, dan TLSv1.1 serta ubah baris menjadi:

ssl-protocols: TLSv1.2 TLSv1.3

Untuk menerapkan metode enkripsi TLS lama, lihat Versi SSL/TLS apa saja yang didukung oleh Ingress?.

Penggunaan nginx.ingress.kubernetes.io/rewrite-target yang tidak kompatibel

Versi yang terpengaruh: Versi sebelum 0.22.0.

  • Versi 0.22.0 mengubah penggunaan anotasi nginx.ingress.kubernetes.io/rewrite-target. Pada versi 0.22.0 dan seterusnya, Anda harus secara eksplisit menentukan grup tangkapan saat menggunakan rewrite-target.

  • Perilaku rewrite-target sebelum 0.22.0 tidak kompatibel dengan versi saat ini. Sebelum meningkatkan, gunakan anotasi configuration-snippet sebagai ganti rewrite-target.

Misalnya, pada versi sebelum 0.22.0, aturannya adalah:

Perluas untuk melihat kode YAML lengkap

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - path: /something/
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port:
              number: 80
      - path: /something123/
        pathType: Prefix
        backend:
          service:
            name: http-svc-1
            port:
              number: 80

Ubah menjadi sebagai berikut:

Perluas untuk melihat kode YAML lengkap

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    # Gunakan direktif rewrite, di mana /something adalah path di bidang path (tanpa garis miring di akhir).
    # Jika Ingress berisi beberapa path, diperlukan beberapa direktif rewrite.
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite "(?i)/something(/|$)(.*)" /$2 break;
      rewrite "(?i)/something123(/|$)(.*)" /$2 break;
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      - path: /something/ # Pertahankan path konsisten dengan sumber daya Ingress lama.
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port:
              number: 80
      - path: /something123/ # Pertahankan path konsisten dengan sumber daya Ingress lama.
        pathType: Prefix
        backend:
          service:
            name: http-svc-1
            port:
              number: 80

Setelah memperbarui konfigurasi ke format ini, lanjutkan peningkatan. Setelah peningkatan selesai, perbarui Ingress ke sintaks baru.

YAML

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    # Referensikan konten yang cocok.
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
spec:
  rules:
  - host: rewrite.bar.com
    http:
      paths:
      # Gunakan grup tangkapan.
      - path: /something(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port:
              number: 80
      # Gunakan grup tangkapan.
      - path: /something123(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: http-svc-1
            port:
              number: 80

Direktif native NGINX root dan alias tidak lagi didukung

Versi yang terpengaruh: Versi sebelum v1.2.1-aliyun.1.

Karena masalah keamanan dengan direktif root dan alias, versi NGINX Ingress baru (NGINX Ingress Controller) tidak lagi mendukung direktif root dan alias. Sebelum meningkatkan, pastikan Ingress Anda tidak menggunakan direktif native NGINX root atau alias yang dikonfigurasi melalui snippet.

Perubahan pada logika pencocokan path

Logika pencocokan path dapat berbeda di berbagai versi NGINX Ingress dan menyebabkan masalah akses layanan.

  • Pada versi lama (sebelum v0.44), pencocokan prefix lebih longgar. Misalnya, /aaa/bbb dapat mencocokkan /aaa/bbbbb.

  • Setelah peningkatan, pencocokan prefix lebih ketat dan hanya mencocokkan path permintaan yang tepat. Path yang sebelumnya cocok seperti /aaa/bbbbb mungkin mengembalikan 404.

Contoh perubahan logika pencocokan path

  apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    labels:
      ingress-controller: nginx
    name: test
    namespace: default
  spec:
    ingressClassName: nginx
    rules:
    - host: www.example.com
      http:
        paths:
        - backend:
            service:
              name: api-resources-svc
              port:
                number: 8080
          path: /api/resource

Sumber daya Ingress contoh berperilaku berbeda di berbagai versi:

  • Perilaku pada versi lama

    Pada versi NGINX Ingress lama (seperti v0.22.0.5-552e0db-aliyun), konfigurasi NGINX adalah:

    Location /api/resource   ## Tanpa trailing "/"

    Dalam konfigurasi ini, path /api/resource memungkinkan akses melalui http://www.example.com/api/resource pada versi NGINX lama.

    Catatan

    Path akses aktual adalah resources, bukan resource.

  • Perilaku pada versi baru

    Setelah Anda meningkatkan NGINX Ingress ke versi baru (seperti v1.2.1-aliyun.1+), konfigurasi NGINX menjadi:

    Location /api/resource/  # Trailing "/" ditambahkan.
    {
    }
    ...
    Location = /api/resource  # Location untuk pencocokan eksak ditambahkan.
    {
    }

    Mengakses http://www.example.com/api/resources mengembalikan 404.

Versi yang terpengaruh

Versi NGINX Ingress controller sebelum v0.44. Untuk riwayat perubahan, lihat NGINX Ingress Controller. Untuk informasi PR terkait, lihat kubernetes/ingress-nginx #6443.

Gzip dinonaktifkan secara default

Fitur yang diaktifkan secara default berbeda-beda di berbagai versi. Misalnya, pada versi NGINX Ingress controller sebelum v0.40, gzip diaktifkan secara default, sedangkan pada versi setelahnya, gzip dinonaktifkan secara default. Setelah memperbarui komponen, gzip dinonaktifkan, yang dapat meningkatkan trafik untuk Classic Load Balancer (CLB) terkait. Jika instans CLB menggunakan metode penagihan pay-as-you-go, hal ini dapat menyebabkan peningkatan biaya.

Solusi

Edit ConfigMap nginx-configuration di namespace kube-system untuk mengaktifkan kompresi gzip.

data:
  use-gzip: true

Tahap verifikasi

Verifikasi status komponen dan layanan

Selain alat pemantauan Anda sendiri, ACK menyediakan log Simple Log Service, dasbor Managed Service for Prometheus, dan log kontainer native untuk memantau NGINX Ingress. Untuk mengaktifkannya, lihat Kumpulkan dan analisis log akses NGINX Ingress dan Hubungkan dan konfigurasi Managed Service for Prometheus.

Layanan log sederhana

Lihat log yang dikumpulkan oleh Simple Log Service di Konsol ACK.

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

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Operations > Log Center.

  3. Klik tab Application Logs, pilih nginx-ingress dari daftar drop-down Logstore, lalu klik Select Logstore.

    Catatan

    Jika nginx-ingress tidak muncul di Logstore Anda, pastikan pengumpulan log telah dikonfigurasi untuk komponen tersebut. Lihat Kumpulkan dan analisis log akses NGINX Ingress.

Log tersebut menampilkan data akses aplikasi. Filter berdasarkan Pod (misalnya Pod versi baru) untuk membandingkan tingkat keberhasilan permintaan dan jumlah permintaan dengan Pod lama. Lakukan rollback jika data tersebut berbeda signifikan.

Catatan

Secara default, log akses tidak direkam untuk permintaan yang mengembalikan 404 karena tidak ada aturan Ingress yang cocok.

Dasbor Prometheus

Gunakan dasbor dari Managed Service for Prometheus untuk mengamati status permintaan secara keseluruhan.

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

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Operations > Prometheus Monitoring.

  3. Klik tab Network Monitoring, lalu klik Ingresses.

    Catatan

    Jika Ingresses tidak tersedia, pastikan pengumpulan metrik Prometheus telah dikonfigurasi untuk komponen tersebut. Lihat Hubungkan dan konfigurasi Managed Service for Prometheus.

Dasbor tersebut menampilkan metrik operasional Ingress. Pilih Pod tertentu untuk membandingkan tingkat keberhasilan permintaan dan jumlah permintaan dengan Pod lama. Lakukan rollback jika data tersebut berbeda signifikan.

Catatan

Metrik tidak direkam secara default untuk aturan Ingress tanpa Host (yang secara default "*").

Log Pod

Gunakan kubectl untuk mengakses log Pod dari command line dan periksa error.

  • Lihat log error NGINX di Pod, termasuk level warn, error, dan crit:

    kubectl logs -n kube-system <PodName> | grep -e warn -e error -e crit
  • Lihat log kesalahan controller di Pod:

    kubectl logs -n kube-system <PodName> | grep "^[EF]"

FAQ

Apakah saya dapat meningkatkan NGINX Ingress controller ke versi tertentu? Dapatkah saya melakukan rollback ke versi sebelumnya setelah peningkatan berhasil?

NGINX Ingress controller tidak mendukung peningkatan ke versi tertentu. Peningkatan dilakukan secara bertahap ke versi terbaru. Anda tidak dapat melakukan rollback setelah peningkatan berhasil.

Apa yang harus saya lakukan jika Pod gagal dibuat selama tahap verifikasi atau rilis?

Penyebab

Solusi

Pod versi baru gagal saat startup, misalnya karena kegagalan pemuatan konfigurasi, dan masuk ke crash loop.

Gunakan metode Log Pod untuk melihat log error, lalu lihat Troubleshoot masalah NGINX Ingress untuk menyelesaikan masalah.

Hal ini umum terjadi ketika NGINX Ingress berjalan di node khusus. Pod baru mungkin gagal dijadwalkan karena batas resource dan node selector.

Tambahkan sementara node, atau kurangi skala NGINX Ingress selama jam sepi sebelum peningkatan agar Pod dapat dijadwalkan selama peningkatan.

Apa yang harus saya lakukan jika pemeriksaan templat Deployment gagal?

Jika templat Deployment gagal dalam pemeriksaan awal, klik tautan di samping Cause of Error untuk membuka halaman perbedaan komponen dan melihat bidang yang gagal.

  1. Di halaman NGINX Ingress Controller Upgrade, di bawah Precheck, klik View Details.

  2. Di halaman Check Report, di bagian Cluster Component Check Results, klik kotak merah di ① untuk melihat hasil pemeriksaan. Kemudian, di halaman Check Result, klik Deployment Template, lalu klik tautan di samping Cause of Error di ②.

    image..png

  3. Buka halaman Component Differences untuk melihat bidang yang gagal dalam pemeriksaan.

    Halaman perbedaan komponen membandingkan templat standar untuk versi ini (kiri) dengan templat kluster saat ini (kanan), menyoroti perbedaan yang kompatibel dan tidak kompatibel. Halaman ini juga menunjukkan apakah komponen kluster lulus pemeriksaan perbedaan dan mencantumkan jalur bidang yang tidak kompatibel.

    Dalam contoh di bawah, bidang yang berbeda adalah .spec.template.spec.containers.(nginx-ingress-controller).args (tanda kurung menunjukkan nama elemen array). Perbandingan menunjukkan --v=2 dalam args berubah menjadi --v=3, yang harus diperbaiki sebelum peningkatan.

    image..png

  4. Modifikasi bidang yang berbeda.

    Pilih Workloads > Deployments, temukan komponen NGINX Ingress controller, lalu pilih More > View YAML. Di halaman Edit YAML, ubah --v=3 menjadi --v=2 di bidang args.

  5. Setelah memodifikasi bidang tersebut, muat ulang halaman perbedaan komponen. Saat halaman menampilkan The component can pass the difference check, pemeriksaan templat Deployment akan lulus.

    Catatan

    Memodifikasi Deployment kluster akan me-restart Pod NGINX Ingress. Lakukan ini selama jam sepi.

    image..png

Referensi