- Uncloud là công cụ mã nguồn mở cho phép triển khai và mở rộng các ứng dụng web được đóng gói bằng container trên nhiều máy chủ mà không cần Kubernetes
- Vẫn giữ quy trình làm việc dựa trên Docker Compose, đồng thời hỗ trợ triển khai không gián đoạn, HTTPS tự động và mở rộng trên nhiều máy chủ
- Không có control plane trung tâm, mỗi máy được kết nối bằng mạng P2P dựa trên WireGuard, nên cụm vẫn tiếp tục hoạt động ngay cả khi một số máy chủ ngoại tuyến
- Bao gồm HTTPS tự động thông qua reverse proxy Caddy, service discovery dựa trên DNS tích hợp và chức năng cân bằng tải
- Có thể triển khai theo cùng một cách ngay cả trong môi trường lai cloud và on-premise, giúp đảm bảo quyền kiểm soát hạ tầng và khả năng dự đoán chi phí
Quy trình làm việc kiểu PaaS
- Mang lại trải nghiệm triển khai đơn giản như Heroku hay Fly.io nhưng vẫn giữ toàn quyền kiểm soát với máy chủ và dữ liệu
- Cấu trúc chi phí có thể dự đoán thay vì tính phí theo từng request
- Không bị khóa vào nhà cung cấp, có thể debug bằng các công cụ SSH tiêu chuẩn
- Cấu trúc thân thiện với Docker Compose, cho phép build, push và deploy chỉ với một lệnh
- Không cần image registry, hỗ trợ triển khai rolling không gián đoạn
- Có thể mở rộng bằng bản sao trên nhiều máy
Thiết kế ít cần bảo trì
- Không cần control plane hay quản lý quorum, giảm thiểu độ phức tạp trong quản trị
- Hỗ trợ giao tiếp an toàn giữa các máy mà không cần mở cổng
- Tích hợp sẵn service discovery tự động và tự động cấp HTTPS dựa trên Let's Encrypt
Cách hoạt động
- Thay vì một cụm phức tạp, hệ thống được cấu thành từ mạng lưới máy đơn giản, cung cấp hạ tầng ổn định mà không tăng gánh nặng bảo trì
- Mỗi máy tham gia vào mạng mesh WireGuard, tự động phát hiện peer và thực hiện NAT traversal
- Container nhận IP riêng để có thể giao tiếp trực tiếp giữa các máy chủ
- Kiến trúc phân tán hoàn toàn, không có nút điều khiển trung tâm, mỗi máy sẽ đồng bộ trạng thái cụm
- Cụm vẫn tiếp tục vận hành ngay cả khi một số máy ngoại tuyến
- Điều khiển toàn bộ hạ tầng bằng CLI tương tự Docker
- Chỉ cần quyền truy cập SSH vào một máy là có thể triển khai, giám sát và mở rộng
Tính năng chính
- Có thể triển khai ở bất cứ đâu: hỗ trợ mọi máy Linux như cloud VM, máy chủ chuyên dụng, on-premise
- HTTPS tự động: reverse proxy Caddy tích hợp cho phép cấp chứng chỉ TLS không cần cấu hình và kích hoạt HTTPS
- Cân bằng tải: phân phối lưu lượng giữa các bản sao container được phân tán trên nhiều máy
- Service discovery: DNS tích hợp tự động theo dõi vị trí dịch vụ trong mạng
- Infrastructure as Code: có thể định nghĩa toàn bộ stack ứng dụng bằng file Docker Compose hiện có
- Không bị khóa vào nhà cung cấp: có thể tự do kết hợp cloud và phần cứng riêng
1 bình luận
Ý kiến trên Hacker News
Xin chào, mình là tác giả. Cảm ơn vì đã chia sẻ
Uncloud là một container orchestrator không có control plane. Nói đơn giản, nó giống như Docker Compose chạy trên nhiều máy, kèm mesh WireGuard tự động, service discovery và HTTPS thông qua Caddy. Mỗi máy dùng Corrosion của Fly.io để đồng bộ p2p trạng thái cụm, nên không cần duy trì quorum
Sau khi từng vận hành Kubernetes ở cả startup lẫn công ty kỳ lân, mình nhận ra rằng phần lớn đội ngũ thực ra chỉ cần chạy container ổn định trên vài máy, cùng networking, rollout và HTTPS. So với nhu cầu đó, overhead vận hành của K8s là quá lớn
Các đặc điểm chính như sau
Liên kết dự án: https://github.com/psviderski/uncloud
uc machine initbên trong lại chạycurl | bashvới quyền root trông rủi ro về bảo mật. Tôi muốn thử, nhưng có lẽ sẽ không chạy nó trên máy thậtTôi đã dành phần lớn sự nghiệp của mình cho Kubernetes, nên tôi tò mò lợi ích của kiến trúc không có control plane là gì. Với tôi, control plane mới chính là chức năng cốt lõi của K8s.
Cỡ vài trăm node, hàng chục nghìn container thì cluster managed có thể tự cập nhật nên cũng không phải gánh nặng lớn. Tôi tự hỏi liệu nỗi đau mà mọi người gặp phải khi tự host K8s có phải là bối cảnh dẫn đến những giải pháp thay thế kiểu này không
Ngay cả khi mạng bị phân đoạn, từng phân vùng vẫn có thể hoạt động độc lập. Nó giống sự đơn giản của thời Chef hay Ansible trước đây, nhưng có thêm những bài học rút ra từ K8s
Dự án rất hay. Sau này tôi nhất định sẽ dùng thử.
Nếu muốn một giải pháp thay thế đơn giản hơn, Kamal cũng khá ổn. Đây là công cụ đã được kiểm chứng thực tế bởi chính công ty vận hành nó, hoàn toàn rời xa K8s và cloud
Tôi muốn biết liệu có tính năng tự động hardening máy chủ khi chỉ định server hay không
Tôi là người dùng Docker Swarm. Uncloud là giải pháp thay thế đầu tiên khiến tôi thấy hứng thú
Tôi có những câu hỏi sau
x-ports: app.example.com:8000/https.Hoặc có thể tùy biến cấu hình Caddy bằng
x-caddy: Caddyfile. Xem chi tiết trong tài liệu chính thứcHiện tại chưa có tính năng cô lập mạng giữa các stack. Thảo luận liên quan đang diễn ra tại GitHub Discussion #94.
Tôi muốn biết bạn kỳ vọng hành vi như thế nào
Câu trả lời cho câu 2 và 3 là “chưa” và “hiện tại là có”. Xem thêm thảo luận tại Discussion #94
Với tư cách là người từng dùng Swarm, tôi muốn biết những điểm Swarm còn thiếu hoặc gây bất tiện mà Uncloud có thể cải thiện là gì
Đây là một dự án thật sự ấn tượng. Cũng đáng tham khảo thêm một số công cụ khác có chủ đề tương tự
Nếu bạn biết thêm thì mong bạn bổ sung
Gần đây tôi đã thử Coolify nhưng thấy nó hơi chưa hoàn thiện. Hiện tôi đang dùng Dokku, nhưng giá mà UI quản lý DB tốt hơn thì hay
Tôi hài lòng với k3s, nhưng rất vui khi thấy những thử nghiệm mới trong vùng trung gian giữa Docker Compose và K8s đầy đủ. Đặc biệt phần tích hợp WireGuard rất thú vị
Công cụ thực sự rất tuyệt. Cảm ơn vì công sức của bạn.
Tôi muốn biết sao chép trạng thái ở backend hoạt động như thế nào. Có nhắc đến CRDT và giao thức gossip, nhưng cách triển khai cụ thể vẫn chưa rõ
Nếu không dùng K8s thì tại sao lại không dùng Nomad?
Tức là ngoài việc tự host thì khả năng tận dụng bị hạn chế, và trên thực tế là không thể tự do dịch vụ hóa. Xem toàn văn giấy phép
Nhân tiện, xin chia sẻ hai thành phần p2p thú vị