Knative: Môi trường serverless dành riêng cho fan của Kubernetes
Knative là thành viên mới nhất của môi trường không có máy chủ đang thu hút được sự quan tâm đáng kể và tạo ra rất nhiều sự tranh luận trong cộng đồng Kubernetes / Cloud Native. Nó là một mã nguồn mở được thiết kế để cho phép phát triển và triển khai các ứng dụng máy chủ dựa trên ứng dụng container để dễ dàng vận chuyển giữa các nhà cung cấp đám mây.
Phiên bản GA của Knative được phát hành vào tháng 7 năm 2018, được hỗ trợ bởi Google, Pivotal, IBM và SAP. Mục tiêu là các doanh nghiệp quan tâm đến việc triển khai các chức năng không có máy chủ trên các cụm Kubernetes nội bộ. Để tránh tính năng khóa và tính đặc hiệu của nhà cung cấp đám mây, điều mà nhiều người cho là nhược điểm lớn nhất của môi trường không có máy chủ hiện tại như AWS Lambda, Azure Function hoặc Google Cloud Function.
Thành phần của Knative là gì?
Knative bao gồm các thành phần chính như sau:
Building:: Mở rộng Kubernetes và tối ưu các nguyên bản Kubernetes hiện có để cho phép chạy các bản dựng container từ mã nguồn.
Eventing: Chịu trách nhiệm tạo ra sự kết nối giữa các event producers và event consumers để đạt được kiến trúc event-based.
Serving: Được xây dựng trên Kubernetes và Istio để hỗ trợ triển khai các ứng dụng và chức năng không có máy chủ. Điều này cho phép triển khai nhanh chóng các container không có máy chủ, tự động mở rộng lên và xuống tới mức 0, định tuyến và lập trình mạng cho các thành phần Istio và các trạng thái theo thời gian của mã code và cấu hình.
Sơ đồ sau minh họa triển khai một Knative trong hệ sinh thái công nghệ container:
(Source: knative.dev.doc)
Lợi ích mà Knative mang đến là gì?
Trải nghiệm người dùng không có máy chủ trong môi trường Containerized:
Knative tạo môi trường không có máy chủ bằng cách sử dụng các Containers, cung cấp cho bạn lợi ích của kiến trúc dựa trên sự kiện tại môi trường on-premise mà không bị hạn chế và giới hạn bởi các dịch vụ đám mây công cộng. Knative tự động hóa quá trình xây dựng container, cho phép cơ chế tự động mở rộng quy mô lên xuống, cung cấp khả năng dựa trên các ngưỡng được xác định trước và các cơ chế tạo sự kiện cho các kích hoạt được xác định trước. Bên dưới, nó sử dụng Kubernetes để quản lý môi trường container và Istio như một lưới dịch vụ để định tuyến các yêu cầu và nâng cao sự cân bằng tải cho quá trình mở rộng quy mô.
Knative cho phép bạn xây dựng các ứng dụng ở môi trường on-premise, trên đám mây hoặc trung tâm dữ liệu của bên thứ ba. Vì không có sự liên quan đến điện toán đám mây, bạn có thể linh hoạt hơn vì bạn không phục thuộc vào một nhà cung cấp điện toán đám mây cụ thể, các dịch vụ không có máy chủ độc quyền và các cấu hình riêng. Bạn cũng có thể dùng các nền tảng FaaS và Hệ điều hành khác nhau.
Bạn sẽ tiến lên và đồng hành cùng Knative như nào? Theo lý thuyết, bạn có thể thiết lập plug – in Knative mà không cần dịch vụ quản lý. Một trong những lợi ích của phương pháp này là tự do hơn trong thiết kế và triển khai. Nhược điểm là cần phải tự mình quản lý cơ sở hạ tầng Containerized. Như một blog của DevClass đã gọi nó là “Knative không phải là một phần mềm dành cho người dùng cuối, nhưng sẽ đóng vai trò là cơ sở hạ tầng cho các doanh nghiệp để xây dựng các sản phẩm của người dùng cuối.”
Knative thì không phải là sự thử nghiệm đầu tiên dựa trên Kubernetes. Sự quan tâm ngày càng tăng đối với các dịch vụ không đặt máy chủ đám mây công cộng chẳng hạn như AWS Lambda, Azure và Google Function,… cũng như sự trưởng thành và phổ biến của Kubernetes trong môi trường Container đã dẫn đến một số thử nghiệm mã nguồn mở.
Fission là nền tảng cho các chức năng không cần có máy chủ trên Kubernetes với triển vọng “Không có container để xây dựng hoặc Docker registries để quản lý. Kiến trúc của nó được xây dựng dựa trên Bộ định tuyến của Fission, một bộ phận trung tâm kết nối các sự kiện và webhooks để thực thi các chức năng. Sự phát triển của nó được dẫn dắt bởi Platform9.
Kubeless là nền tảng Kubernetes mà giúp cho người dùng không phải bận tâm về hệ thống cơ sở hạ tầng bên dưới. Nó tận dụng các tài nguyên Kubernetes để cung cấp mở rộng tự động, định tuyến API, giám sát và xử lý sự cố. Kubless sử dụng Định nghĩa tài nguyên tùy chỉnh để tạo các chức năng như tài nguyên Kubernetes tùy chỉnh với bộ điều khiển trong cluster để theo dõi chúng và khởi tạo thời gian chạy theo yêu cầu. Bộ điều khiển tự động đưa các chức năng mã vào thời gian chạy và làm cho chúng sẵn sàng thông qua giao thưucs HTTP hoặc thông qua cơ chế PubSub. Dự án được dẫn dắt bởi Bitnami.
So với Fission và Kubless, Knative có tỷ lệ chấp nhận nhanh hơn và tiềm năng chấp nhận lớn hơn. Điều này không chỉ vì thời gian phát hành của nó tốt hơn (do ứng dụng serverless) mà còn vì việc nó cho phép sử dụng các thành phần mã nguồn mở phổ biến(Kubernetes và Istio). Điều này cho đã được triển khai trên diện rộng trong môi trường contaniner.
Đối với những người đã quen thuộc với các khái niệm về bảo mật container, Knative giới thiệu một số thách thức mới. Quá trình Xây dựng tự động có thể bỏ qua các kiểm soát bảo mật đã được triển khai ở cấp Đăng ký, vì nó tạo ra một cơ chế triển khai song song cũng cần được điều chỉnh.
Phương thức Phục vụ có thể mở rộng các nút lên hoặc xuống tùy theo nhu cầu, một lần nữa, có thể bỏ qua các mẫu triển khai hiện có như Kubernetes DaemonSets hoặc Helm Charts. Do đó, nếu bạn đã từng sử dụng tất cả các node đang chạy hoặc giám sát các thùng chứa bên bảo mật (như Aqua Enforcer), hoặc thậm chí là một sidecar lưới dịch vụ như Envoy, thì các nút phục vụ của Nott có thể không chạy chúng. Các nút mới có thể trở nên vô hình từ quan điểm bảo mật và giám sát.
Để giảm thiểu những rủi ro này, Aqua cung cấp MicroEnforcer, một thành phần chạy bảo mật được nhúng trong các container images. Aqua MicroEnforcer giám sát và kiểm soát các container tức thời bất kể họ ở đâu, do đó ngăn chặn các hoạt động container trái phép cụ thể diễn ra. MicroEnforcer đi cùng với container ở bất cứ nơi nào mà nó triển khai và bảo vệ tính toàn vẹn của từ hình ảnh tới container. Khi container được vận chuyển, MicroEnforcer bảo vệ nó trong môi trường phát triển Knative với bất cứ nơi nào nó hoạt động.
Kết luận
native là một nền tảng mới có tiềm năng đáng kể để phá vỡ thị trường serverless bằng cách cung cấp tùy chọn on – premises để triển khai các ứng dụng dựa trên sự kiện với quy mô tự động. Vẫn còn quá sớm để dự đoán liệu Knative có phải là người thay đổi cuộc chơi trong đấu trường không có máy chủ – serverless hay không. Xu hướng trên GitHub không cho thấy sự tăng trưởng. Tuy nhiên, với sự hậu thuẫn đáng kể từ các ông lớn, sẽ rất thú vị để theo dõi tiến trình của nó và xem liệu nó có mang lại trong thời gian dài hay không
(Source: aquasec.com)