
Kami sudah
menulis tentang "asisten konsol" untuk Kubernetes setahun yang lalu, dan bahkan lebih awal
melakukan ikhtisar utilitas bermanfaat lainnya. Namun, dengan pengembangan K8 dan komunitasnya, ekosistem terkait juga mengalami perubahan. Karenanya, kami kembali memiliki sesuatu untuk diberitahukan kepada penggemar konsol. Ayo pergi!
kubebox
- GitHub (400+ bintang)
- Bahasa: JavaScript (Node.js)
- Lisensi: MIT
Proyek ini adalah alasan untuk menulis tinjauan. Di satu sisi, ia adalah perwakilan cerdas dari kategori perangkat lunak "geeks do for geeks," tetapi di sisi lain, ia telah berkembang ke titik di mana ia tidak hanya menyenangkan mata, tetapi juga membawa manfaat praktis ...
Jadi, tujuan kubebox adalah untuk sepenuhnya bekerja dengan Kubernetes sebagai bagian dari antarmuka konsol yang nyaman yang disajikan dalam gaya pseudo-grafis:

Pekerjaan berarti fitur-fitur seperti navigasi melalui pod melalui ruang nama, melihat log, dan bahkan grafik konsumsi sumber daya utama (CPU, memori, jaringan), eksekusi perintah secara jarak jauh dalam wadah. Pengaturan untuk menghubungkan ke cluster dapat diambil dari variabel lingkungan
KUBECONFIG
atau konfigurasi dalam
$HOME/.kube
.
Rencana lebih lanjut pengembang termasuk dukungan untuk konfigurasi penyuntingan dan melakukan operasi CRUD, serta
desain ulang yang signifikan
dari antarmuka untuk mendukung tipe primitif baru (Layanan, Penyebaran, dll.) Dan navigasi yang nyaman dengan mereka dengan output informasi tambahan (khususnya,
kubectl describe pod
).
Fitur penting adalah ketersediaan
versi online (untuk terhubung ke server API Kubernetes, Anda akan memerlukan
cors-allowed-origins
). Selain itu, kubebox dapat diluncurkan sebagai file yang dapat dieksekusi terpisah, sebagai klien
di-cluster (melalui kubectl), serta dari layanan yang digunakan dalam Kubernetes atau OpenShift cluster (
Xterm.js digunakan untuk meniru terminal).
Selama hampir 2 tahun sekarang, seorang karyawan Red Hat dari Perancis telah mengembangkan kubebox (tepatnya, bahkan kurang dari 10% dari komitmen dilakukan oleh rekannya). Proyek ini menerima publikasi yang cukup luas hanya bulan lalu (di
Reddit dan sejumlah sumber daya lainnya), sehingga dapat diharapkan bahwa ini akan memberikan dorongan baru untuk pengembangannya.
kubus-shell dan kube-prompt
kubus-shell
- GitHub (950+ bintang)
- Bahasa: Python
- Lisensi: Apache 2.0
(Perhatian, ini ~ 2 Mb GIF!)kubus-cepat
- GitHub (700+ bintang)
- Bahasa: Pergi
- Lisensi: MIT

Kami sudah
menulis tentang proyek-proyek ini setahun yang lalu, dan pada saat itu mereka adalah favorit tanpa syarat di antara shell konsol penuh untuk bekerja dengan Kubernetes. Keduanya diposisikan sebagai antarmuka yang ditingkatkan (lebih mudah digunakan) ke kubectl. Di kube-shell, mereka menggunakan library
prompt-toolkit untuk Python, dan untuk kube-prompt mereka mengambil dan mengembangkan pustaka yang sama di Go (
go-prompt ).
Jika Anda membandingkannya dengan kubebox, maka antarmuka tidak didasarkan pada pseudografi, tetapi pada konsol biasa untuk memasukkan perintah
(lihat screenshot di atas) , yang, bagaimanapun, disertai dengan "efek khusus" yang sangat menarik: tooltips menggunakan perintah, penambahan otomatis yang nyaman dan dll.
Terlepas dari beragam fitur yang didukung (termasuk sistem tip yang dikembangkan dan penyelesaian otomatis yang telah disebutkan sebelumnya, pencarian riwayat perintah dan mode edit mirip vi),
riwayat komit dalam shell-kubus menunjukkan perlambatan yang jelas dalam proyek. Hanya tujuh komitmen yang dicatat tahun ini, dua di antaranya adalah modifikasi
README
. Meskipun ada beberapa yang bermanfaat, misalnya, dukungan yang
lama ditunggu-tunggu untuk variabel
KUBECONFIG
. Dengan satu atau lain cara, terus kurangnya reaksi pengembang terhadap pertanyaan yang relevan dengan pengguna (lihat
masalah ) tidak menginspirasi prospek yang tepat.
Situasi dengan pengembangan kube-prompt terlihat sedikit lebih baik. Meskipun proyek ini mencetak lebih sedikit bintang di GitHub (jika setahun yang lalu itu sedikit di depan pesaing Python, sekarang terlihat jelas di belakang), komitmen muncul lebih atau kurang secara teratur, dan rilis terbaru (
1.0.5 ) bertanggal 18 Oktober. Namun, tidak ada banyak perubahan signifikan selama setahun terakhir - kami mencatat dukungan untuk Kubernetes versi 1.11 dan kemungkinan penyelesaian otomatis untuk namespace. Hal utama adalah bahwa penulis sendiri
mengakui ketidakmungkinan mencurahkan waktu yang cukup untuk pengembangan kubus-cepat dan sedang mencari pembantu.
Merangkum hasil dari kedua proyek ini, kita dapat mengatakan bahwa kubus-shell mempertahankan kepemimpinannya dalam hal kemampuan yang didukung dan terus maju dalam popularitas, tetapi dengan prospek untuk kedua shell, semuanya tidak jelas. Namun, jika Anda merasa nyaman dengan cara mereka bekerja sekarang, tidak ada alasan untuk tidak membawa mereka ke dalam layanan alternatif lain dalam desain yang serupa tidak muncul.
Klik
- GitHub (750+ bintang)
- Bahasa: Karat
- Lisensi: Apache 2.0
Klik adalah proyek yang agak muda: dalam bentuk beta itu
disajikan pada akhir Maret - dan sangat menarik dengan caranya sendiri. Konsepnya adalah menggunakan kubectl dalam
loop REPL , yang membuat hidup lebih mudah dengan mempertahankan lingkungan yang konstan. Yang terakhir adalah bahwa Klik "ingat" konteks saat ini, namespace, di bawah, dll, mendorong pengguna untuk mengeksekusi perintah yang diinginkan untuk sumber daya yang diberikan tanpa harus menentukan kembali seluruh "jalur" ini.

