Headlamp adalah GUI baru untuk bekerja dengan Kubernetes

Approx. terjemahan. : Sebulan yang lalu, Kinvolk merilis antarmuka untuk mengelola cluster Kubernetes. Proyek Open Source baru, setelah memperluas rangkaian solusi serupa yang sudah banyak, menggabungkan pendekatan klasik untuk desain antarmuka, kemampuan untuk berjalan secara lokal dan di dalam cluster, serta ekstensibilitas tinggi, yang, bersama dengan serangkaian fungsi yang cukup kaya, membuatnya menarik setidaknya untuk yang utama. kencan. Dalam pengumuman ini, penulisnya menceritakan mengapa Headlamp menjadi seperti itu.







Saat membaca materi di Kubernetes, Anda mungkin telah berulang kali menemukan contoh berbagai perintah kubectl dan konfigurasi YAML yang rumit. Bagi orang-orang yang mahir dalam K8, pendekatan ini tidak diragukan lagi tidak menimbulkan penolakan. Tetapi di era antarmuka web di mana-mana, itu tidak bisa disebut ramah untuk pengguna biasa. Ini mempersulit proses pembelajaran bagi pemula dan bertindak sebagai penghalang bagi mereka yang tidak terlalu mengenal Kubernetes.



Tentu saja, terdapat berbagai GUI untuk K8, termasuk Kubernetes Dashboard , yang merupakan bagian dari Kubernetes upstream itu sendiri. (Terjemahan catatan: Kami telah membicarakan banyak solusi yang ada dalam perbandingan ini .) Namun, menjelajahi semua variasi opsi, kami tidak dapat menemukan solusi yang sepenuhnya cocok untuk kami. Saya menginginkan antarmuka:



  • adalah 100% Open Source;
  • didukung secara aktif oleh masyarakat;
  • bersifat universal dalam arti tidak terikat pada distribusi Kubernetes vendor tertentu;
  • bersifat modular dan dapat diperluas;
  • berpenampilan rapi dan modern;
  • diimplementasikan pada stack yang familiar bagi developer kami (Go, JavaScript / TypeScript, React);
  • bersifat interaktif (yaitu, tidak hanya data yang dikumpulkan, tetapi juga memungkinkan tindakan tertentu dengan cluster);
  • mendukung mode multi-cluster.


Terlepas dari pilihan yang agak kaya, tidak ada solusi yang kami uji memenuhi semua kriteria yang tercantum di atas (atau dapat berfungsi sebagai dasar yang baik untuk membuat solusi baru). Oleh karena itu, menurut tradisi yang dihormati waktu, kami memutuskan untuk membuatnya sendiri ...



Memperkenalkan Headlamp



Hari ini, dengan bangga saya mengumumkan ketersediaan luas dari UI baru untuk Kubernetes yang disebut Headlamp .



Headlamp adalah antarmuka pengguna Kubernetes yang serbaguna dan dapat diperluas yang memenuhi kriteria di atas. Tentu saja, menjadi gagasan Kinvolk, ini 100% Open Source. Kami berharap banyak anggota komunitas Kubernetes tidak hanya menghargai Headlamp, tetapi juga berkontribusi pada proyek ini.



Mari kita lihat sekilas karakteristik utamanya.



UI yang Dapat Diperluas



Kami berusaha keras untuk memastikan bahwa Headlamp sesuai untuk kasus penggunaan sebanyak mungkin. Target audiens proyek ini tidak hanya pendatang baru di Kubernetes, tetapi juga administrator berpengalaman dan vendor K8 dengan kebutuhan yang sangat berbeda. Seringkali (terutama untuk proyek UI) berbagai kasus penggunaan seperti itu diimplementasikan dengan membuat sejumlah besar garpu, yang masing-masing dikelola oleh tim hilirnya sendiri. Tetapi menjaga agar garpu tetap mutakhir lebih sulit, semakin besar perubahan di dalamnya.



Sistem plugin menyelesaikan masalah ini. Itulah mengapa Headlamp mendukung plugin UI di luar pohon. Mereka adalah file JavaScript yang dimuat oleh backend Headlamp dan diteruskan ke klien, yang memuatnya secara dinamis.



Pendekatan ini membuka peluang besar untuk inovasi, berkontribusi pada munculnya banyak fitur baru. Misalnya, mudah untuk membuat tombol di blok detail pod yang akan mengarahkan pengguna ke layanan yang menunjukkan biaya finansial pod tersebut.



Mekanisme plugin Headlamp membuka peluang besar bagi komunitas. Dan kami siap bekerja sama dengan semua orang yang ingin berpartisipasi dalam pengembangan plugin baru untuk Headlamp, dan untuk mengembangkan mekanisme itu sendiri, mengadaptasinya untuk skenario penggunaan baru.



Traceloop



Untuk mendemonstrasikan kekuatan penuh dari mekanisme plugin (dan alat itu sendiri), kami mengembangkan plugin Headlamp untuk gadget traceloop , yang merupakan bagian dari proyek Gadget Inspektor (seperangkat alat untuk memeriksa dan men-debug aplikasi di Kubernetes - kira-kira. Terjemahan) .



Setelah menginstal Gadget Inspektor dan mengaktifkan gadget traceloop, ia mulai menulis semua panggilan sistem dari pod ke buffer melingkar. Buffer ini dapat dilihat secara real time saat pod sedang berjalan. Dengan kata lain, traceloop memberi Anda gambaran tentang apa yang sedang dilakukan pod saat ini. Selain itu, data di buffer disimpan untuk pod yang telah keluar. Dengan cara ini Anda dapat menentukan penyebab kegagalan setelah itu terjadi - semacam "kotak hitam" untuk aplikasi Kubernetes.







