Ganti ack-ingress-nginx dengan ack-ingress-nginx-v1 untuk mendukung Kubernetes 1.24 dan versi setelahnya.
Latar Belakang
Kubernetes 1.24 di ACK menghentikan penggunaan resource Ingress v1beta1. ack-ingress-nginx menginstal Nginx Ingress Controller versi 0.44.0, yang masih menggunakan v1beta1. Setelah upgrade ke Kubernetes 1.24, controller ini menjadi tidak tersedia.
ack-ingress-nginx-v1 menggunakan Nginx Ingress Controller ≥ 1.1.0. Gantilah ack-ingress-nginx dengan ack-ingress-nginx-v1 agar controller tetap berjalan.
Hal ini tidak berlaku untuk Nginx Ingress Controller yang dikelola melalui Component Management. Untuk meng-upgrade komponen tersebut, lihat Upgrade komponen Nginx Ingress Controller.
Prasyarat
-
Versi kluster adalah 1.20 atau lebih baru.
CatatanChart ack-ingress-nginx-v1 versi 4.0.17+ (komponen v1.8.0-aliyun.1+) memerlukan versi kluster 1.22 atau lebih baru. Untuk kluster versi 1.20, gunakan Chart 4.0.16 (komponen v1.2.1-aliyun.1).
-
ack-ingress-nginx diinstal dari Marketplace.
Langkah 1: Buat aplikasi ack-ingress-nginx-v1
Buat aplikasi ack-ingress-nginx-v1 dari Marketplace
Untuk setiap aplikasi ack-ingress-nginx, deploy aplikasi ack-ingress-nginx-v1 yang sesuai seperti dijelaskan dalam Deploy multiple Ingress Controllers to isolate traffic.
Jangan mengatur controller.ingressClassResource.name di ack-ingress-nginx-v1 ke nilai yang sama dengan controller.ingressClass di ack-ingress-nginx. Kelas Ingress yang bertabrakan dapat menyebabkan masalah stabilitas pada controller.
(Opsional) Sesuaikan spesifikasi dan parameter SLB
Jika sebelumnya Anda telah menyesuaikan spesifikasi atau parameter Server Load Balancer (SLB) untuk ack-ingress-nginx, terapkan penyesuaian yang sama pada ack-ingress-nginx-v1. Konfigurasikan Service menggunakan Anotasi controller.service (jaringan publik) atau controller.service.internal (jaringan pribadi). Lihat Configure Classic Load Balancer (CLB) using Annotations untuk CLB atau Configure Network Load Balancer (NLB) using Annotations untuk NLB.
Langkah 2: Buat dan validasi aturan routing Ingress
Salin aturan routing Ingress yang sudah ada, perbarui Ingress Class-nya, lalu terapkan agar trafik tidak terganggu. Contohnya:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: nginx-intranet # Ingress Class 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: ImplementationSpecific
Buat aturan routing Ingress baru.
-
Jika menggunakan Anotasi, ubah hanya nama Ingress Class-nya. Pertahankan semua konfigurasi lainnya tanpa perubahan.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress-v1 # Buat resource Ingress baru. namespace: default annotations: kubernetes.io/ingress.class: nginx-intranet-v1 # Ubah ke Ingress Class yang digunakan oleh ack-ingress-nginx-v1, misalnya 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: ImplementationSpecific -
Jika Anda menggunakan
spec.ingressClassNamealih-alih Anotasi, buat aturan Ingress baru dan perbarui nama Ingress Class dispec.ingressClassName.
Setelah membuat aturan Ingress baru, lakukan validasi dengan memperbarui file hosts lokal Anda agar nama domain di-resolve ke alamat IP CLB yang baru.
Langkah 3: Migrasi trafik
Setelah memvalidasi aturan routing Ingress yang baru, migrasikan trafik ke ack-ingress-nginx-v1 dengan memperbarui rekaman DNS.
Masuk ke Konsol Alibaba Cloud DNS atau konsol DNS penyedia domain Anda. Perbarui rekaman DNS agar mengarah ke alamat IP yang baru. Pantau aplikasi Anda selama propagasi DNS dan lakukan rollback jika diperlukan. Gunakan log kontainer atau Metrics untuk melacak progres migrasi.
Langkah selanjutnya
Setelah seluruh trafik berhasil dimigrasikan dan operasi normal telah dikonfirmasi, hapus aplikasi ack-ingress-nginx asli. Masuk ke Container Service for Kubernetes console. Pilih kluster Anda, pilih , temukan release tersebut, lalu klik Delete.