Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)

Catatan. terjemahan: Penulis materi asli adalah Henning Jacobs dari Zalando. Dia menciptakan antarmuka web baru untuk bekerja dengan Kubernetes, yang diposisikan sebagai “kubectl untuk web.” Mengapa proyek Open Source baru muncul dan kriteria apa yang tidak dipenuhi oleh solusi yang ada - baca artikelnya.

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)

Dalam postingan ini, saya mengulas berbagai antarmuka web Kubernetes open source, memaparkan persyaratan saya untuk UI universal, dan menjelaskan alasan saya mengembangkannya. Tampilan Web Kubernetes — antarmuka yang dirancang untuk memudahkan dukungan dan pemecahan masalah beberapa klaster sekaligus.

Kasus penggunaan

Di Zalando kami melayani sejumlah besar pengguna Kubernetes (900+) dan cluster (100+). Ada beberapa kasus penggunaan umum yang akan mendapat manfaat dari alat web khusus:

  1. komunikasi dengan rekan kerja untuk mendapatkan dukungan;
  2. menanggapi insiden dan menyelidiki penyebabnya.

Dukungan

Menurut pengalaman saya, komunikasi dukungan sering kali terlihat seperti ini:

— Tolong, layanan kami XYZ tidak tersedia!
— Apa yang kamu lihat saat tampil kubectl describe ingress ...?

Atau yang serupa untuk CRD:

— Saya punya masalah dengan layanan identifikasi...
— Apa yang dihasilkan oleh perintah tersebut? kubectl describe platformcredentialsset ...?

Komunikasi seperti itu biasanya berujung pada memasukkan berbagai variasi perintah kubectl untuk mengidentifikasi masalahnya. Akibatnya, kedua pihak dalam percakapan terpaksa terus-menerus beralih antara terminal dan obrolan web, ditambah lagi mereka mengamati situasi yang berbeda.

Oleh karena itu, saya ingin antarmuka web Kubernetes mengizinkan hal berikut:

  • pengguna bisa bertukar tautan dan amati hal yang sama;
  • akan membantu menghindari kesalahan manusia dalam dukungan: misalnya, masuk ke cluster yang salah pada baris perintah, kesalahan ketik pada perintah CLI, dll.;
  • akan memperbolehkan menghasilkan pandangan Anda sendiri untuk mengirim ke rekan kerja, yaitu menambahkan kolom tag, menampilkan banyak jenis sumber daya dalam satu halaman;
  • Idealnya, alat web ini memungkinkan Anda mengatur tautan "dalam" ke bagian tertentu YAML (misalnya, menunjukkan parameter yang salah yang menyebabkan kegagalan).

Respons dan analisis insiden

Menanggapi insiden infrastruktur memerlukan kesadaran situasional, kemampuan menilai dampak, dan mencari pola dalam kelompok. Beberapa contoh kehidupan nyata:

  • Layanan produksi penting mengalami masalah dan Anda memerlukannya temukan semua sumber daya Kubernetes berdasarkan nama di semua clusteruntuk memecahkan masalah;
  • node mulai turun saat penskalaan dan Anda membutuhkannya temukan semua pod dengan status “Pending” di semua clusteruntuk menilai ruang lingkup permasalahan;
  • pengguna individu melaporkan masalah dengan DaemonSet yang diterapkan di semua cluster dan perlu mencari tahu Apakah masalahnya total?.

Solusi standar saya dalam kasus seperti itu adalah seperti ini for i in $clusters; do kubectl ...; done. Jelasnya, adalah mungkin untuk mengembangkan alat yang memberikan kemampuan serupa.

Antarmuka web Kubernetes yang ada

Dunia antarmuka web open source untuk Kubernetes tidak terlalu besar*, jadi saya mencoba mengumpulkan lebih banyak informasi menggunakan Twitter:

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)

*Penjelasan saya tentang terbatasnya jumlah antarmuka web untuk Kubernetes: layanan cloud dan vendor Kubernetes biasanya menawarkan antarmuka mereka sendiri, sehingga pasar untuk UI Kubernetes gratis yang “bagus” relatif kecil.

Melalui tweet yang saya pelajari K8Dash, Kubernator и Oktan. Mari kita lihat solusi tersebut dan solusi Open Source lain yang ada, mari kita coba memahami apa itu.

K8Dash

“K8Dash adalah cara paling sederhana untuk mengelola cluster Kubernetes.”

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)

K8Dash Terlihat bagus dan terasa cepat, namun memiliki sejumlah kelemahan untuk kasus penggunaan yang tercantum di atas:

  • Bekerja hanya dalam batas-batas satu cluster.
  • Penyortiran dan pemfilteran dimungkinkan, tetapi tidak memiliki tautan permanen.
  • Tidak ada dukungan untuk Definisi Sumber Daya Kustom (CRD).

Kubernator

“Kubernator adalah UI alternatif untuk Kubernetes. Berbeda dengan Dasbor Kubernetes tingkat tinggi, Dasbor Kubernetes memberikan kontrol tingkat rendah dan visibilitas yang sangat baik ke semua objek di cluster dengan kemampuan untuk membuat objek baru, mengeditnya, dan menyelesaikan konflik. Karena sepenuhnya merupakan aplikasi sisi klien (seperti kubectl), aplikasi ini tidak memerlukan backend apa pun selain server API Kubernetes itu sendiri, dan juga menghormati aturan akses cluster.”

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)

Ini adalah deskripsi yang cukup akurat Kubernator. Sayangnya, ia kekurangan beberapa fitur:

  • Hanya melayani satu cluster.
  • Tidak ada mode tampilan daftar (yaitu, Anda tidak dapat menampilkan semua pod dengan status “Tertunda”).

Dasbor Kubernetes

“Kubernetes Dashboard adalah antarmuka web universal untuk cluster Kubernetes. Hal ini memungkinkan pengguna untuk mengelola dan memecahkan masalah aplikasi yang berjalan di sebuah cluster, serta mengelola cluster itu sendiri.”

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)

Sayangnya, Dasbor Kubernetes tidak terlalu membantu aktivitas dukungan dan respons insiden saya karena:

  • tidak ada tautan permanen, misalnya saat saya memfilter sumber daya atau mengubah urutan pengurutan;
  • tidak ada cara mudah untuk memfilter berdasarkan status - misalnya, lihat semua pod dengan status “Tertunda”;
  • hanya satu cluster yang didukung;
  • CRD tidak didukung (fitur ini sedang dikembangkan);
  • tidak ada kolom khusus (seperti kolom yang diberi label berdasarkan jenis kubectl -L).

Tampilan Operasional Kubernetes (kube-ops-view)

"Pengamat Dasbor Sistem untuk Ruang Cluster K8s."

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)

У Tampilan Operasional Kubernetes Pendekatan yang benar-benar berbeda: alat ini hanya menampilkan node dan pod cluster menggunakan WebGL, tanpa detail objek tekstual apa pun. Ini bagus untuk gambaran singkat mengenai kesehatan klaster (apakah pod mengalami penurunan?)*, namun tidak cocok untuk kasus penggunaan dukungan dan respons insiden yang dijelaskan di atas.

* Catatan. terjemahan: Dalam hal ini, Anda mungkin juga tertarik dengan plugin kami peta status grafana, yang kita bicarakan lebih detail di Artikel ini.

Laporan Sumber Daya Kubernetes (laporan-kube-resource)

“Kumpulkan permintaan sumber daya cluster pod dan Kubernetes, bandingkan dengan konsumsi sumber daya, dan buat HTML statis.”

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)

Laporan Sumber Daya Kubernetes menghasilkan laporan HTML statis tentang penggunaan sumber daya dan distribusi biaya di seluruh tim/aplikasi dalam cluster. Laporan ini berguna untuk dukungan dan respons insiden karena memungkinkan Anda menemukan cluster tempat aplikasi disebarkan dengan cepat.

Catatan. terjemahan: Layanan dan alat mungkin juga berguna dalam melihat informasi tentang alokasi sumber daya dan biayanya di antara penyedia cloud Kubecost, yang kami ulas baru-baru ini diterbitkan.

Oktan

"Platform web yang dapat diperluas untuk pengembang yang dirancang untuk memberikan pemahaman yang lebih baik tentang kompleksitas cluster Kubernetes."

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)

Oktan, dibuat oleh VMware, adalah produk baru yang saya pelajari baru-baru ini. Dengan bantuannya, akan lebih mudah untuk menjelajahi cluster pada mesin lokal (bahkan ada visualisasi), tetapi ini hanya mengatasi masalah dukungan dan respons insiden pada tingkat terbatas. Kekurangan Oktan:

  • Tidak ada pencarian cluster.
  • Hanya berfungsi pada mesin lokal (tidak disebarkan ke cluster).
  • Tidak dapat mengurutkan/memfilter objek (hanya pemilih label yang didukung).
  • Anda tidak dapat menentukan kolom khusus.
  • Anda tidak dapat membuat daftar objek berdasarkan namespace.

Saya juga mempunyai masalah dengan stabilitas Octant dengan cluster Zalando: pada beberapa CRD dia terjatuh.

Memperkenalkan Tampilan Web Kubernetes

"kubectl untuk web".

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)

