Halaman ini menjelaskan cara menyiapkan cluster untuk upgrade ke GKE versi 1.22. Anda dapat menemukan klien API yang melakukan panggilan ke API yang tidak digunakan lagi dihapus di 1.22 dan memperbarui klien tersebut untuk menggunakan GA API. Untuk mengetahui informasi lebih mendetail, lihat panduan migrasi API Kubernetes yang tidak digunakan lagi.
API yang dihapus di versi 1.22
Sebagian besar API yang tidak digunakan lagi di Kubernetes versi 1.22 adalah bekas API Beta yang telah ditingkatkan dari Beta (v1beta1
) ke GA (v1
). API GA memberikan jaminan kompatibilitas jangka panjang dan harus digunakan sebagai pengganti API Beta yang sudah tidak digunakan lagi.
Semua objek yang ada dapat diakses menggunakan API GA.
Resource webhook
API versi Beta dari MutatingWebhookConfiguration
dan ValidatingWebhookConfiguration
tidak digunakan lagi mulai versi 1.22.
- Migrasikan manifes dan klien API untuk menggunakan versi API admissionregistration.k8s.io/v1.
Lihat tabel berikut yang menjelaskan perubahan penting dalam API versi GA:
Kolom Perubahan webhooks[*].failurePolicy
Default diubah dari Ignore
menjadiFail
.webhooks[*].matchPolicy
Default diubah dari Exact
menjadiEquivalent
.webhooks[*].timeoutSeconds
Default diubah dari 30s
menjadi10s
.webhooks[*].sideEffects
Nilai default dihapus, dan kolom ini kini wajib ada. Hanya None
danNoneOnDryRun
yang diizinkan.webhooks[*].admissionReviewVersions
Nilai default dihapus dan kolom ini kini wajib ada (versi yang didukung untuk AdmissionReview
adalahv1
danv1beta1
).webhooks[*].name
Harus unik dalam daftar untuk objek yang dibuat melalui admissionregistration.k8s.io/v1
.
CustomResourceDefinition
API versi Beta dari CustomResourceDefinition
tidak digunakan lagi mulai versi 1.22.
- Migrasikan manifes dan klien API untuk menggunakan versi API apiextensions.k8s.io/v1.
Lihat tabel berikut yang menjelaskan perubahan penting dalam API versi GA:
Kolom Perubahan spec.scope
Tidak lagi di-default-kan ke Namespaced
. Nilai ini harus ditentukan secara eksplisit.spec.version
Dihapus. Sebagai gantinya, gunakan spec.versions
.spec.validation
Dihapus. Sebagai gantinya, gunakan spec.versions[*].schema
.spec.subresources
Dihapus. Sebagai gantinya, gunakan spec.versions[*].subresources
.spec.additionalPrinterColumns
Dihapus. Sebagai gantinya, gunakan spec.versions[*].additionalPrinterColumns
.spec.conversion.webhookClientConfig
Dipindahkan to spec.conversion.webhook.clientConfig
.spec.conversion.conversionReviewVersions
Dipindahkan to spec.conversion.webhook.conversionReviewVersions
.spec.versions[*].schema.openAPIV3Schema
Sekarang wajib ada saat membuat objek CustomResourceDefinition
v1, dan harus berupa skema struktural.spec.preserveUnknownFields
Nilai true
tidak diizinkan saat membuat objekCustomResourceDefinition
v1. Nilai harus ditentukan dalam definisi skema sebagaix-kubernetes-preserve-unknown-fields: true
.additionalPrinterColumns
Dalam item additionalPrinterColumns
, nama kolomJSONPath
diganti menjadijsonPath
.
APIService
API versi Beta dari APIService
tidak digunakan lagi mulai versi 1.22.
Migrasikan manifes dan klien API untuk menggunakan versi API apiregistration.k8s.io/v1.
TokenReview
API versi Beta dari TokenReview
tidak digunakan lagi mulai versi 1.22.
Migrasikan manifes dan klien API untuk menggunakan versi API authentication.k8s.io/v1.
Resource SubjectAccessReview
API versi Beta dari LocalSubjectAccessReview
, SelfSubjectAccessReview
, dan SubjectAccessReview
tidak digunakan lagi mulai versi 1.22.
- Migrasikan manifes dan klien API untuk menggunakan versi API authorization.k8s.io/v1.
Lihat tabel berikut yang menjelaskan perubahan penting dalam API versi GA:
Kolom Perubahan spec.group
Diganti namanya menjadi spec.groups
.
CertificateSigningRequest
API versi Beta dari CertificateSigningRequest
tidak digunakan lagi mulai versi 1.22.
- Migrasikan manifes dan klien API untuk menggunakan versi API certificates.k8s.io/v1.
Lihat tabel berikut yang menjelaskan perubahan penting dalam API versi GA:
Kolom Perubahan spec.signerName
Untuk klien API yang meminta sertifikat, kolom ini wajib ada (lihat penanda tangan Kubernetes yang diketahui), dan permintaan untuk kubernetes.io/legacy-unknown
tidak diizinkan untuk dibuat melaluicertificates.k8s.io/v1
API.spec.usages
Untuk klien API yang meminta sertifikat, kolom ini wajib ada. Kolom ini tidak boleh berisi nilai duplikat, dan hanya boleh berisi penggunaan yang diketahui. status.conditions
Untuk klien API yang menyetujui atau menandatangani sertifikat, kolom ini tidak boleh berisi jenis duplikat. status.conditions[*].status
Untuk klien API yang menyetujui atau menandatangani sertifikat, kolom ini sekarang wajib ada. status.certificate
Untuk klien API yang menyetujui atau menandatangani sertifikat, kolom ini harus berenkode PEM dan hanya berisi blok CERTIFICATE
.
Lease
API versi Beta dari Lease
tidak digunakan lagi mulai versi 1.22. Migrasikan manifes dan klien API untuk menggunakan versi API coordination.k8s.io/v1.
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 menjadiservice.port.number
. KolomservicePort
backend string diganti namanya menjadiservice.port.name
.pathType
Sekarang wajib ada untuk setiap jalur yang ditentukan. Nilainya dapat: Prefix
,Exact
, atauImplementationSpecific
. Untuk mencocokkan dengan perilakuv1beta1
yang tidak ditentukan, gunakanImplementationSpecific
.
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")
IngressClass
API versi Beta dari IngressClass
tidak digunakan lagi mulai versi 1.22.
Migrasikan manifes dan klien API untuk menggunakan versi API networking.k8s.io/v1.
Resource RBAC
API versi Beta dari ClusterRole
, ClusterRoleBinding
, Role
, dan RoleBinding
tidak digunakan lagi mulai versi 1.22. Migrasikan manifes dan klien API untuk menggunakan versi API rbac.authorization.k8s.io/v1.
PriorityClass
API versi Beta dari PriorityClass
tidak digunakan lagi mulai versi 1.22.
Migrasikan manifes dan klien API untuk menggunakan versi API scheduling.k8s.io/v1.
Resource Storage
API versi Beta dari CSIDriver
, CSINode
, StorageClass
, dan VolumeAttachment
tidak digunakan lagi mulai versi 1.22. Migrasikan manifes dan klien API untuk menggunakan versi API storage.k8s.io/v1.
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:
- Hubungi penyedia software pihak ketiga Anda untuk mengetahui apakah mereka memiliki versi yang telah diupdate.
- 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.
Bersiap untuk upgrade ke versi 1.22
Anda tidak perlu menghapus dan membuat ulang objek API apa pun. Semua objek API lama yang dipertahankan sudah dapat dibaca dan diupdate menggunakan API versi baru. Namun, sebaiknya migrasikan klien dan manifes Anda sebelum mengupgrade ke Kubernetes 1.22. Pelajari lebih lanjut di bagian "Yang harus dilakukan" dalam 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. 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:
- Periksa agen pengguna yang menggunakan API yang tidak digunakan lagi di insight penghentian penggunaan atau log.
- Update agen pengguna yang menggunakan API yang tidak digunakan lagi agar menggunakan versi API yang didukung.
- Update software pihak ketiga yang memanggil API yang tidak digunakan lagi ke versi terbarunya.
- 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.
- 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.
- 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:
- Blog Kubernetes: Penghapusan API untuk Kubernetes versi 1.22
- Catatan rilis Kubernetes 1.22
- Panduan Migrasi API Kubernetes yang Tidak Digunakan Lagi