Bài 35. Triển khai CI/CD lên Kubernetes
"Mỗi lần có phiên bản mới, bạn vẫn SSH vào server rồi chạy
docker pullvàkubectl apply? Điều đó có ổn khi dự án có hàng chục lập trình viên?"
Đó chính là lúc CI/CD phát huy sức mạnh.
1. CI/CD là gì?
CI/CD là quá trình tự động hóa việc kiểm tra, xây dựng và triển khai ứng dụng.
Thay vì làm mọi thứ bằng tay, bạn chỉ cần push code lên Git, phần còn lại sẽ được hệ thống thực hiện.
Một quy trình điển hình sẽ như sau:
Developer
│
▼
Git Push
│
▼
CI Pipeline
- Chạy Unit Test
- Build Docker Image
- Push Image lên Registry
│
▼
CD Pipeline
- Cập nhật Kubernetes
│
▼
Deployment Rolling Update
│
▼
Người dùng sử dụng phiên bản mới
Chỉ với một lần git push, ứng dụng có thể được cập nhật lên Kubernetes mà không cần đăng nhập vào server.
2. CI và CD khác nhau như thế nào?
Continuous Integration (CI)
CI tập trung vào việc kiểm tra chất lượng mã nguồn.
Mỗi khi có Pull Request hoặc Push Code, hệ thống sẽ tự động:
- Build project
- Chạy Unit Test
- Kiểm tra coding style
- Build Docker Image
Nếu có lỗi, pipeline sẽ dừng ngay lập tức.
Continuous Delivery / Deployment (CD)
Sau khi CI thành công, bước tiếp theo là triển khai ứng dụng.
CD sẽ:
- Lấy Docker Image vừa build
- Cập nhật Deployment trên Kubernetes
- Kubernetes thực hiện Rolling Update
- Người dùng sử dụng phiên bản mới mà gần như không bị gián đoạn
3. Một quy trình CI/CD đơn giản
Giả sử bạn sửa một lỗi nhỏ trong ứng dụng.
Thay vì làm thủ công:
docker build
docker push
kubectl apply
kubectl rollout status
Bạn chỉ cần:
git push origin main
Phần còn lại sẽ được pipeline tự động xử lý.
Đó là lý do CI/CD giúp giảm sai sót và tiết kiệm rất nhiều thời gian.
4. Những công cụ phổ biến
Có rất nhiều công cụ để xây dựng CI/CD:
- GitHub Actions
- GitLab CI/CD
- Jenkins
- Azure DevOps
- CircleCI
Tất cả đều có chung mục tiêu: tự động hóa quá trình triển khai phần mềm.
5. Kubernetes đóng vai trò gì?
CI/CD không thay thế Kubernetes.
Hai công nghệ này bổ trợ cho nhau:
- CI tạo ra Docker Image mới.
- CD yêu cầu Kubernetes triển khai phiên bản đó.
- Kubernetes đảm bảo việc cập nhật diễn ra an toàn bằng Rolling Update và Rollback nếu cần.
Nói cách khác:
CI/CD chịu trách nhiệm đưa ứng dụng đến Kubernetes, còn Kubernetes chịu trách nhiệm chạy ứng dụng một cách ổn định.
Tổng kết
CI/CD giúp việc triển khai ứng dụng trở nên nhanh chóng, nhất quán và ít sai sót hơn. Thay vì thực hiện hàng loạt lệnh thủ công sau mỗi lần sửa code, bạn chỉ cần push code lên Git, toàn bộ quá trình kiểm thử, build và triển khai sẽ diễn ra tự động.
Ở bài tiếp theo, chúng ta sẽ tìm hiểu một cách triển khai hiện đại hơn đang được rất nhiều doanh nghiệp sử dụng: GitOps. Thay vì pipeline trực tiếp cập nhật Kubernetes, mọi thay đổi sẽ được quản lý thông qua Git, giúp việc triển khai trở nên minh bạch, dễ kiểm soát và dễ khôi phục hơn.
All rights reserved