Tự động triển khai Blue / Green với Argo Rollouts

Tram Ho

Trong bài viết này, chúng ta sẽ tìm hiểu cách tự động triển khai Blue / Green với Argo Rollouts.

Argo phát hành

Argo Rollouts là Bộ điều khiển Kubernetes và bộ Định nghĩa tài nguyên tùy chỉnh (CRD) cung cấp các tính năng nâng cao để triển khai ứng dụng trên Kubernetes so với Đối tượng triển khai Kubernetes bản địa.

Argo Rollouts cung cấp các khả năng triển khai như phân tích màu xanh lam, màu hoàng yến, màu hoàng yến, thử nghiệm và các tính năng phân phối tiến bộ cho Kubernetes.

Vì Argo Rollouts là một tập hợp các CRD, chúng tôi cần cài đặt chúng vào Kubernetes Cluster. Chạy các lệnh sau để cài đặt Argo Rollouts.

Kiểm tra xem chúng tôi đã cài đặt thành công chưa.

Chiến lược triển khai Argo Rollouts

Để sử dụng Argo Rollouts, chúng tôi khai báo một tài nguyên có thuộc tính apiVersionargoproj.io/v1alpha1loạiRollout , như bên dưới:

Cấu hình của Argo Rollouts có thuộc tính chiến lược để chúng tôi chọn chiến lược triển khai mà chúng tôi muốn, với hai giá trị blueGreenand canary.

Xem chi tiết tại đây Thông số kỹ thuật giới thiệu . Đừng cố gắng hiểu tất cả các thuộc tính ngay bây giờ.

Trong bài này, chúng ta sẽ tìm hiểu về màu xanh lam / xanh lá cây.

Thực tiễn

Tôi sử dụng Minikube để chạy Kubernetes Cluster cho bản demo. Tạo một tệp có tên bluegreen-rollout.yaml .

Tất cả các thuộc tính của Rollout đều giống như một Đối tượng triển khai gốc, chỉ có thuộc tính chiến lược là khác. Trong tệp trên, chúng tôi khai báo 3 thuộc tính:

  • autoPromotionEnabled: false – Cho biết việc phát hành có nên tự động quảng bá ReplicaSet mới cho dịch vụ đang hoạt động hay chuyển sang trạng thái bị tạm dừng. Nếu không được chỉ định, giá trị mặc định là true.
  • activeService: bluegreen-demo – Tham chiếu đến dịch vụ mà việc triển khai sửa đổi làm dịch vụ đang hoạt động.
  • previewService: bluegreen-demo-preview – Tên của dịch vụ mà bản phát hành sửa đổi làm dịch vụ xem trước.

Tiếp theo, chúng tôi tạo một tệp có tên service.yaml .

Hai thuộc tính Dịch vụ giống nhau ngoại trừ thuộc tính name. Tiếp theo, chúng tôi tạo một Đối tượng Rollout.

Khi chúng tôi tạo Bản giới thiệu, Bản phát hành Argo mặc nhiên tạo Bộ bản sao cho bản sửa đổi hiện tại. Hãy kiểm tra:

Đảm bảo rằng Replica Set và Pod đang chạy, tiếp theo, chúng tôi tạo một Dịch vụ.

Tại thời điểm này, cả bluegreen-demobluegreen-demo-preview đều trỏ đến cùng một ReplicaSet như bluegreen-demo-fbc7b7f55 .

Hãy kiểm tra, chúng tôi chạy các lệnh sau để lấy URL của cả hai dịch vụ.

Mở trình duyệt, chúng ta sẽ thấy giao diện người dùng bên dưới.

Bây giờ, chúng ta thay đổi thuộc tính image của Rollout Object.

Đang cập nhật đối tượng giới thiệu.

Tại thời điểm này, Argo Rollouts sẽ tạo một ReplicaSet mới cho cấu hình mới.

Sau đó, dịch vụ bluegreen-demo-preview được sửa đổi để trỏ đến ReplicaSet mới. Truy cập vào địa chỉ dịch vụ xem trước sẽ thấy một giao diện người dùng khác.

Và dịch vụ bluegreen-demo không thay đổi.

Sau khi chúng tôi kiểm tra ReplicaSet mới và thấy rằng tất cả đều ổn, tiếp theo, chúng tôi quảng bá bản sửa đổi mới của ReplicaSet bằng cách cập nhật dịch vụ bluegreen-demo để trỏ đến nó, chúng tôi chạy lệnh sau (không làm theo, chúng tôi sẽ sử dụng cách khác ) .

Bây giờ, Argo Rollouts cập nhật dịch vụ bluegreen-demo để trỏ đến ReplicaSet mới, sau khi đợi (mặc định là 30 giây), ReplicaSet cũ được thu nhỏ lại.

Bảng điều khiển giao diện người dùng

Theo tôi, DevOps Engineers không nên làm công việc “quảng bá” ReplicaSet mới, nhiệm vụ của chúng ta chỉ là xây dựng CI / CD để Bản giới thiệu có thể được cập nhật khi có phiên bản mới của ứng dụng. Hãy để nó cho Kỹ sư QC.

Nhưng QC không thể chạy CLI nên chúng ta cần có một dashboard để QC thực hiện việc này. May mắn thay, Argo Rollout cung cấp cho chúng tôi một bảng điều khiển, chúng tôi có thể bật bảng điều khiển này bằng cách sử dụng kubectl hoặc sử dụng hình ảnh vùng chứa quay.io/argoproj/kubectl-argo-rollouts .

Vào localhost:3100 , chúng ta sẽ thấy bảng điều khiển của Argo Rollouts.

Chọn để bluegreen-demo .

Bạn sẽ thấy nút Quảng bá , người bấm vào nút này sẽ là QC, nếu có gì sai sót thì QC sẽ chịu trách nhiệm =)))), chúng ta cùng bấm vào nút quảng bá nhé.

Nhấp vào Chắc chắn.

Bây giờ bạn truy cập vào cả dịch vụ bluegreen-demobluegreen-demo-preview chúng ta sẽ thấy cùng một giao diện người dùng.

Xâm nhập

Nhập cấu hình để truy cập công khai nếu bạn cần.

Xong.

Sự kết luận

Vì vậy, chúng tôi đã học cách tự động triển khai Blue / Green với Argo Rollouts, như bạn có thể thấy, nó cũng đơn giản. Nếu có thắc mắc hoặc cần giải đáp thêm, bạn có thể hỏi trong phần bình luận bên dưới.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo