Penjelasan sederhana CRD di Kubernetes dan cara menggunakannya

Space by maryanion



CRD (Custom Resource Definition) adalah sumber daya khusus di Kubernetes yang memungkinkan Anda memasukkan data apa pun. Tim Kubernetes aaS dari Mail.ru telah menerjemahkan sebuah artikel tentang apa itu, cara membuat, dan menggunakannya.



Apa itu CRD



CRD hanyalah tabel di database. Katakanlah kita telah membuat tabel "Buah", ada banyak catatan di dalamnya: "apel", "pisang", "jeruk". Setiap catatan memiliki kolom dengan karakteristik buah seperti kemanisan, rasa, dan berat.



Jadi, CRD mirip dengan tabel "Buah".







CR (Sumber daya khusus) - catatan terpisah dalam tabel, misalnya, "apple" atau "banana". Setelah membuat CRD (tabel), Anda dapat menambah atau menghapus CR (catatan).







CRD dibutuhkan karena semakin banyak pengguna yang ingin menyumbangkan data ke Kubernetes. Format datanya bisa berbeda, dan CRD tidak ditentukan di Kubernetes secara langsung. Akibatnya, Anda perlu membuat tabel Anda sendiri, mengatur nama dan tipe kolom, seperti dalam database.



Misalnya, seorang manajer TI ingin menggunakan CRD untuk mengatur daftar pengguna, daftar departemen, jadwal kerja, atau yang lainnya.



Cara membuat CRD



Seperti disebutkan, CRD adalah tabel. Saat kita membuat tabel, kita perlu mengatur formatnya: nama dan tipe kolom. Di CRD, elemen ini dijelaskan dalam format YAML atau JSON. CR juga menjelaskan setiap nilai yang akan ditulis dalam format YAML atau JSON.







Mari kita lihat seperti apa CRD dari dalam:







CRD dibagi menjadi tiga bagian: bagian umum, informasi di tingkat tabel dan informasi di tingkat kolom:



  1. Bagian yang umum. Seperti sumber daya Kubernetes lainnya, metadata menyertakan nama CRD ( name: "fruit-crd"), apiVersiondan kind.
  2. Informasi tingkat tabel. Nama tabel ( kind: "fruit"), baris perintah nama huruf kecil sederhana ( simpler: "fruits"), jamak ( plural: "fruits")
  3. Informasi tingkat kolom. Nama kolom ( "sweetness"), tipe kolom ( "boolean", "string", "integer", "object"), objek bersarang ( : < >). Mereka sesuai dengan format OpenAPISpecification versi 3.


Informasi lebih lanjut tentang CRD ada di manual resmi .



CRD cek



Apakah CRD benar-benar hanya sebuah tabel? Mari kita periksa.



Saya tidak ingin mengingat format CRD dan saya membutuhkan cara yang lebih mudah untuk membuatnya. Jadi saya hanya menulis definisi tabel dan saya memiliki pernyataan - alat penghasil CRD otomatis.



Penjelasannya sangat sederhana: Anda perlu membuat daftar pasangan nama dan tipe kolom.







Setelah menerapkan YML ini, operator saya di Kubernetes secara otomatis menghasilkan CRD yang sesuai. Anda dapat membuat operator Anda sendiri, tetapi jika Anda ingin mencoba milik saya, jalankan perintah berikut:



kubectl apply -f
https://raw.githubusercontent.com/onelittlenightmusic/k8sasdb/master/install.yaml


Setelah berhasil menginstal operator, periksa apakah Pod telah dimulai:



kubectl get pod -n k8sasdb-system
NAME                                         READY   STATUS    RESTARTS   AGE
k8sasdb-controller-manager-9dbf54b4f-hzrt9   2/2     Running   0          8s


Anda dapat mengunduh tabel sampel dan catatan CR dari sini .



Seperti inilah tampilan CRD yang dihasilkan. Kiri: informasi umum dan tingkat tabel, kanan: informasi tingkat kolom.







Kemudian saya menambahkan CR berikut (YAML untuk satu buah).





Contoh CR "Buah"



Sekarang mari kita periksa hasilnya di tabel dan operasi pada catatan.



Membuat tabel



kubectl create -f fruit.yaml






Berhasil: CRD diinstal = tabel dibuat.







Ini sama dengan perintah SQL CREATE TABLE fruits;.



Buat rekaman



kubectl create -f apple.yaml






Sukses: CR set = record dibuat. Ini sama dengan perintah SQL INSERT INTO fruits values('apple', ...);.



Mendapatkan daftar catatan



kubectl get fruits






Sukses: Menampilkan dua CR dan semua kolom untuk mereka. Setara dengan perintah SQL SELECT * FROM fruits;.



Menerima rekor



kubectl get fruit apple






Berhasil. Tentunya Anda bisa menggunakan nama lain, misalnya "banana". Perintah ini setara dengan kueri SQL SELECT * FROM fruits WHERE name = 'apple';.



Hapus entri



kubectl delete fruit apple






Setelah menghapus, perintah untuk memeriksa seluruh daftar buah tidak menunjukkan hasil "apel".







Berhasil. Analog di SQL: DELETE FROM fruits WHERE name = 'banana';.



Kesimpulan



CRD hanyalah sebuah tabel di Kubernetes. Anda dapat membuat tabel baru dengan CRD dan menambahkan record dengan CR. Juga di CRD, Anda dapat menentukan skema tabel dengan menentukan nama dan tipe kolom. Setelah Anda menguasai perintah CRD, CR, dan kubectl, Anda dapat mengunggah data apa pun ke Kubernetes.



Tidak perlu takut: meskipun Anda tidak ingat format CRD, operator akan membantu Anda. Versi open source saya dari operator diposting di sini .



Apa lagi yang harus dibaca:



  1. Cara menggunakan kubectl dengan lebih efisien: panduan komprehensif .
  2. Kubernetes: .
  3. Kubernetes .



All Articles