Các nhà phát triển ca ngợi Tilt cho việc phát triển Kubernetes, ghi nhận tiến độ chậm lại sau khi bị Docker mua lại

BigGo Editorial Team
Các nhà phát triển ca ngợi Tilt cho việc phát triển Kubernetes, ghi nhận tiến độ chậm lại sau khi bị Docker mua lại

Tilt, một công cụ phát triển được thiết kế để đơn giản hóa việc phát triển microservice trong môi trường Kubernetes, đã nhận được sự chú ý đáng kể từ các nhà phát triển đang tìm cách thu hẹp khoảng cách giữa môi trường phát triển cục bộ và môi trường sản xuất. Mặc dù công cụ này vẫn được sử dụng rộng rãi, các thành viên cộng đồng đã ghi nhận sự chậm lại trong tốc độ phát triển sau khi Docker mua lại dự án này.

Đơn giản hóa quy trình phát triển Kubernetes

Tilt giải quyết một thách thức phổ biến trong phát triển phần mềm hiện đại: quản lý kiến trúc microservice phức tạp trong giai đoạn phát triển. Nó tự động hóa chu kỳ tẻ nhạt của việc theo dõi tệp, xây dựng container image và cập nhật môi trường khi mã nguồn thay đổi. Về cơ bản, nó xử lý tương đương với việc chạy các lệnh docker build && kubectl apply hoặc docker-compose up, nhưng với nhiều tính năng thông minh và thân thiện với nhà phát triển hơn.

Nhiều nhà phát triển đánh giá cao việc Tilt sử dụng Starlark (một ngôn ngữ cấu hình giống Python) thay vì YAML để định nghĩa quy trình làm việc. Lựa chọn này đã làm cho cấu hình dễ quản lý và linh hoạt hơn đáng kể so với các giải pháp thay thế như Skaffold, vốn phụ thuộc nhiều vào cấu hình YAML.

Tôi luôn đánh giá cao việc Tilt chọn Starlark thay vì YAML. Làm cho mọi thứ gọn gàng hơn nhiều!

Các tính năng chính của Tilt

  • Quy trình làm việc tự động: Theo dõi các tập tin, xây dựng các container image, cập nhật môi trường
  • Ngôn ngữ cấu hình: Sử dụng Starlark (giống Python) thay vì YAML
  • Khả năng tải lại nóng: Hoạt động với cả ngôn ngữ thông dịch và biên dịch tĩnh
  • Bảng điều khiển UI: Giám sát nhật ký và theo dõi trạng thái xây dựng
  • Tích hợp Kubernetes: Hỗ trợ ingress, service discovery, gắn kết volume

Các tùy chọn cài đặt

  • macOS/Linux: curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/Install.sh | bash
  • Windows: Script cài đặt PowerShell
  • Trình quản lý gói: Hỗ trợ Homebrew, Scoop, Conda, asdf

Các trường hợp sử dụng phổ biến

  • Kubernetes operators và controllers
  • Các bộ thu thập dựa trên eBPF
  • Đường ống dữ liệu
  • Phát triển Helm chart
  • Phát triển frontend với Kubernetes ingress

Sự đánh đổi giữa độ chính xác và tốc độ

Một chủ đề thường xuyên xuất hiện trong các cuộc thảo luận cộng đồng xoay quanh sự đánh đổi giữa độ chính xác của môi trường phát triển và tốc độ. Trong khi một số nhà phát triển thích sử dụng các công cụ đơn giản hơn như docker-compose với các phụ thuộc giả lập để giữ cho chu kỳ phát triển nhanh chóng, người dùng Tilt nhấn mạnh lợi ích của môi trường kiểm thử có độ chính xác cao hơn.