UI selektif



Masalah dengan banyak antarmuka pengguna CRUD adalah mereka tidak tahu apa-apa tentang organisasi internal kontrol akses. Misalnya, adanya tombol untuk edit / hapus membingungkan pengguna jika mereka sebenarnya tidak memiliki izin untuk mengubah sumber daya. Headlamp memeriksa pengaturan RBAC untuk Kubernetes dan hanya menampilkan kontrol untuk tindakan yang tersedia bagi pengguna. Misalnya, jika pengguna tidak memiliki hak untuk mengedit sumber daya, tombol "edit" tidak akan ditampilkan.



Semua ini memiliki efek yang sangat menguntungkan pada pengalaman pengguna: bagaimanapun, operator segera melihat tindakan apa yang tersedia baginya, dengan mempertimbangkan hak saat ini. Ini bagus untuk situasi di mana izin terbatas waktu diberikan (seperti izin sementara untuk menghapus sumber daya).





Tombol yang tersedia untuk tindakan dengan pod saat pengguna memiliki hak edit / hapus





Tombol yang tersedia jika pengguna tidak memiliki hak edit / hapus



Desain / Antarmuka Pengguna



Kami bertujuan untuk membuat desain Headlamp sesingkat dan semodern mungkin, dengan tetap menggunakan UI Kubernetes atau gaya dasbor "tradisional". Misalnya, kami yakin bahwa tampilan tabular yang sudah dikenal sangat bagus untuk pekerjaan, dan kami berharap jenis visualisasi lainnya (misalnya, presentasi kluster dalam bentuk grafik) dapat diimplementasikan menggunakan plugin.



Frontend diimplementasikan di React dengan pustaka Material UI (modern, rapi dan didukung oleh komunitas pengguna yang besar). Plus, itu termasuk dalam tumpukan teknologi proyek kami yang lain - Nebraska (manajer pembaruan untuk Flatcar Container Linux - kira-kira. Terjemahan), memungkinkan kami untuk berbagi pengalaman dan sumber daya serta memastikan UI yang konsisten di semua produk.



Secara lokal atau di cluster



Sebagian besar UI Kubernetes terbagi dalam dua kelompok: remote (backend sering berada dalam cluster) seperti Kubernetes Dashboard atau lokal (aplikasi diinstal di komputer) seperti Octant dari VMware.



Masing-masing pendekatan ini memiliki kelebihan dan kekurangan. Misalnya, dalam kasus aplikasi jarak jauh, sangat mudah untuk membagikan URL dengan pengguna lain dan menerapkan login mereka melalui OIDC. Ini tersedia "di mana saja" dan mudah untuk terus diperbarui. Sebaliknya, dalam kasus versi desktop, tidak perlu memikirkan penempatan UI. Pendekatan ini memberikan isolasi yang lebih baik, tetapi menjaga agar aplikasi tetap mutakhir adalah tanggung jawab pengguna.



Dengan Headlamp, Anda tidak lagi harus memilih di antara dua pendekatan ini: keduanya didukung. Headlamp dapat dengan mudah dikelompokkan menggunakan file YAML kami (dan menyesuaikannya untuk Anda), atau diinstal secara lokal di mesin Linux, macOS atau Windows.



Mode multi-cluster



Sebagian besar penerapan Kubernetes terdiri dari beberapa cluster (setidaknya untuk memisahkan lingkungan dev dan prod). Headlamp menyediakan akses ke semua cluster ini: metode spesifiknya bergantung pada apakah Anda menjalankannya secara lokal atau jarak jauh.



Saat berjalan secara lokal, Headlamp akan membaca kubeconfig dan menampilkan konteks yang tersedia di sana, memungkinkan pengguna untuk mengubahnya sesuai kebutuhan, cukup dengan mengatur variabel lingkungan lokal ke cluster yang sesuai.



Mode multi-cluster sangat sederhana: proxy dibuat untuk setiap cluster yang dikonfigurasi, dan permintaan dari UI (dengan panggilan ke Kubernetes API) dialihkan ke alamat cluster yang diinginkan. Proyek K8dash harus disebutkan di sini, modul untuk mengelola permintaan / API yang kami gunakan saat mengembangkan Headlamp.



Pendekatan ini juga dapat digabungkan dengan menjalankan dalam cluster, namun, untuk melakukannya, cluster tempat aplikasi berjalan akan memerlukan akses API ke cluster lain yang ditentukan.







Koneksi Lokomotive Kubernetes



Seperti yang mungkin Anda ketahui, kami juga memiliki distribusi Kubernetes - Lokomotif . Kami menggunakan Headlamp di Lokomotive untuk tujuan yang dimaksudkan, tetapi kami ingin menekankan bahwa ini adalah proyek independen dan independen. Kami tidak akan mengikat Headlamp ke penyedia layanan K8 mana pun, dan kami merancangnya untuk berfungsi pada kluster Kubernetes tipikal.



Coba Headlamp di cluster Anda!



Sangat mudah untuk melakukan ini: menyebarkan di cluster Anda dan pergi ke alamat yang sesuai di browser, atau download dan instal versi desktop untuk Windows, macOS atau Linux. Detail ada di dokumentasi .



Headlamp adalah alat open source yang dirilis di bawah lisensi Apache 2.0. Seperti disebutkan di atas, kami membuatnya independen dari penyedia layanan Kubernetes dan serbaguna dalam penggunaan (mencakup banyak kasus penggunaan). Hari ini kami mengundang semua orang untuk mengambil bagian dalam pengembangan proyek! Untuk melakukan ini, harap baca pedoman yang relevan .



Kami harap Anda menikmati Headlamp!







PS dari penerjemah



Baca juga di blog kami:






All Articles