- Container Orchestration: Kubernetes, Docker swarm
- Database: MongoDB
- Login: OIDC Provider(Keycloak, Authentik)
- Message broker: NATS
- Email: SMTP
- File storage: Object storage (MinIO, S3, Azure storage-blob)
- Mục đích: CSDL cho tất cả backend services.
- Phiên bản khuyến nghị: 6
- Cổng: 27017
- Mục đích: Message broker cho liên lạc nội bộ (NATS)
- Phiên bản khuyến nghị: 2
- Cổng: 4222 (client), 8222 (monitoring, nếu bật)
- Gợi ý: Cấu hình file nats-server.conf để tăng kích thước payload mặc định
- Mục đích: IdP cung cấp JWKS, issuer để xác thực token
- Tuỳ chọn: Keycloak, Authentik hoặc bất kỳ OIDC provider tương thích
- Mục đích: Gửi email
- Cổng phổ biến: 25 , 587 , 465
- Mục đích: Lưu trữ file
- Tuỳ chọn: MinIO, S3
- Cổng: 9000 (API), 9001 (Console).
- Hạ tầng và hướng dẫn triển khai eHiring trên Docker Swarm với cụm gồm 1 node Manager và 2 node Worker
- Số lượng node:
1 Manager, 2 Worker.
- Cấu hình phần cứng tối thiểu cho mỗi node:
8 vCPU
16 GB RAM
≥ 700 GB SSD cho node master để chứa database và minio,≥ 100 GB SSD cho các node worker.
8 vCPU``16 GB RAM, ≥ 700 GB SSD cho node master để chứa database và minio,≥ 100 GB SSD cho các node worker.
- Lưu ý: Cấu hình ổ đĩa trên Master node cần 2 phân vùng, 1 phân vùng chung cho hệ điều hành (100GB) và 1 phân vùng riêng cho dữ liệu (phần còn lại). Mount phân vùng dữ liệu này vào thư mục
/var/lib/docker/volumes để lưu trữ dữ liệu của các container, tránh ảnh hưởng khi có vấn đề từ hệ điều hành.
- Yêu cầu phần mềm:
- Hệ điều hành: Ubuntu Server 20.04/22.04 LTS hoặc tương đương (CentOS/RHEL/AlmaLinux). Cập nhật đầy đủ, bật và cấu hình
ufw/firewall phù hợp.
- Phiên bản Docker: Docker Engine 24.x trở lên, Docker Compose v2;
- Tên miền: Cung cấp tên miền phụ (subdomain) cho eHiring, ví dụ:
ehiring.yourcompany.com.
- TLS: có sẵn chứng chỉ TLS cho tên miền đã cung cấp;
- Sau khi nhận được VMs đã được cài đặt hệ điều hành, thực hiện kiểm tra đảm bảo cấu hình nhận được là đúng theo yêu cầu.
- Thực hiện tạo, định dạng và mount phân vùng dữ liệu trên Master node vào thư mục
/var/lib/docker/volumes.
- Thực hiện update và upgrade tất cả các gói phần mềm trên hệ điều hành trên tất cả các Node.
- Cài đặt Docker theo hướng dẫn chính thức của Docker tại https://docs.docker.com/engine/install/ lên tất cả các Node.
- Init Docker Swarm trên Master node, lưu lại token
- Ở các woker node tiến hành join vào Docker Swarm theo token của master
- Cài đặt Portainer Server và Portainer Agent vào cụm Docker Swarm
- Truy cập vào giao diện Portainer để tạo các stack để deploy MongoDB, Traefik và các service của eHiring
- Cấu hình Traefik chạy trên Docker Swarm để làm reverse proxy cho eHiring, Traefik sẽ chạy trên Master node và được cấu hình port phù hợp với môi trường của khách hàng. Traefik sẽ listen trên port này và proxy requeset tới các service của eHiring tùy vào đường dẫn được cấu hình của từng service. Nếu cần thiết, cài đặt chứng chỉ TLS cho Traefik để hỗ trợ HTTPS.
- Cấu hình MongoDB trên Master Node, cài đặt các biến môi trường (initial database, user, password) cho MongoDB theo yêu cầu của eHiring. Lưu lại các cài đặt này để sử dụng trong quá trình deploy eHiring và kết nối debug sau này. Nếu khách hàng đã có MongoDB riêng, cần cung cấp thông tin kết nối (host, port, database, user, password) để cấu hình cho eHiring.
- Cài đặt và cấu hình MinIO trên Master Node để làm object storage cho eHiring. Tạo bucket mặc định (ehiring) và lưu lại các thông tin kết nối (access key, secret key, endpoint) để sử dụng trong quá trình deploy eHiring. Nếu sử dụng các dịch vụ object storage khác (S3, Azure Blob), cần cung cấp thông tin kết nối tương ứng để cấu hình cho eHiring.
- Yêu cầu các thông tin cấu hình SMTP server từ khách hàng (host, port, user, password, from email) để cấu hình cho eHiring.
- Yêu cầu Khách hàng tạo register ứng dụng dưới dạng SPA (Single Page Application) trên OIDC provider, allow scope
openid, email, profile, cấu hình redirect URL https://{tên miền}/auth/callback và cung cấp các thông tin sau cho phía eHiring:
- Client ID
- JWKS_URI
- Issuer URL
Đối với Azure AD, cần yêu cầu thêm thông tin Tenant ID, OpenID Connect metadata document để cấu hình cho eHiring.
- Cài eHiring lên hạ tầng Kubernetes có sẵn của khách hàng
- Khách hàng tạo sẵn namespace cho ehiring và cung cấp resource cho namespace đó theo yêu cầu