0

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 pullkubectl 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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí