Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)

Ghi chú. bản dịch.: Tác giả của tài liệu gốc là Henning Jacobs đến từ Zalando. Anh ấy đã tạo một giao diện web mới để làm việc với Kubernetes, được định vị là “kubectl cho web”. Tại sao một dự án Nguồn mở mới xuất hiện và những tiêu chí nào không được đáp ứng bởi các giải pháp hiện có - hãy đọc bài viết của anh ấy.

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)

Trong bài đăng này, tôi xem xét các giao diện web Kubernetes nguồn mở khác nhau, đưa ra các yêu cầu của tôi đối với giao diện người dùng phổ quát và giải thích lý do tại sao tôi phát triển Kubernetes WebView — một giao diện được thiết kế để giúp hỗ trợ và khắc phục sự cố nhiều cụm cùng một lúc dễ dàng hơn.

Trường hợp sử dụng

Tại Zalando, chúng tôi phục vụ một số lượng lớn người dùng Kubernetes (900+) và cụm (100+). Có một số trường hợp sử dụng phổ biến sẽ được hưởng lợi từ công cụ web chuyên dụng:

  1. giao tiếp với đồng nghiệp để được hỗ trợ;
  2. ứng phó với các sự cố và điều tra nguyên nhân của chúng.

Hỗ trợ

Theo kinh nghiệm của tôi, thông tin liên lạc hỗ trợ thường như thế này:

— Trợ giúp, dịch vụ XYZ của chúng tôi không khả dụng!
- Bạn thấy gì khi biểu diễn kubectl describe ingress ...?

Hoặc một cái gì đó tương tự cho CRD:

- Tôi gặp một số vấn đề với dịch vụ nhận dạng...
- Lệnh này tạo ra cái gì? kubectl describe platformcredentialsset ...?

Việc giao tiếp như vậy thường bắt nguồn từ việc nhập các biến thể khác nhau của lệnh kubectl để xác định vấn đề. Do đó, cả hai bên tham gia cuộc trò chuyện buộc phải liên tục chuyển đổi giữa thiết bị đầu cuối và trò chuyện trên web, đồng thời họ quan sát thấy một tình huống khác.

Do đó, tôi muốn giao diện người dùng web Kubernetes cho phép những điều sau:

  • người dùng có thể trao đổi liên kết và quan sát điều tương tự;
  • sẽ giúp tránh những sai lầm của con người trong hỗ trợ: ví dụ: đăng nhập sai cụm trên dòng lệnh, lỗi chính tả trong lệnh CLI, v.v.;
  • sẽ cho phép tạo quan điểm của riêng bạn để gửi cho đồng nghiệp, nghĩa là thêm các cột thẻ, hiển thị nhiều loại tài nguyên trên một trang;
  • Lý tưởng nhất là công cụ web này sẽ cho phép bạn thiết lập liên kết "sâu" đến các phần cụ thể của YAML (ví dụ: chỉ ra một tham số không chính xác gây ra lỗi).

Phản ứng và phân tích sự cố

Việc ứng phó với các sự cố cơ sở hạ tầng đòi hỏi nhận thức về tình huống, khả năng đánh giá tác động và tìm kiếm các mô hình theo cụm. Một số ví dụ thực tế cuộc sống:

  • Một dịch vụ sản xuất quan trọng đang gặp sự cố và bạn cần phải tìm tất cả tài nguyên Kubernetes theo tên trong tất cả các cụmđể giải quyết;
  • các nút bắt đầu rơi khi chia tỷ lệ và bạn cần tìm tất cả các nhóm có trạng thái “Đang chờ xử lý” trong tất cả các cụmđể đánh giá phạm vi của vấn đề;
  • người dùng cá nhân đang báo cáo sự cố với DaemonSet được triển khai trên tất cả các cụm và cần tìm hiểu Vấn đề có phải là toàn bộ không?.

Giải pháp tiêu chuẩn của tôi trong những trường hợp như vậy là như thế for i in $clusters; do kubectl ...; done. Rõ ràng là có thể phát triển một công cụ cung cấp các khả năng tương tự.

Giao diện web Kubernetes hiện có