Ide proyek tersebut berasal dari perusahaan Databricks, di mana mereka secara aktif menggunakan Kubernet dan bosan mengamati skenario yang sama bekerja dengan kubectl, yang membutuhkan pengenalan data sebelumnya secara konstan. Pada saat yang sama, utilitas kubectl itu sendiri - seperti konsol pada umumnya - sangat populer di kalangan insinyur. Jadi add-in ini muncul, tidak mengklaim untuk mengganti kubectl, tetapi hanya membantu bekerja dengannya. Contoh use case untuk Klik adalah:
pods //
2 //
describe //
events //
logs -c foo > /tmp/podfoo.log //
delete // ( )
Jika Anda tertarik, lihat juga
screencast kecil yang menunjukkan karya Click dengan komentar teks.
Bekerja dengan log
Sebagai bonus - bukan kerang, tetapi alat konsol untuk bekerja dengan log di Kubernetes. Setahun yang lalu, kami menyebutkan hanya
k8stail seperti itu, tetapi masa lalu telah menunjukkan bahwa masalah itu relevan, dan ada solusi lain yang perlu diperhatikan untuk menyelesaikannya.
Stern
- GitHub (~ 1300 bintang)
- Bahasa: Pergi
- Lisensi: Apache 2.0
Stern adalah favorit ekor untuk kategori Kubernetes. Untuk kejelasan, saat menampilkan log, kode warna yang berbeda digunakan:

Fitur penting lainnya adalah penggunaan ekspresi reguler untuk pemfilteran perapian yang nyaman tanpa perlu mengetahui ID tertentu (misalnya, pilih semuanya dengan nama
web-\w+
). Demikian pula (mis., Regexpams), Anda dapat memfilter wadah tertentu untuk pod yang diminta. Di antara fitur-fitur lain dari buritan:
- dukungan untuk templat Go kustom untuk log keluaran (ada beberapa yang sudah ditentukan sebelumnya secara default);
- dukungan untuk pemilih label;
- pembatasan output log ke nilai waktu yang ditentukan -
--since
dan / atau jumlah baris yang ditentukan; - dukungan untuk pelengkapan otomatis untuk bash dan zsh, serta substitusi nilai dinamis untuk ruang nama dan konteks.
Kubetail
- GitHub (~ 950 bintang)
- Bahasa: Shell
- Lisensi: Apache 2.0
Solusi serupa, ditulis dalam Bash reguler dan sedikit lebih aktif dikembangkan pada tahun lalu. Seperti halnya buritan, ini mendukung penyorotan nama-nama perapian (atau seluruh baris yang dapat disesuaikan):

Ini juga memungkinkan Anda untuk memfilter pod dan kontainer dengan nama lengkap dan ekspresi reguler, serta menggunakan pemilih, membatasi output ke waktu dan jumlah baris, dan mendukung pelengkapan otomatis untuk Bash, zsh dan fish. Di antara fitur-fitur lainnya:
- menonaktifkan mode -
--follow
untuk memperbarui data dari log secara real time (seperti pada tail -f
); --dry-run
untuk menampilkan daftar pod dan wadah yang sesuai tanpa melakukan tindakan lain;- dukungan pemilih jq untuk parsing output dalam JSON.
Kail
- GitHub (~ 500 bintang)
- Bahasa: Pergi
- Lisensi: MIT
Implementasi lain yang mengalami paling sedikit aktivitas dalam basis kode selama setahun terakhir. Namun, ia memiliki fitur fungsional menarik yang berbeda dari pesaingnya, yaitu:
- pembatasan atas permintaan perapian dengan nama Layanan mereka, ReplicationController, ReplicaSet, Deployment, Node, dan / atau Ingress (mis. perapian yang termasuk dalam layanan yang dipimpin oleh Ingress tertentu) ;
- kemampuan untuk tidak hanya memilih oleh penyeleksi, tetapi juga mengecualikan mereka;
- penentuan tingkat logging (
--log-level
).

Tetapi ada juga kelemahannya: kail tidak menyorot polong dengan warna, tidak mendukung ekspresi reguler untuk filter.
PS
Terima kasih atas minat Anda dan, tentu saja, kami akan senang mendengar tentang temuan Anda di komentar!
Baca juga di blog kami: