Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)

Catatan. terjemah: Pengarang bahan asal ialah Henning Jacobs dari Zalando. Dia mencipta antara muka web baharu untuk bekerja dengan Kubernetes, yang diletakkan sebagai "kubectl untuk web." Mengapa projek Sumber Terbuka baharu muncul dan kriteria apakah yang tidak dipenuhi oleh penyelesaian sedia ada - baca artikelnya.

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)

Dalam siaran ini, saya menyemak pelbagai antara muka web Kubernetes sumber terbuka, membentangkan keperluan saya untuk UI universal dan menerangkan sebab saya membangunkan Kubernetes WebView β€” antara muka yang direka bentuk untuk memudahkan anda menyokong dan menyelesaikan masalah berbilang kelompok sekaligus.

Kes guna

Di Zalando, kami menyediakan sejumlah besar pengguna Kubernetes (900+) dan kelompok (100+). Terdapat beberapa kes penggunaan biasa yang akan mendapat manfaat daripada alat web khusus:

  1. komunikasi dengan rakan sekerja untuk mendapatkan sokongan;
  2. bertindak balas terhadap insiden dan menyiasat puncanya.

Sokongan

Dalam pengalaman saya, komunikasi sokongan selalunya kelihatan seperti ini:

β€” Bantuan, perkhidmatan kami XYZ tidak tersedia!
β€” Apa yang anda lihat apabila anda membuat persembahan kubectl describe ingress ...?

Atau sesuatu yang serupa untuk CRD:

β€” Saya mempunyai sedikit masalah dengan perkhidmatan pengenalan...
β€” Apakah yang dihasilkan oleh perintah itu? kubectl describe platformcredentialsset ...?

Komunikasi sedemikian biasanya datang untuk memasukkan pelbagai variasi arahan kubectl untuk mengenal pasti masalah. Akibatnya, kedua-dua pihak dalam perbualan terpaksa sentiasa bertukar antara terminal dan sembang web, serta mereka melihat situasi yang berbeza.

Oleh itu, saya ingin bahagian hadapan web Kubernetes membenarkan perkara berikut:

  • pengguna boleh tukar pautan dan perhatikan perkara yang sama;
  • akan membantu mengelakkan kesilapan manusia sebagai sokongan: contohnya, log masuk ke kelompok yang salah pada baris arahan, kesilapan menaip dalam arahan CLI, dsb.;
  • akan membenarkan menjana pandangan anda sendiri untuk menghantar kepada rakan sekerja, iaitu, menambah lajur teg, memaparkan banyak jenis sumber pada satu halaman;
  • Sebaik-baiknya, alat web ini sepatutnya membenarkan anda menetapkan pautan "dalam" ke bahagian tertentu YAML (contohnya, menunjukkan parameter yang salah yang menyebabkan kegagalan).

Tindak balas dan analisis insiden

Tindakan bertindak balas terhadap insiden infrastruktur memerlukan kesedaran situasi, keupayaan untuk menilai kesan dan mencari corak dalam kelompok. Beberapa contoh kehidupan sebenar:

  • Perkhidmatan pengeluaran kritikal menghadapi masalah dan anda perlu cari semua sumber Kubernetes mengikut nama dalam semua kelompokuntuk menyelesaikan masalah;
  • nod mula jatuh apabila menskala dan anda perlukan cari semua pod dengan status "Belum selesai" dalam semua kelompokuntuk menilai skop masalah;
  • pengguna individu melaporkan isu dengan DaemonSet yang digunakan di semua kluster dan perlu memikirkannya Adakah masalah itu total?.

Penyelesaian standard saya dalam kes sedemikian adalah seperti for i in $clusters; do kubectl ...; done. Jelas sekali, adalah mungkin untuk membangunkan alat yang menyediakan keupayaan yang serupa.

Antara muka web Kubernetes sedia ada

Dunia sumber terbuka antara muka web kepada Kubernetes tidak begitu besar*, jadi saya cuba mengumpulkan lebih banyak maklumat menggunakan Twitter:

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)

*Penjelasan saya untuk bilangan antara muka web yang terhad untuk Kubernetes: perkhidmatan awan dan vendor Kubernetes biasanya menawarkan bahagian hadapan mereka sendiri, jadi pasaran untuk UI Kubernetes percuma yang "baik" adalah agak kecil.

Melalui tweet yang saya pelajari K8Dash, Kubernator ΠΈ Octan. Mari kita lihat mereka dan penyelesaian Sumber Terbuka sedia ada yang lain, mari kita cuba memahami apa itu.

K8Dash

"K8Dash ialah cara paling mudah untuk mengurus gugusan Kubernetes."

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)

K8Dash Nampak bagus dan terasa pantas, tetapi mempunyai beberapa kelemahan untuk kes penggunaan yang disenaraikan di atas:

  • Berfungsi hanya dalam sempadan satu kluster.
  • Pengisihan dan penapisan boleh dilakukan, tetapi tidak mempunyai pautan kekal.
  • Tiada sokongan untuk Definisi Sumber Tersuai (CRD).