Thế giới nguồn mở của giao diện web cho Kubernetes không lớn lắm*, vì vậy tôi đã cố gắng thu thập thêm thông tin bằng cách sử dụng Twitter:

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)

*Lời giải thích của tôi về số lượng giao diện web hạn chế dành cho Kubernetes: các dịch vụ đám mây và nhà cung cấp Kubernetes thường cung cấp giao diện người dùng riêng của họ, vì vậy thị trường cho giao diện người dùng Kubernetes miễn phí “tốt” tương đối nhỏ.

Thông qua một tweet tôi đã biết về K8Dash, Kubernator и bát phân. Hãy xem xét chúng và các giải pháp Nguồn mở hiện có khác, hãy cố gắng hiểu chúng là gì.

K8Dash

“K8Dash là cách đơn giản nhất để quản lý cụm Kubernetes.”

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)

K8Dash Có vẻ tốt và cảm giác nhanh, nhưng có một số nhược điểm đối với các trường hợp sử dụng được liệt kê ở trên:

  • Chỉ hoạt động trong ranh giới của một cụm.
  • Có thể sắp xếp và lọc nhưng không có liên kết cố định.
  • Không có hỗ trợ cho Định nghĩa tài nguyên tùy chỉnh (CRD).

Kubernator

“Kubernator là một giao diện người dùng thay thế cho Kubernetes. Không giống như Bảng điều khiển Kubernetes cấp cao, nó cung cấp khả năng kiểm soát cấp thấp và khả năng hiển thị tuyệt vời đối với tất cả các đối tượng trong cụm với khả năng tạo đối tượng mới, chỉnh sửa chúng và giải quyết xung đột. Là một ứng dụng hoàn toàn phía máy khách (như kubectl), nó không yêu cầu bất kỳ chương trình phụ trợ nào ngoài chính máy chủ API Kubernetes và cũng tôn trọng các quy tắc truy cập cụm.”

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)

Đây là một mô tả khá chính xác Kubernator. Thật không may, nó thiếu một số tính năng:

  • Chỉ phục vụ một cụm.
  • Không có chế độ xem danh sách (tức là bạn không thể hiển thị tất cả các nhóm có trạng thái “Đang chờ xử lý”).

Bảng điều khiển Kubernetes

“Bảng điều khiển Kubernetes là một giao diện web phổ quát cho các cụm Kubernetes. Nó cho phép người dùng quản lý và khắc phục sự cố các ứng dụng đang chạy trong một cụm cũng như quản lý chính cụm đó.”

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)

Thật không may, Bảng điều khiển Kubernetes không thực sự giúp ích cho các hoạt động hỗ trợ và ứng phó sự cố của tôi vì nó:

  • không có liên kết cố định nào, chẳng hạn như khi tôi lọc tài nguyên hoặc thay đổi thứ tự sắp xếp;
  • không có cách nào dễ dàng để lọc theo trạng thái - ví dụ: xem tất cả các nhóm có trạng thái “Đang chờ xử lý”;
  • chỉ có một cụm được hỗ trợ;
  • CRD không được hỗ trợ (tính năng này đang được phát triển);
  • không có cột tùy chỉnh (chẳng hạn như các cột được gắn nhãn theo loại kubectl -L).

Chế độ xem hoạt động Kubernetes (kube-ops-view)

"Trình quan sát bảng điều khiển hệ thống cho không gian cụm K8."

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)

У Chế độ xem hoạt động của Kubernetes Một cách tiếp cận hoàn toàn khác: công cụ này chỉ hiển thị các nút và nhóm cụm bằng WebGL mà không hiển thị bất kỳ chi tiết đối tượng văn bản nào. Thật tuyệt vời khi có cái nhìn tổng quan nhanh về tình trạng của cụm (các nhóm có bị rơi không?)*, nhưng nó không phù hợp với các trường hợp sử dụng hỗ trợ và ứng phó sự cố được mô tả ở trên.

* Ghi chú. bản dịch.: Theo nghĩa này, bạn cũng có thể quan tâm đến plugin của chúng tôi sơ đồ trạng thái grafana, mà chúng ta đã nói chi tiết hơn trong bài viết này.

Báo cáo tài nguyên Kubernetes (báo cáo tài nguyên kube)

