Kuby-core: Mendukung kubedb versi terbaru

Dibuat pada 28 Apr 2021  ·  2Komentar  ·  Sumber: getkuby/kuby-core

Sayangnya orang-orang baik di AppsCode (pembuat kubedb) sekarang mengharuskan setiap pengguna untuk mendapatkan lisensi gratis. Meskipun kuby dapat melakukan beberapa hal rumit untuk mendapatkan lisensi secara otomatis, itu tidak terasa sangat bermoral (atau mungkin bahkan legal?) Satu-satunya solusi yang dapat saya pikirkan adalah mengarahkan pengguna ke situs web AppsCode selama penyiapan klaster dan kemudian meminta mereka untuk isi file lisensi. Jelas itu tidak ideal, tapi saya pikir itu satu-satunya pilihan yang kita miliki jika kita ingin tetap menggunakan kubedb dengan kuby (yang menurut saya kita lakukan - ini luar biasa).

enhancement help wanted

Semua 2 komentar

Ok, beberapa konteks tambahan di sini. Ternyata bagian yang sulit bukanlah mengambil lisensi secara terprogram (yang mungkin, kita hanya perlu meminta orang untuk token server lisensi, alamat email, dll). Bagian yang sulit adalah _upgrade_ operator kubedb dan database individu. Menghapus instalasi v0.12 sulit dengan sendirinya karena Anda jelas tidak ingin menghapus instance database yang ada, tetapi akhirnya saya berhasil. Untungnya menginstal v0.18 (versi terbaru pada saat penulisan ini) cukup mudah dengan Helm... tetapi sangat sulit untuk mengupgrade instance Postgres atau MySQL yang ada yang _sudah_ berjalan (tanpa downtime). Berikut adalah langkah-langkah yang (hampir) saya lakukan untuk Postgres:

  1. Pastikan db yang ada diatur untuk replikasi logis, yang memerlukan perubahan tingkat WAL (log tulis di depan). Menyetel level WAL memerlukan pg restart, jadi cara termudah untuk melakukannya adalah dengan mengatur jumlah replika ke > 1 sambil secara bersamaan memberi tahu kubedb untuk menggunakan konfigurasi tambahan, yang akan menghasilkan restart. Anda tetap menginginkan banyak replika sehingga memulai ulang tidak mengakibatkan waktu henti.
  2. Hapus instalan operator kubedb versi lama dan instal yang baru, dengan sangat berhati-hati agar tidak menjatuhkan instance database Anda yang sudah ada. Ini bisa sedikit rumit karena k8s cukup enggan untuk menghapus Postgres CRD jika masih ada instance Postgres yang berjalan. Masuk akal. Untungnya ada cara untuk mengelabui k8 agar melakukan apa yang Anda inginkan.
  3. Buat instance postgres baru dengan WAL = logis dan buat pub/sub yang diperlukan antara yang lama dan yang baru sehingga semua catatan di db lama disalin ke db baru. Berhati-hatilah untuk memberikan kata sandi kepada pengguna postgres di db baru jika pengguna yang Anda gunakan untuk mengakses db dari Rails _tidak_ postgres (Kuby menggunakan root secara default) . Ini diperlukan karena apa yang saya yakini sebagai bug dalam skrip init kubedb. Db baru ini jelas harus memiliki nama yang berbeda dari yang lama, yang merupakan masalah. Nama db menentukan rel nama DNS yang terhubung, yang sebenarnya tidak dapat kita ubah. Hmm...
  4. Terapkan aplikasi Rails dan arahkan ke layanan database baru.
  5. Hapus database lama
  6. Laba

Saat ini saya terjebak mencoba mencari cara untuk dengan mudah mengarahkan aplikasi Rails ke layanan database baru. URL layanan pada dasarnya adalah hard-coded dan tidak dapat berubah secara dinamis. Selain itu, layanan basis data baru tidak boleh memiliki nama yang sama dengan yang sudah ada, jadi kami harus menyimpan yang "benar" di suatu tempat (mungkin anotasi tentang penerapan?) saat itulah kita menulis ulang database.yml? UGH.

Solusi lain adalah dengan menggunakan semacam proxy yang dapat mengarahkan lalu lintas secara dinamis ke satu layanan atau lainnya, seperti penyeimbang beban tetapi di atas layanan.

Meskipun kuby dapat melakukan beberapa hal rumit untuk mendapatkan lisensi secara otomatis, itu tidak terasa sangat bermoral (atau bahkan legal?)

Tamal adalah orang yang baik dan saya tidak berpikir dia akan keberatan sama sekali, selama Anda mengekspos detail tentang apa yang terjadi pada pengguna sehingga mereka tidak terkejut ketika lisensi sementara berakhir pada akhir bulan. (? apa yang terjadi ketika lisensi kedaluwarsa, saya bertanya-tanya sekarang? Jika itu berarti pencadangan dihentikan, itu bisa buruk; jika itu berarti hal-hal lain mulai gagal, juga bisa buruk ... jika itu berarti Anda tidak dapat membuat database baru untuk sekarang, sampai lisensi diperbarui, ini mungkin tidak terlalu buruk.)

Ada pilihan untuk database eksternal, jadi pengguna memiliki pilihan untuk melanjutkan dengan KubeDB atau mengambil database ke tangan mereka sendiri dengan cara lain, yang sejujurnya bukan masalah yang sulit hari ini kecuali jika Anda tidak menggunakan penyedia cloud yang memiliki dukungan untuk jenis basis data yang Anda butuhkan.

Terima kasih atas panduan tentang apa yang diperlukan untuk meningkatkan! Saya memiliki lisensi untuk KubeDB saya, yang dengan murah hati diberikan kepada Team Hephy untuk klaster produksi kami, dan saya memiliki database lama yang membutuhkan peningkatan, yang tidak pernah dimulai atau dihosting dari KubeDB; Saya mendapat lisensi untuk belajar menggunakan cadangan basis data, saya memiliki PostgresQL dan MariaDB, tl;dr Saya juga memiliki pekerjaan yang cocok untuk saya di area ini.

Saya baru saja belajar cara mengoperasikan driver CSI penyimpanan yang tepat dengan cluster lab rumah saya, dan saya berharap ini akan membuat perbedaan besar dalam cara saya menangani database dan meningkatkan properti pemulihan bencana dari cluster "produksi" saya. 🎉.

Kuby juga dapat, dalam jangka panjang, menjadi vektor penjualan yang hebat untuk KubeDB. Saya tidak tahu bagaimana perasaan Anda tentang itu!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat