
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:
- Bagian yang umum. Seperti sumber daya Kubernetes lainnya, metadata menyertakan nama CRD (
name: "fruit-crd"),apiVersiondankind. - Informasi tingkat tabel. Nama tabel (
kind: "fruit"), baris perintah nama huruf kecil sederhana (simpler: "fruits"), jamak (plural: "fruits") - 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: