# Ý nghĩa các trường thông tin Sun Container Spinner là dịch vụ Container Orchestration, tập trung vào quản lý và điều phối container với khả năng mở rộng linh hoạt và độ ổn định. Nó được xây dựng dựa trên các Workflows và Concepts quen thuộc của Container Orchestration tương tự K8S. ## General Đây là các metadata cấu hình behavior của hệ thống đối với Spinner và POD * **Data Center:** - **`Description`**: Khu vực đặt Data Center, nó có tác động lớn về mặt truyền dẫn dữ liệu. DC nào càng gần khách hàng thì dữ liệu truyền dẫn càng nhanh và ổn định. Hiện nay, dịch vụ Sun Container Spinner có DC đặt tại Việt Nam nên hệ thống sẽ mặc định chọn ASIA. - **`Options`**: Asian, North America, Europe. - **`Default value`**: Hiện dịch vụ Sun Container Spinner có Data đặt tại Việt Nam nên hệ thống sẽ default là ASIA. * **Spinner name:** `string` - **`Description`**: Tên của Spinner do user đặt nhằm gợi nhớ nội dung và phân biệt Spinner này với Spinner khác. Tên của Spinner phải là duy nhất. Hệ thống sẽ sử dụng tên của Spinner để generate ra spinner ID - **`Default value`**: "default-spinner". * **Config Scale:** `number` - **`Description`**: Số lượng POD(instance) cài đặt ban đầu của người dùng. Số lượng POD có thể thay đổi sau khi deploy Spinner. Xem thêm chi tiết về {ref}`POD` - **`Default value`**: 1 (spinner/reference/fields-specification/min-ready-seconds)= * **Min ready seconds:** `number` - **`Description`**: Chỉ định thời gian tối thiểu (seconds) mà một Pod mới được tạo ra và *Ready* mà không có bất cứ container nào crash để được coi là *Available*. Thông số này được sử dụng để kiểm tra tiến trình triển khai khi Spinner sử dụng *Deployement strategy* ở chế độ *Rolling Update*. Giá trị mặc định là 0(Pod sẽ được coi là Ready sớm nhất có thể khi Available ) - **`Default value`**: 0 * **Progress Deadline Seconds:** `number` - **`Description`**: Chỉ định thời gian tối đa (seconds) mà bạn muốn chờ tiến trình triển khai trước khi hệ thống thông báo tiến trình này thất bại. Khi tiến trình thất bại, hệ thống sẽ tự động rollback. Chỉ áp dụng khi spinner dạng *No Volume* hoặc *Shared Volume* - **`Default value`**: 600 * **Pod Management Policies:** `options` - **`Description`**: Option này cho phép thay đổi hành vi của hệ thống khi triển khai nhiều replicas(Pods), chỉ áp dụng với spinner dạng Dedicated Volume - **`Options`**: - *OrderedReady*: Các Pod được tạo ra lần lượt từ 0 đến N-1, khi bị Pod bị xóa đi cũng tuân theo thứ tự từ N-1 đến 0 - *Parallel*: Chỉ dẫn hệ thống tạo ra hoặc xóa nhiều Pod một cách đồng thời, không quan tâm đến thứ tự, option này chỉ có tác dụng với tiến trình scale, tiến trình update không được áp dụng. - **`Default value`**: *OrderedReady*. (spinner/reference/fields-specification/security-context-constraints)= * **Security context constraints:** `options` - **`Description`**: Một số image cần cài đặt quyền root với container để có thể execute các function. Khác với K8S, một số image đặc thù cần quyền root với host có thể sẽ không triển khai được trên Sun Container Spinner - **`Options`**: nonroot, root - **`Default value`**: nonroot. * **Spinner Rollback:** `options` - **`Description`**: Là cơ chế giúp developer phục hồi Spinner trở lại một trong các version đã được lưu lại. Nếu user disable tính năng này, các version của Spinner sẽ không được tạo ra. Xem thêm chi tiết về {ref}`version` - **`Options`**: Enable, Never - **`Default value`**: Enable. * **Deployment Strategy:** `options` - **`Description`**: Behavior của hệ thống khi reschedule các POD. - **`Options`**: - *Recreate*: Số lượng Pod cũ bị xóa đi và Pod mới sẽ được deploy dần dần theo một tỉ lệ nhất định. - *Rolling Update*: Các Pod cũ sẽ bị xóa hết trước khi Pod mới được deploy lên. - **`Default value`**: Rolling Update. * **Container Group name:**
Group các container cùng tên lại. ## Image config Một Spinner cho phép tạo tối đa 5 containers. Mỗi container bao gồm các thành phần sau: * **Container name** `string` - **`Description`**: Tên của Container do user đặt nhằm gợi nhớ nội dung và phân biệt Container này với Container khác. - **`Default value`**: "container-\" * **Image source** `selection` - Địa chỉ của image, người dùng cần chỉ định image registry, image name, Image pull secret(trong trường hợp private image) để hệ thống có thể truy cập và lấy về các thông tin của image. * **Image Version** `options` - **`Description`**: Version của image(tags) trên các image registry, hệ thống sẽ tự động lấy danh sách các version theo hiện có của image. ```{note} Các version có thể giống nhau về kí hiệu nhưng khác nhau về mã SHA(overwrite tag), người dùng chú ý chọn đúng version để tránh conflict. ``` - **`Default value`**: Last updated version - **Image pull policy** `options` - **`Description`**: Behavior Pull Image khi có các thay đổi về POD(reschedule). - **`Options`**: - *IfNotPresent*: Chỉ pull image về khi nó chưa có trên cache. - *Never*: Không bao giờ pull image về. - *Always*: Luôn luôn pull image mới về từ Repository cho dù đã cache. - **`Default value`**: Always. (spinner/reference/fields-specification/image-update-policy)= - **Image update policy** `options` - **`Description`**: Behavior của hệ thống khi container có version mới - **`Options`**: - *On request*: Người chùng check update trên giao diện quản lý và lựa chọn có update container lên version mới hay không - *Auto*: hệ thống sẽ update version một cách tự động sau một khoảng thời gian(1 giờ). - **`Default value`**: On request. ```{note} Tuy nhiên, việc lựa chọn *Update Image Policy* chịu sự ràng buộc bởi *Rollback policy*. Nếu User *Rollback policy* là *Enable* thì user chỉ được lựa chọn *Image update policy* là *On request*; còn nếu user lựa chọn chính sách *Rollback* là *Never* thì user có thể lựa chọn *Image update policy* là *On request* hoặc *Auto* đều được. ``` - **Command/ Working directory/Arguments** `string` - **`Description`**: Hệ thống sẽ thực thi Command với các Arguments do người dùng cài đặt trong Working directory(không có sẵn sẽ tự tạo). Nếu không thể thực thi được command, Sun Container Spinner sẽ lỗi và restart. ## Hardware config * **CPU** `options` - **`Description`**: Cấu hình CPU * **RAM** `options` - **`Description`**: Cấu hình Memory * **Temporary storage** `number` - **`Description`**: Dung lượng Temporary storage - **`Default value`**: Sun Container Spinner default là 2GB ## Environment Cài đặt các biến môi trường cho mỗi container. Xem thêm chi tiết về Environment {ref}`tại đây` ## Storage resource Người dùng có thể cài đặt thêm các phân vùng lưu trữ lâu dài(persistent volume) để lưu trữ dữ liệu với tùy chọn Shared volume hoặc Dedicated Volume. Ngoài ra người dùng cũng có thể mount dữ liệu từ các tài nguyên Secret/ConfigMap. Chi tiết về Persistent Volume {ref}`tại đây`. Shared Volume là hình thức các container có thể sử dụng chung một volume, volume này sẽ tồn tại độc lập với các POD. Dedicated volume là hình thức các volume được sinh ra theo cấu hình cài đặt cùng với POD, nhưng khi POD bị destroy, các volume này không bị ảnh hường, người dùng cần chủ động quản lý các volume này, lần tiếp theo khi các POD được sinh ra sẽ tự nhận các dedicated volume nếu có sẵn theo thứ tự tương ứng của pod và volume(hậu tố phía sau tên của pod và volume).