Kubernetes Ingress Beta API dihapus di GKE 1.23


Halaman ini memberikan informasi tentang penghentian penggunaan dan penghapusan versi Ingress API beta dalam rilis open source Kubernetes 1.22. GKE membuat pengecualian untuk cluster yang dibuat pada versi 1.21 atau yang lebih lama, agar dapat terus menggunakan API tersebut hingga diupgrade ke versi 1.23 guna mendapatkan waktu tambahan untuk bermigrasi. Anda harus memigrasikan cluster ke Ingress API v1 sebelum versi 1.22 mencapai akhir siklus proses (EOL).

Ingress beta API yang tidak digunakan lagi dan dihapus di Kubernetes versi 1.22 adalah API beta sebelumnya yang telah beralih dari Beta (v1beta1) ke GA (v1). GA API memberikan jaminan kompatibilitas jangka panjang dan harus digunakan sebagai pengganti API beta yang tidak digunakan lagi.

Semua objek yang ada dapat diakses menggunakan API GA.

Ingress (tersedia hingga 1.23 untuk cluster yang dibuat pada versi 1.21 atau yang lebih lama)

API versi Beta (extensions/v1beta1 dan networking.k8s.io/v1beta1) dari Ingress tidak digunakan lagi untuk cluster GKE yang menjalankan versi 1.22 atau yang lebih baru jika cluster dibuat pada versi 1.22 atau yang lebih baru.

Namun, untuk cluster yang dibuat di GKE versi 1.21 atau yang lebih lama yang kemudian diupgrade ke versi 1.22 pada patch versi 1.22.7-gke.300 atau yang lebih baru, Anda masih dapat menggunakan API versi Beta sampai cluster diupgrade ke versi 1.23. Ini adalah pengecualian satu kali untuk cluster lama yang dimaksudkan untuk memberi Anda kesempatan memigrasikan cluster agar tidak menggunakan versi API ini, yang telah dihapus dari Kubernetes open source pada versi 1.22.

Semua cluster yang menjalankan GKE versi 1.23 dan yang lebih baru tidak akan lagi menggunakan API Ingress versi beta yang telah dihentikan. Manifes yang menggunakan versi API tersebut tidak dapat lagi diterapkan. Objek yang sebelumnya dipertahankan akan tetap berfungsi serta dapat dilihat dan diupdate menggunakan API versi baru, sebelum dan setelah upgrade ke 1.23.

  • Migrasikan manifes dan klien API untuk menggunakan versi API networking.k8s.io/v1.
  • Lihat tabel berikut yang menjelaskan perubahan penting dalam API versi GA:

    Kolom Perubahan
    spec.backend Diganti namanya menjadi spec.defaultBackend.
    backend serviceName Diganti namanya menjadi service.name.
    servicePort Kolom servicePort backend numerik diganti namanya menjadi service.port.number. Kolom servicePort backend string diganti namanya menjadi service.port.name.
    pathType Sekarang wajib ada untuk setiap jalur yang ditentukan. Nilainya dapat: Prefix, Exact, atau ImplementationSpecific. Untuk mencocokkan dengan perilaku v1beta1 yang tidak ditentukan, gunakan ImplementationSpecific.

Manifes berikut menjelaskan Ingress yang sama di v1 dan v1beta1:

Manifes v1beta1

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: example
spec:
  backend:
    serviceName: default-backend
    servicePort: 80
  rules:
  - http:
      paths:
      - path: /testpath
        backend:
          serviceName: test
          servicePort: 80

Manifes v1

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example
spec:
  defaultBackend:
    service:
      name: default-backend
      port:
        number: 80
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: ImplementationSpecific
        backend:
          service:
            name: test
            port:
              number: 80

Anda dapat menggunakan kueri berikut untuk cluster dengan kemampuan observasi Google Cloud yang diaktifkan guna mengidentifikasi klien yang mengakses Ingress v1beta1 API:

resource.type="k8s_cluster"
resource.labels.cluster_name="$CLUSTER_NAME"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.request.apiVersion=("extensions/v1beta1" OR "networking.k8s.io/v1beta1")
protoPayload.request.kind="Ingress"
NOT ("kube-system")

Menemukan cluster yang menggunakan API yang tidak digunakan lagi

Anda dapat menemukan cluster mana yang menggunakan API yang tidak digunakan lagi melalui insight penghentian penggunaan. Insight penghentian penggunaan juga menyediakan informasi seperti klien API mana yang memanggil API yang tidak digunakan lagi di cluster Anda.

Anda juga dapat menggunakan log audit untuk menemukan klien mana yang melakukan panggilan ke API yang tidak digunakan lagi.

Menemukan klien API yang melakukan panggilan tulis ke API yang tidak digunakan lagi

