Topik ini menjelaskan cara memperbarui ack-ingress-nginx yang dipasang di halaman Marketplace konsol Container Service for Kubernetes (ACK).
Informasi latar belakang
Ingress API v1beta1 sudah tidak digunakan lagi di Kubernetes 1.24. Jika NGINX Ingress controller 0.44.0 dipasang oleh ack-ingress-nginx, pengontrol tersebut menggunakan Ingress API v1beta1. Dalam kasus ini, NGINX Ingress controller tidak dapat berjalan seperti yang diharapkan setelah Anda memperbarui versi Kubernetes kluster ke 1.24.
NGINX Ingress controller 1.1.0 dan yang lebih baru diterapkan oleh ack-ingress-nginx-v1. Untuk memastikan bahwa NGINX Ingress controller dapat berjalan seperti yang diharapkan, kami menyarankan Anda mengganti ack-ingress-nginx dengan ack-ingress-nginx-v1.
Topik ini tidak berlaku untuk NGINX Ingress controller yang diterapkan dari halaman Add-ons di konsol ACK. Untuk informasi lebih lanjut tentang cara mengelola NGINX Ingress controller yang diterapkan dari halaman Add-ons, lihat Perbarui NGINX Ingress Controller.
Prasyarat
Kluster ACK yang menjalankan Kubernetes 1.20 atau yang lebih baru telah dibuat.
Anda hanya dapat memilih versi bagan 4.0.17 atau yang lebih baru (ack-ingress-nginx-v1 1.8.0-aliyun.1 atau yang lebih baru) jika kluster ACK Anda menjalankan Kubernetes 1.22 atau yang lebih baru. Jika kluster ACK Anda menjalankan Kubernetes 1.20, pilih versi bagan 4.0.16 (ack-ingress-nginx-v1 1.2.1-aliyun.1).
ack-ingress-nginx dipasang di kluster dari halaman Marketplace di konsol ACK.
Langkah 1: Pasang ack-ingress-nginx-v1
Pasang ack-ingress-nginx-v1 dari halaman Marketplace di konsol ACK
Pasang ack-ingress-nginx-v1 untuk setiap NGINX Ingress controller yang diterapkan dengan memasang ack-ingress-nginx. Untuk informasi lebih lanjut, lihat Terapkan Beberapa Ingress Controller dalam Sebuah Kluster.
Jangan atur nilai parameter controller.ingressClassResource.name di ack-ingress-nginx-v1 menjadi nilai parameter controller.ingressClass di ack-ingress-nginx. Jika tidak, NGINX Ingress controller mungkin tidak berjalan seperti yang diharapkan karena konflik kelas Ingress.
(Opsional) Ubah spesifikasi dan parameter SLB
Jika Anda telah mengubah spesifikasi atau parameter Server Load Balancer (SLB) di ack-ingress-nginx, Anda mungkin ingin memigrasikan perubahan tersebut ke ack-ingress-nginx-v1. Untuk melakukannya, konfigurasikan anotasi controller.service (untuk instance SLB yang menghadap internet) atau anotasi controller.service.internal (untuk instance SLB akses internal) di ack-ingress-nginx-v1 untuk mengonfigurasi Layanan LoadBalancer. Untuk informasi lebih lanjut tentang cara mengonfigurasi anotasi Layanan, lihat Gunakan Anotasi untuk Mengonfigurasi Instance CLB dan Gunakan Anotasi untuk Mengonfigurasi Instance NLB.
Langkah 2: Buat Ingress baru dan uji apakah ack-ingress-nginx-v1 dapat merutekan lalu lintas seperti yang diharapkan
Setelah Anda memasang ack-ingress-nginx-v1, buat Ingress baru berdasarkan konfigurasi Ingress asli. Ubah kelas Ingress yang ditentukan dalam Ingress. Contoh Ingress asli:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: nginx-intranet # Kelas Ingress yang ditentukan dalam Ingress asli adalah nginx-intranet.
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: ImplementationSpecificBuat Ingress baru.
Jika kelas Ingress ditentukan dengan menggunakan anotasi, Anda perlu mengubah nama kelas Ingress, tetapi jangan ubah anotasi lainnya.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress-v1 # Buat Ingress baru. namespace: default annotations: kubernetes.io/ingress.class: nginx-intranet-v1 # Ubah nama kelas Ingress menjadi nama kelas Ingress yang digunakan oleh nginx-intranet-v1. Dalam contoh ini, nama kelas Ingress adalah nginx-intranet-v1. 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: ImplementationSpecificJika kelas Ingress ditentukan dengan menggunakan parameter
spec.ingressClassName, ulangi langkah-langkah sebelumnya untuk membuat Ingress baru dan ubah nilai parameterspec.ingressClassNamedi Ingress baru.
Setelah Anda membuat Ingress baru, Anda dapat mengonfigurasi file hosts untuk memetakan nama domain ke alamat IP instance Classic Load Balancer (CLB) baru. Kemudian, uji apakah ack-ingress-nginx-v1 dapat merutekan lalu lintas seperti yang diharapkan.
Langkah 3: Alihkan lalu lintas ke ack-ingress-nginx-v1
Setelah Anda memastikan bahwa ack-ingress-nginx-v1 dapat merutekan lalu lintas seperti yang diharapkan, ubah pengaturan resolusi DNS untuk mengalihkan lalu lintas ke ack-ingress-nginx-v1.
Masuk ke Konsol Alibaba Cloud DNS atau konsol tempat Anda dapat mengonfigurasi pengaturan resolusi untuk nama domain yang Anda gunakan dan petakan nama domain ke alamat IP instance CLB baru. Perubahan pada pengaturan resolusi DNS akan berlaku setelah beberapa waktu. Kami menyarankan Anda memantau bisnis Anda selama periode ini untuk menghindari kesalahan. Anda dapat melihat log kontainer dan data deret waktu untuk memantau kemajuan pergantian.
Apa yang harus dilakukan selanjutnya
Setelah Anda memastikan bahwa lalu lintas sepenuhnya dialihkan ke ack-ingress-nginx-v1 dan bisnis Anda dapat diakses seperti yang diharapkan, hapus instalasi ack-ingress-nginx. Masuk ke Konsol ACK. Pilih kluster Anda dan masuk ke halaman detail kluster. Di panel navigasi di sebelah kiri, pilih . Temukan Helm release yang bernama ack-ingress-nginx dan klik Delete di kolom Tindakan.