Tilt cho phép các nhà phát triển tạo ra môi trường phát triển cục bộ gần giống với cấu hình sản xuất, điều này có thể giảm đáng kể các lỗi liên quan đến môi trường cụ thể. Cách tiếp cận này đơn giản hóa mã dịch vụ bằng cách loại bỏ nhu cầu về các giả lập và giải pháp tạm thời dành riêng cho phát triển. Đối với phát triển frontend, việc sử dụng Kubernetes ingress thông qua Tilt có thể loại bỏ nhu cầu về các thiết lập chỉ dành cho phát triển như frontend proxy và cấu hình CORS.

Ứng dụng thực tế và trường hợp sử dụng

Các nhà phát triển báo cáo việc sử dụng Tilt cho nhiều ứng dụng đa dạng, bao gồm các bộ thu thập dựa trên eBPF cho bảo mật và khả năng quan sát, đường ống dữ liệu, phát triển Helm chart và các bộ điều khiển Kubernetes. Công cụ này dường như đặc biệt có giá trị cho các dự án tương tác trực tiếp với API Kubernetes, chẳng hạn như các operators cần khám phá cấu hình từ ConfigMaps hoặc các dịch vụ phụ thuộc vào các tính năng đặc thù của Kubernetes.

Một ví dụ đáng chú ý là dự án mã nguồn mở Chroma, sử dụng Tilt để chạy phiên bản phân tán của cơ sở dữ liệu cho cả môi trường phát triển và tích hợp liên tục. Điều này thể hiện khả năng của Tilt trong việc xử lý các hệ thống phân tán phức tạp trong bối cảnh phát triển.

Một trang kho lưu trữ GitHub thể hiện bản chất hợp tác của việc tích hợp Tilt vào các dự án phát triển, phản ánh các ứng dụng thực tế của nó
Một trang kho lưu trữ GitHub thể hiện bản chất hợp tác của việc tích hợp Tilt vào các dự án phát triển, phản ánh các ứng dụng thực tế của nó

Lo ngại về tốc độ phát triển

Mặc dù hữu ích, một số thành viên cộng đồng đã bày tỏ lo ngại về tốc độ phát triển của Tilt kể từ khi Docker mua lại dự án. Mặc dù công cụ vẫn hoạt động tốt và được sử dụng rộng rãi, vẫn còn những yêu cầu tính năng chưa được giải quyết, điều này sẽ cải thiện trải nghiệm của nhà phát triển, chẳng hạn như xử lý tốt hơn các Custom Resource Definitions (CRDs) và các phụ thuộc giữa các tài nguyên Kubernetes.

Phân biệt với các công cụ phát triển khác

Có một số nhầm lẫn về sự khác biệt giữa Tilt và các công cụ phát triển khác như dev containers. Trong khi dev containers tập trung vào việc cấu hình môi trường phát triển với các bộ công cụ phù hợp, Tilt đóng vai trò như một quy trình giám sát xây dựng và khởi động các dịch vụ với khả năng tải lại nóng (hot-reload). Sự phân biệt này rất quan trọng đối với các nhà phát triển đang đánh giá công cụ nào phù hợp nhất với quy trình làm việc của họ.

Chức năng hot-reload của Tilt hoạt động ngay cả với các ngôn ngữ biên dịch tĩnh, làm cho nó linh hoạt với nhiều công nghệ khác nhau. Công cụ này cũng cung cấp giao diện người dùng để theo dõi nhật ký và theo dõi thành công hoặc thất bại của quá trình xây dựng, nâng cao khả năng hiển thị trong quá trình phát triển.

Đối với các nhóm làm việc với kiến trúc dựa trên Kubernetes, Tilt cung cấp một giải pháp thuyết phục cho những thách thức của phát triển cục bộ. Mặc dù có những lo ngại về tốc độ phát triển của nó, công cụ này vẫn tiếp tục mang lại giá trị đáng kể bằng cách cho phép các nhà phát triển làm việc trong môi trường gần giống với môi trường sản xuất trong khi vẫn duy trì tốc độ lặp lại hợp lý.

Tham khảo: Tilt