Untuk cluster dengan Google Cloud Observability yang diaktifkan, Anda dapat menggunakan kueri log audit Aktivitas Admin berikut untuk menampilkan penggunaan API yang tidak digunakan lagi oleh agen pengguna yang tidak dikelola oleh Google:

resource.type="k8s_cluster"
labels."k8s.io/removed-release"="DEPRECATED_API_MINOR_VERSION"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")

Ganti DEPRECATED_API_MINOR_VERSION dengan versi minor yang menghapus API yang tidak digunakan lagi, misalnya 1.22.

Log audit Aktivitas Admin diaktifkan secara otomatis untuk cluster GKE. Dengan kueri ini, log menampilkan agen pengguna yang melakukan panggilan tulis ke API yang tidak digunakan lagi.

Menemukan klien API yang melakukan panggilan baca ke API yang tidak digunakan lagi

Secara default, log audit hanya menampilkan panggilan tulis ke API yang tidak digunakan lagi. Untuk juga menampilkan panggilan baca ke API yang tidak digunakan lagi, konfigurasi log audit Akses Data.

Ikuti petunjuk untuk Mengonfigurasi log audit Akses Data dengan Konsol Google Cloud. Di Konsol Google Cloud, pilih Kubernetes Engine API. Di tab Log Types pada panel informasi, pilih Admin Read dan Data Read.

Dengan mengaktifkan log ini, Anda kini dapat menggunakan kueri asli untuk melihat panggilan baca dan panggilan tulis ke API yang tidak digunakan lagi.

Mengupgrade komponen pihak ketiga

Insight penghentian penggunaan dapat menampilkan hasil untuk agen pihak ketiga yang melakukan panggilan ke API yang tidak digunakan lagi di cluster Anda.

Untuk mengatasi insight ini, coba langkah-langkah berikut:

  1. Hubungi penyedia software pihak ketiga Anda untuk mengetahui apakah mereka memiliki versi yang telah diupdate.
  2. Upgrade software pihak ketiga ke versi terbarunya. Jika tidak dapat mengupgrade software, Anda harus menguji apakah mengupgrade GKE ke versi tersebut, dan menghapus API yang tidak digunakan lagi, akan merusak layanan Anda.

Sebaiknya lakukan upgrade ini dan upgrade versi GKE pada cluster staging untuk memantau gangguan sebelum Anda mengupgrade cluster produksi.

Persiapan untuk mengupgrade ke versi 1.23

Anda tidak perlu menghapus dan membuat ulang objek API apa pun. Semua objek API yang dipertahankan dan yang ada sudah dapat dibaca dan diupdate menggunakan versi API yang baru. Namun, sebaiknya Anda memigrasikan klien dan manifes sebelum mengupgrade ke Kubernetes 1.23. Pelajari lebih lanjut di bagian "Petunjuk" pada Panduan Migrasi API Kubernetes yang Tidak Digunakan Lagi.

Anda dapat melihat insight dan rekomendasi penghentian penggunaan untuk menentukan apakah cluster Anda menggunakan fitur atau API Kubernetes yang tidak digunakan lagi. Cari insight dan rekomendasi tentang penggunaan Ingress beta API dengan subjenis DEPRECATION_K8S_1_22_V1BETA1_API.

Insight penghentian penggunaan didasarkan pada panggilan API teramati ke API yang tidak digunakan lagi oleh agen pengguna, bukan konfigurasi objek Kubernetes Anda.

Mengupdate cluster yang terdampak oleh penghentian penggunaan

Untuk mengupgrade cluster yang terdampak oleh penghentian penggunaan, lakukan langkah-langkah berikut:

  1. Periksa agen pengguna yang menggunakan API yang tidak digunakan lagi di insight penghentian penggunaan atau log.
  2. Update agen pengguna yang menggunakan API yang tidak digunakan lagi agar menggunakan versi API yang didukung.
  3. Update software pihak ketiga yang memanggil API yang tidak digunakan lagi ke versi terbarunya.
  4. Upgrade cluster pengujian dan uji aplikasi Anda di lingkungan pengujian sebelum mengupgrade cluster produksi untuk mengurangi risiko gangguan saat API yang tidak digunakan lagi tidak lagi tersedia.
  5. Setelah Anda mengupdate semua agen pengguna, GKE menunggu hingga tidak ada lagi penggunaan API yang tidak digunakan lagi selama 30 hari, lalu membatalkan pemblokiran upgrade otomatis. Upgrade otomatis akan dilanjutkan sesuai dengan jadwal rilis.
  6. Jika Anda tidak dapat mengupdate agen pengguna yang terdampak, upgrade cluster pengujian terpisah untuk memeriksa apakah upgrade tersebut menyebabkan gangguan. Jika upgrade itu tidak menyebabkan gangguan, Anda dapat mengupgrade cluster secara manual.

Referensi

Informasi selengkapnya tersedia di dokumentasi OSS Kubernetes: