Tháng 4 vừa rồi nghỉ Ép Soft, chuyển qua xây dựng ban công nghệ cho cty mới công việc khá thú vị, nhiệm vụ chính của ban công nghệ là thúc đẩy chuyển đổi số, ứng dụng công nghệ trong hoạt động sản xuất và kinh doanh của doanh nghiệp.

Qua khảo sát ban đầu, hiện tại đơn vị chỉ sử dụng một dịch vụ công nghệ duy nhất là mail doanh nghiệp để trao đổi công việc với đối tác. Như vậy điều cần làm đầu tiên là phải xây dựng được cơ sở hạ tầng công nghệ cơ bản, tạo tiền đề để triển khai các dịch vụ số cho doanh nghiệp.

Yêu cầu

Ban công nghệ đã làm việc với các phòng ban để tìm hiểu nhu cầu của từng bộ phận và đã tóm gọn lại được một số yêu cầu cơ bản:

  • Host wordpress cho hệ thống web (5 website)
  • Xây dựng và phát triển hệ thống ERP + CRM
  • Mail server dự phòng
  • Sever cho DEV team
  • Hệ thống knowledge base cho DEV team
  • Hệ thống CI/CD cho Dev team

Thực trạng

Với yêu cầu trên, phòng giải pháp đưa ra nhiều phương án:

  1. Sử dụng nền tảng điện toán đám mây: AWS, Google cloud, ..
  2. Thuê máy chủ từ Viettel, FPT
  3. Tự xây dựng cơ sở hạ tầng CNTT riêng

Hai phương án 1 và 2 khá là đơn giản để triển khai và áp dụng trong thời gian ngắn, tuy nhiên nhược điểm là chi phí ban đầu và chi phí duy trì hoạt động khá tốn kém. Việc thuyến phục doanh nghiệp truyền thống với quy mô vừa và nhỏ sẵn sàng đầu tư số tiền lớn để triển khai hệ thống CNTT là khá khó khăn, nên các để xuất kinh phí cho 2 phương án đó đều bị từ chối. Cuối cùng không có lựa chọn nào khác, phải triển khai phương án thứ 3 với điều kiện thiết bị:

  • 01 static ip + có quyền quản trị router

May mắn, gói cước Internet sử dụng của đơn vị được cấp 01 static IP do việc xây dựng 1 mail server đòi hỏi phải có để tạo PTR record.

Triển khai

Đầu tiên, cần tạo 1 máy chủ và mở port router để trỏ static ip vào máy chủ đó

Máy chủ

  • Phần cứng: Tận dụng 01 desktop Ram 16Gb, core-i5, kết nối wifi ( vị trí phòng IT k có mạng lan)
  • Phần mềm: Máy chủ chạy Ubuntu và sử dụng Kubernetes platform

Router

  • Bind IP to MAC: do máy chủ dùng kết nối wifi nên cần phải set IP cố định tương ứng với MAC address của thiết bị
  • Port forwarding: chuyển các kết nối đến máy chủ
  • Mở port: cho phép traffic từ bên ngoài đổ về máy chú, thông thường các port cho web server là 80 và 443, cho mailserver là 25, 110, 465,…
  • Tạo PTR record: trong việc xây dựng 1 mail server, điều kiện cần là cần phải có 1 PTR record hợp lệ. Gói Internet hiện tại có 1 IP tĩnh như lại trỏ tới địa chỉ mặc định của nhà cung câp dịch vụ (ISP). (Mình phải mất thời gian gọi điện giải thích các thứ, gặp nhiều nhân viên hỗ trợ không hiểu hoặc không có kiến thức về PTR nên khá mất thời gian). Kết quả IP tĩnh đã trỏ về host: mailserver.domain.com
  • Vào phần quản lý tên miền trỏ domain và subdomain về static IP

Phần mềm

1. Cài Kubernetes trên Ubuntu

Để dễ quản lý và tìm hiểu, mình sử dụng Ubuntu desktop, cài Microk8s, Docker. Sau khi cài xong mình enable một số addon và thực hiện một vài thiết lập khác chi tiết xem tại bài viết: Cài đặt Kubernetes với Microk8s

2. Cài Ingress Nginx trên Kubernetes On-premise (1 node)

Khác mới Kubernetes ở chế độ Multiple nodes mình có chỉnh sửa 1 vài cấu hình thì mới hoạt động được. Chi tiết xem thêm: Cài Ingress Nginx trên Kubernetes On-premise

3. Deploy Zimbra trên Kubernetes làm Mailserver

Zimbra là Mailserver cho phiên bản Open source với nhiều tính năng mạnh mẽ và được nhiều doanh nhiệp sử dụng. Hơn nữa mình cần 1 thiết lập LDAP server để phân quyền cho các dich vụ khác và Zimbra có hỗ trợ LDAP. Chi tiết xem thêm: Cài đặt zimbra mail server trên Kubernetes cluster

4. Deploy Nextcloud trên Kubernetes và kết nối Zimbra LDAP

Đây được sử dụng như 1 Cloud nội bộ của công ty, tương tích với account email, người dùng có thể đăng nhập Cloud bằng tài khoản email. Chi tiết về hướng dẫn triển khai xây dựng NextCloud.

5. Deploy Odoo trên Kubernetes và kết nối với Zimbra LDAP

Hệ thống ERP & CRM, sẽ được phát triển trong tương lai

6. Deploy Wiki.js trên Kubernetes và kết nối Zimbra LDAP

Hệ thống Knowleage base cho DEV team

7. Deploy WordPress trên Kubernetes

Triển khai hệ thống website cho các đơn vị thành viên

8. Deploy Jenkins master slave trên Kubernetes

Hệ thống CI/CD cho Dev team