“Thu thập các yêu cầu tài nguyên của nhóm và cụm Kubernetes, so sánh chúng với mức tiêu thụ tài nguyên và tạo HTML tĩnh.”

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)

Báo cáo tài nguyên Kubernetes tạo báo cáo HTML tĩnh về việc sử dụng tài nguyên và phân bổ chi phí giữa các nhóm/ứng dụng trong cụm. Báo cáo phần nào hữu ích cho việc hỗ trợ và ứng phó sự cố vì nó cho phép bạn nhanh chóng tìm thấy cụm nơi ứng dụng được triển khai.

Ghi chú. bản dịch.: Một dịch vụ và công cụ cũng có thể hữu ích trong việc xem thông tin về việc phân bổ tài nguyên và chi phí của chúng giữa các nhà cung cấp đám mây Kubecost, mà chúng tôi xem xét được xuất bản gần đây.

bát phân

"Một nền tảng web có thể mở rộng dành cho các nhà phát triển được thiết kế để mang lại sự hiểu biết sâu sắc hơn về mức độ phức tạp của các cụm Kubernetes."

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)

bát phân, do VMware tạo ra, là một sản phẩm mới mà tôi mới biết đến gần đây. Với sự trợ giúp của nó, việc khám phá cụm trên máy cục bộ sẽ rất thuận tiện (thậm chí còn có hình ảnh trực quan), nhưng nó chỉ giải quyết các vấn đề về hỗ trợ và ứng phó sự cố ở một mức độ hạn chế. Nhược điểm của Octant:

  • Không có tìm kiếm cụm.
  • Chỉ hoạt động trên máy cục bộ (không triển khai thành cụm).
  • Không thể sắp xếp/lọc đối tượng (chỉ hỗ trợ bộ chọn nhãn).
  • Bạn không thể chỉ định các cột tùy chỉnh.
  • Bạn không thể liệt kê các đối tượng theo không gian tên.

Tôi cũng gặp vấn đề với tính ổn định của Octant với cụm Zalando: trên một số CRD anh ấy đang rơi.

Giới thiệu Chế độ xem web Kubernetes

"kubectl cho web".

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)

Sau khi phân tích các tùy chọn giao diện có sẵn cho Kubernetes, tôi quyết định tạo một giao diện mới: Kubernetes WebView. Suy cho cùng, thực ra tôi chỉ cần tất cả sức mạnh kubectl trên web, cụ thể là:

  • tính khả dụng của tất cả các hoạt động (chỉ đọc) mà người dùng thích sử dụng kubectl;
  • tất cả các URL phải cố định và thể hiện trang ở dạng ban đầu để đồng nghiệp có thể chia sẻ và sử dụng chúng trong các công cụ khác;
  • hỗ trợ cho tất cả các đối tượng Kubernetes, điều này sẽ cho phép bạn giải quyết mọi loại vấn đề;
  • danh sách tài nguyên có thể tải xuống được để làm việc tiếp theo (trong bảng tính, các công cụ CLI như grep) và bảo quản (ví dụ: đối với khám nghiệm tử thi);
  • hỗ trợ chọn tài nguyên theo nhãn (tương tự như kubectl get .. -l);
  • khả năng tạo danh sách kết hợp các loại tài nguyên khác nhau (tương tự như kubectl get all) để có được bức tranh hoạt động chung giữa các đồng nghiệp (ví dụ: trong quá trình ứng phó sự cố);
  • khả năng thêm các liên kết sâu thông minh tùy chỉnh vào các công cụ khác như trang tổng quan, trình ghi nhật ký, sổ đăng ký ứng dụng, v.v. để tạo điều kiện khắc phục sự cố/giải quyết lỗi và ứng phó với sự cố;
  • Giao diện người dùng phải đơn giản nhất có thể (HTML thuần túy) để tránh các sự cố ngẫu nhiên, chẳng hạn như JavaScript bị treo;
  • hỗ trợ nhiều cụm để đơn giản hóa việc tương tác trong quá trình tư vấn từ xa (ví dụ: chỉ nhớ một URL);
  • Nếu có thể, việc phân tích tình huống nên được đơn giản hóa (ví dụ: có liên kết để tải xuống tài nguyên cho tất cả các cụm/không gian tên);
  • ví dụ: các cơ hội bổ sung để tạo liên kết linh hoạt và làm nổi bật thông tin văn bản để bạn có thể hướng đồng nghiệp đến một phần cụ thể trong mô tả tài nguyên (một dòng trong YAML);
  • khả năng tùy chỉnh theo yêu cầu của một khách hàng cụ thể, chẳng hạn như cho phép bạn tạo các mẫu hiển thị đặc biệt cho CRD, chế độ xem bảng của riêng bạn và thay đổi kiểu CSS;
  • công cụ để khám phá thêm về dòng lệnh (ví dụ: hiển thị các lệnh đầy đủ kubectl, sẵn sàng để sao chép);