Setelah menganalisis opsi antarmuka yang tersedia untuk Kubernetes, saya memutuskan untuk membuat yang baru: Tampilan Web Kubernetes. Sebenarnya, saya hanya membutuhkan semua kekuatan kubectl di web, yaitu:

  • ketersediaan semua operasi (read-only) yang pengguna lebih suka menggunakan kubectl;
  • semua URL harus bersifat permanen dan mewakili halaman dalam bentuk aslinya sehingga rekan kerja dapat membagikannya dan menggunakannya di alat lain;
  • dukungan untuk semua objek Kubernetes, yang memungkinkan Anda memecahkan semua jenis masalah;
  • daftar sumber daya harus dapat diunduh untuk pekerjaan lebih lanjut (dalam spreadsheet, alat CLI seperti grep) dan penyimpanan (misalnya, untuk postmortem);
  • dukungan untuk memilih sumber daya berdasarkan label (mirip dengan kubectl get .. -l);
  • kemampuan untuk membuat daftar gabungan berbagai jenis sumber daya (mirip dengan kubectl get all) untuk memperoleh gambaran operasional umum di antara rekan kerja (misalnya, saat merespons insiden);
  • kemampuan untuk menambahkan tautan dalam cerdas khusus ke alat lain seperti dasbor, logger, pendaftar aplikasi, dll. untuk memfasilitasi pemecahan masalah/penyelesaian kesalahan dan menanggapi insiden;
  • Frontend harus sesederhana mungkin (HTML murni) untuk menghindari masalah acak, seperti JavaScript yang dibekukan;
  • dukungan untuk beberapa cluster untuk menyederhanakan interaksi selama konsultasi jarak jauh (misalnya, untuk mengingat hanya satu URL);
  • Jika memungkinkan, analisis situasional harus disederhanakan (misalnya, dengan tautan untuk mengunduh sumber daya untuk semua klaster/namespace);
  • peluang tambahan untuk membuat tautan fleksibel dan menyorot informasi teks, misalnya, sehingga Anda dapat mengarahkan rekan kerja ke bagian tertentu dalam deskripsi sumber daya (sebuah baris di YAML);
  • kemampuan untuk menyesuaikan dengan kebutuhan klien tertentu, misalnya, memungkinkan Anda membuat templat tampilan khusus untuk CRD, tampilan tabel Anda sendiri, dan mengubah gaya CSS;
  • alat untuk eksplorasi lebih lanjut pada baris perintah (misalnya, menampilkan perintah lengkap kubectl, siap untuk disalin);

Di luar tugas yang diselesaikan di Kubernetes Web View (bukan gol) tersisa:

  • abstraksi objek Kubernetes;
  • manajemen aplikasi (misalnya, manajemen penerapan, diagram Helm, dll.);
  • operasi tulis (harus dilakukan melalui alat CI/CD dan/atau GitOps yang aman);
  • antarmuka yang indah (JavaScript, tema, dll.);
  • visualisasi (lihat kube-ops-view);
  • analisis biaya (lihat kube-resource-laporan).

Bagaimana Kubernetes Web View membantu dukungan dan respons terhadap insiden?

Dukungan

  • Semua tautan bersifat permanen, yang memudahkan pertukaran informasi dengan rekan kerja.
  • Anda dapat membuat ide-ide Anda, misalnya, menampilkan semua Deployment dan Pod dengan label tertentu dalam dua cluster tertentu (beberapa nama cluster dan tipe sumber daya dapat ditentukan dalam tautan, dipisahkan dengan koma).
  • Anda bisa merujuk ke baris tertentu dalam file YAML objek, menunjukkan potensi masalah dalam spesifikasi objek.

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)
Telusuri berdasarkan cluster di Kubernetes Web View

Respons Insiden

  • Pencarian global (pencarian global) memungkinkan Anda mencari objek di semua cluster.
  • Tampilan Daftar dapat menampilkan semua objek dengan status/kolom tertentu di semua cluster (misalnya, kita perlu mencari semua pod dengan status “Pending”).
  • Daftar objek dapat diunduh dalam format nilai yang dipisahkan tab (TSV) untuk analisis selanjutnya.
  • Tautan eksternal yang dapat disesuaikan Memungkinkan Anda beralih ke dasbor terkait dan alat lainnya.

Pengumuman Tampilan Web Kubernetes (dan ikhtisar singkat UI web lain untuk Kubernetes)
Tampilan Web Kubernetes: daftar pod dengan status “Tertunda” di semua cluster

Jika Anda ingin mencoba Kubernetes Web View, saya sarankan untuk mencobanya dokumentasi atau lihat demo langsung.

Tentu saja, antarmukanya bisa lebih baik, tetapi untuk saat ini Kubernetes Web View adalah alat untuk “pengguna tingkat lanjut” yang tidak segan-segan memanipulasi jalur URL secara manual jika diperlukan. Jika anda mempunyai kritik/tambahan/saran silahkan menghubungi dengan saya di Twitter!

Artikel ini adalah sejarah singkat latar belakang terciptanya Kubernetes Web View. Lebih banyak lagi akan menyusul! (Catatan. terjemahan: Mereka seharusnya diharapkan masuk blog penulis.)

PSdari penerjemah

Baca juga di blog kami:

Sumber: www.habr.com

Tambah komentar