Kubernator

β€œKubernator ialah UI alternatif untuk Kubernetes. Tidak seperti Papan Pemuka Kubernetes peringkat tinggi, ia menyediakan kawalan tahap rendah dan keterlihatan yang sangat baik ke dalam semua objek dalam kelompok dengan keupayaan untuk mencipta yang baharu, mengeditnya dan menyelesaikan konflik. Sebagai aplikasi sebelah pelanggan sepenuhnya (seperti kubectl), ia tidak memerlukan sebarang bahagian belakang selain daripada pelayan API Kubernetes itu sendiri, dan juga menghormati peraturan akses kelompok.”

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)

Ini adalah penerangan yang cukup tepat Kubernator. Malangnya, ia tidak mempunyai beberapa ciri:

  • Berkhidmat hanya untuk satu kluster.
  • Tiada mod paparan senarai (iaitu, anda tidak boleh memaparkan semua pod dengan status "Belum selesai").

Papan Pemuka Kubernetes

β€œPapan Pemuka Kubernetes ialah antara muka web universal untuk kelompok Kubernetes. Ia membolehkan pengguna mengurus dan menyelesaikan masalah aplikasi yang berjalan dalam kluster, serta mengurus kluster itu sendiri."

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)

Malangnya, Papan Pemuka Kubernetes tidak benar-benar membantu dengan aktiviti sokongan dan tindak balas insiden saya kerana ia:

  • tiada pautan kekal, contohnya apabila saya menapis sumber atau menukar susunan isihan;
  • tiada cara mudah untuk menapis mengikut status - contohnya, lihat semua pod dengan status "Belum selesai";
  • hanya satu kluster disokong;
  • CRD tidak disokong (ciri ini sedang dibangunkan);
  • tiada lajur tersuai (seperti lajur yang dilabel mengikut jenis kubectl -L).

Paparan Operasi Kubernetes (kube-ops-view)

"Pemerhati Papan Pemuka Sistem untuk Ruang Kluster K8s."

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)

Π£ Pandangan Operasi Kubernetes Pendekatan yang sama sekali berbeza: alat ini hanya menunjukkan nod kluster dan pod menggunakan WebGL, tanpa sebarang butiran objek teks. Ia bagus untuk ikhtisar ringkas kesihatan kluster (adakah pod jatuh?)*, tetapi ia tidak sesuai untuk kes penggunaan sokongan dan tindak balas insiden yang diterangkan di atas.

* Catatan. terjemah: Dalam pengertian ini, anda mungkin juga berminat dengan pemalam kami grafana-statusmap, yang kami bincangkan dengan lebih terperinci dalam artikel ini.

Laporan Sumber Kubernetes (kube-resource-report)

"Kumpulkan permintaan sumber kluster pod dan Kubernetes, bandingkannya dengan penggunaan sumber dan jana HTML statik."

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)

Laporan Sumber Kubernetes menjana laporan HTML statik tentang penggunaan sumber dan pengagihan kos merentas pasukan/aplikasi dalam kelompok. Laporan ini agak berguna untuk sokongan dan tindak balas insiden kerana ia membolehkan anda mencari kluster tempat aplikasi itu digunakan dengan cepat.

Catatan. terjemah: Perkhidmatan dan alat mungkin juga berguna dalam melihat maklumat tentang peruntukan sumber dan kosnya di kalangan penyedia awan Kubecost, yang kami semak diterbitkan baru-baru ini.

Octan

"Platform web yang boleh dikembangkan untuk pembangun yang direka bentuk untuk memberikan pemahaman yang lebih mendalam tentang kerumitan kelompok Kubernetes."

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)

Octan, dicipta oleh VMware, ialah produk baharu yang saya pelajari baru-baru ini. Dengan bantuannya, adalah mudah untuk meneroka kelompok pada mesin tempatan (malah terdapat visualisasi), tetapi ia menangani isu sokongan dan tindak balas insiden hanya pada tahap yang terhad. Kelemahan Octant:

  • Tiada carian kelompok.
  • Berfungsi hanya pada mesin tempatan (tidak digunakan pada kluster).
  • Tidak boleh mengisih/menapis objek (hanya pemilih label disokong).
  • Anda tidak boleh menentukan lajur tersuai.
  • Anda tidak boleh menyenaraikan objek mengikut ruang nama.

Saya juga menghadapi masalah dengan kestabilan Octant dengan kelompok Zalando: pada beberapa CRD dia sedang jatuh.

Memperkenalkan Kubernetes Web View

"kubectl untuk web".

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)

Selepas menganalisis pilihan antara muka yang tersedia untuk Kubernetes, saya memutuskan untuk mencipta yang baharu: Kubernetes WebView. Lagipun, sebenarnya, saya hanya perlukan semua kuasa kubectl di web, iaitu:

  • ketersediaan semua operasi (baca sahaja) yang pengguna lebih suka menggunakan kubectl;
  • semua URL mestilah kekal dan mewakili halaman dalam bentuk asalnya supaya rakan sekerja boleh berkongsinya dan menggunakannya dalam alatan lain;
  • sokongan untuk semua objek Kubernetes, yang akan membolehkan anda menyelesaikan sebarang jenis masalah;
  • senarai sumber harus boleh dimuat turun untuk kerja selanjutnya (dalam hamparan, alat CLI seperti grep) dan penyimpanan (contohnya, untuk bedah siasat);
  • sokongan untuk memilih sumber mengikut label (serupa dengan kubectl get .. -l);
  • keupayaan untuk mencipta senarai gabungan pelbagai jenis sumber (serupa dengan kubectl get all) untuk mendapatkan gambaran operasi yang sama dalam kalangan rakan sekerja (contohnya, semasa tindak balas insiden);
  • keupayaan untuk menambah pautan dalam pintar tersuai pada alatan lain seperti papan pemuka, pembalak, pendaftaran aplikasi, dsb. untuk memudahkan penyelesaian masalah/menyelesaikan ralat dan bertindak balas terhadap insiden;
  • Bahagian hadapan hendaklah semudah mungkin (HTML tulen) untuk mengelakkan masalah rawak, seperti JavaScript beku;
  • sokongan untuk berbilang kelompok untuk memudahkan interaksi semasa perundingan jauh (contohnya, untuk mengingati hanya satu URL);
  • Jika boleh, analisis situasi harus dipermudahkan (contohnya, dengan pautan untuk memuat turun sumber untuk semua kelompok/ruang nama);
  • peluang tambahan untuk mencipta pautan fleksibel dan menyerlahkan maklumat teks, sebagai contoh, supaya anda boleh menunjukkan rakan sekerja ke bahagian tertentu dalam perihalan sumber (baris dalam YAML);
  • keupayaan untuk menyesuaikan mengikut keperluan pelanggan tertentu, contohnya, membolehkan anda membuat templat paparan khas untuk CRD, paparan jadual anda sendiri dan menukar gaya CSS;
  • alat untuk penerokaan lanjut pada baris arahan (contohnya, menunjukkan arahan penuh kubectl, sedia untuk disalin);

Di luar tugas yang diselesaikan dalam Kubernetes Web View (bukan matlamat) kekal:

  • pengabstrakan objek Kubernetes;
  • pengurusan aplikasi (contohnya, pengurusan penempatan, carta Helm, dsb.);
  • operasi tulis (mesti dilakukan melalui alat CI/CD dan/atau GitOps yang selamat);
  • antara muka yang cantik (JavaScript, tema, dll.);
  • visualisasi (lihat kube-ops-view);
  • analisis kos (lihat laporan-sumber-kube).

Bagaimanakah Kubernetes Web View membantu dengan sokongan dan tindak balas insiden?

Sokongan

  • Semua pautan adalah kekal, yang memudahkan pertukaran maklumat dengan rakan sekerja.
  • Anda boleh mencipta idea anda, sebagai contoh, paparkan semua Deployment dan Pod dengan label khusus dalam dua kluster tertentu (beberapa nama kluster dan jenis sumber boleh ditentukan dalam pautan, dipisahkan dengan koma).
  • Boleh rujuk baris tertentu dalam fail YAML objek, menunjukkan potensi masalah dalam spesifikasi objek.

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)
Cari mengikut kelompok dalam Paparan Web Kubernetes

Respon Insiden

  • Carian global (carian global) membolehkan anda mencari objek dalam semua kelompok.
  • Paparan Senarai boleh memaparkan semua objek dengan keadaan/lajur tertentu dalam semua kelompok (contohnya, kita perlu mencari semua pod dengan status "Belum selesai").
  • Senarai objek boleh dimuat turun dalam format nilai dipisahkan tab (TSV) untuk analisis kemudian.
  • Pautan luaran yang boleh disesuaikan Membolehkan anda bertukar kepada papan pemuka yang berkaitan dan alatan lain.

Pengumuman Paparan Web Kubernetes (dan gambaran keseluruhan ringkas tentang UI web lain untuk Kubernetes)
Paparan Web Kubernetes: senarai pod dengan status "Belum selesai" dalam semua kelompok

Jika anda ingin mencuba Kubernetes Web View, saya syorkan anda menyemak dokumentasi atau tengok demo langsung.

Sudah tentu, antara muka mungkin lebih baik, tetapi buat masa ini Kubernetes Web View ialah alat untuk "pengguna lanjutan" yang tidak mengelak daripada memanipulasi laluan URL secara manual jika perlu. Jika anda mempunyai sebarang komen/tambahan/cadangan, sila hubungi dengan saya di Twitter!

Artikel ini ialah sejarah ringkas latar belakang yang membawa kepada penciptaan Paparan Web Kubernetes. Lebih banyak akan menyusul! (Catatan. terjemah: Mereka sepatutnya dijangka masuk blog penulis.)

PSdaripada penterjemah

Baca juga di blog kami:

Sumber: www.habr.com

Tambah komen