Ngoài các nhiệm vụ được giải quyết trong Chế độ xem web Kubernetes (không có mục tiêu) vẫn:

  • trừu tượng hóa các đối tượng Kubernetes;
  • quản lý ứng dụng (ví dụ: quản lý triển khai, biểu đồ Helm, v.v.);
  • thao tác ghi (phải được thực hiện thông qua các công cụ CI/CD và/hoặc GitOps an toàn);
  • giao diện đẹp (JavaScript, chủ đề, v.v.);
  • trực quan hóa (xem kube-ops-view);
  • phân tích chi phí (xem kube-tài nguyên-báo cáo).

Kubernetes Web View hỗ trợ và ứng phó sự cố như thế nào?

Hỗ trợ

  • Tất cả các liên kết là vĩnh viễn, giúp việc trao đổi thông tin với đồng nghiệp trở nên dễ dàng hơn.
  • Bạn có thể tạo những ý tưởng của bạn, ví dụ: hiển thị tất cả các Triển khai và Nhóm có nhãn cụ thể trong hai cụm cụ thể (một số tên cụm và loại tài nguyên có thể được chỉ định trong liên kết, được phân tách bằng dấu phẩy).
  • Bạn có thể tham khảo các dòng cụ thể trong tệp YAML đối tượng, chỉ ra các vấn đề tiềm ẩn trong đặc tả đối tượng.

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)
Tìm kiếm theo cụm trong Chế độ xem web Kubernetes

Ứng phó sự cố

  • Tìm kiếm toàn cầu (tìm kiếm toàn cầu) cho phép bạn tìm kiếm các đối tượng trong tất cả các cụm.
  • Danh sách lượt xem có thể hiển thị tất cả các đối tượng có trạng thái/cột nhất định trong tất cả các cụm (ví dụ: chúng ta cần tìm tất cả các nhóm có trạng thái “Đang chờ xử lý”).
  • Danh sách các đối tượng có thể được tải xuống ở định dạng giá trị được phân tách bằng tab (TSV) để phân tích sau này.
  • Liên kết bên ngoài có thể tùy chỉnh Cho phép bạn chuyển sang trang tổng quan có liên quan và các công cụ khác.

Thông báo về Chế độ xem web Kubernetes (và tổng quan ngắn gọn về các giao diện người dùng web khác cho Kubernetes)
Chế độ xem web Kubernetes: danh sách các nhóm có trạng thái “Đang chờ xử lý” trong tất cả các cụm

Nếu bạn muốn dùng thử Kubernetes Web View, tôi khuyên bạn nên kiểm tra tài liệu hoặc nhìn vào bản thử trực tiếp.

Tất nhiên, giao diện có thể tốt hơn, nhưng hiện tại Kubernetes Web View là một công cụ dành cho “người dùng nâng cao”, những người không ngại thao tác đường dẫn URL theo cách thủ công nếu cần. Nếu có ý kiến/bổ sung/gợi ý, vui lòng liên hệ với tôi trên Twitter!

Bài viết này trình bày lịch sử ngắn gọn về nền tảng dẫn đến việc tạo ra Kubernetes Web View. Nhiều hơn nữa sẽ làm theo! (Ghi chú. bản dịch.: Họ nên được mong đợi trong blog của tác giả.)

PStừ người dịch

Đọc thêm trên blog của chúng tôi:

Nguồn: www.habr.com

Thêm một lời nhận xét