Triển khai xanh-xanh là một chiến lược quản lý phát hành phần mềm được sử dụng rộng rãi. Nó liên quan đến hai môi trường phần cứng giống hệt nhau—một môi trường đang hoạt động và phục vụ người dùng trong khi môi trường kia vẫn ở chế độ chờ. Cách tiếp cận này tạo điều kiện quản lý trơn tru các bản cập nhật phần mềm và giảm thiểu nguy cơ ngừng hoạt động của hệ thống.
Mã mới ban đầu được phát hành cho các môi trường dàn dựng, nơi nó trải qua quá trình kiểm tra nghiêm ngặt. Sau khi nhóm phê duyệt mã cập nhật, cấu hình bộ định tuyến sẽ được điều chỉnh để chuyển lưu lượng ứng dụng sang môi trường sản xuất hiện tại. Nếu có bất kỳ sự cố nào xuất hiện, chúng sẽ trở lại môi trường sản xuất trước đó để tiếp tục sử dụng phiên bản phần mềm gốc.
Một số lợi ích đáng chú ý của việc triển khai xanh lam bao gồm:
Kubernetes đang ngày càng trở nên phổ biến như một môi trường để phát triển, thử nghiệm và triển khai sản xuất. Mặc dù nó đơn giản hóa việc triển khai ứng dụng, nhưng Kubernetes không cung cấp chức năng triển khai màu xanh lam-xanh lá cây tự nhiên ngay lập tức. Thay vào đó, nó cung cấp một đối tượng Triển khai cho phép cập nhật luân phiên, ở một mức độ nào đó, có thể thay thế các nhóm của ứng dụng bằng phiên bản mới nhất của nó mà không có bất kỳ thời gian ngừng hoạt động nào.
Triển khai cuốn chiếu đi kèm với những hạn chế nhất định. Chúng có thể khiến việc khôi phục trở nên khó khăn và có thể yêu cầu kiểm tra sức khỏe Kubernetes để đánh giá trạng thái của các nhóm trong quá trình triển khai. Ngoài ra, triển khai cuốn chiếu có thể mất nhiều thời gian hơn so với mẫu màu xanh lam-xanh lá cây thuần túy, trong đó quá trình chuyển đổi sang phiên bản mới diễn ra ngay lập tức.
Để triển khai hiệu quả các triển khai blue-green với Kubernetes, hãy xem xét các công cụ sau:
Argo Rollouts là một bộ mã nguồn mở gồm bộ điều khiển Kubernetes và Định nghĩa tài nguyên tùy chỉnh (CRD) bổ sung các tính năng triển khai nâng cao như triển khai blue-green và canary, thử nghiệm và các khả năng phân phối lũy tiến khác. Nó tùy chọn tích hợp với bộ điều khiển xâm nhập Kubernetes và lưới dịch vụ để quản lý lưu lượng trong quá trình cập nhật. Nó thậm chí có thể truy vấn và giải thích các số liệu từ các hệ thống khác để xác thực các chỉ số hiệu suất chính (KPI) và tự động thúc đẩy hoặc lùi các bản phát hành.
Flagger là một công cụ phân phối tiến bộ giúp tự động hóa quy trình phát hành ứng dụng chạy trên Kubernetes. Nó làm giảm nguy cơ đưa các phiên bản phần mềm mới vào sản xuất bằng cách dần dần chuyển hướng lưu lượng truy cập sang phiên bản cập nhật trong khi đánh giá các số liệu và thực hiện kiểm tra sự phù hợp. Flagger hỗ trợ nhiều chiến lược triển khai, chẳng hạn như phát hành canary, thử nghiệm A/B và triển khai xanh lam-xanh lục, đồng thời tích hợp với nhiều bộ điều khiển xâm nhập Kubernetes, lưới dịch vụ và hệ thống giám sát.
GitLab CI/CD là một nền tảng DevOps có nhiều tính năng giúp hợp lý hóa các dự án phát triển phần mềm lớn. Ngoài khả năng theo dõi vấn đề và kho lưu trữ mã, GitLab còn cung cấp khả năng tự động hóa CI/CD hỗ trợ cả triển khai được kích hoạt thủ công và triển khai theo lịch trình cho các hệ thống sản xuất Kubernetes, bao gồm các chiến lược triển khai lũy tiến như triển khai xanh lam-xanh lục.
CircleCI là một nền tảng CI/CD giúp các nhóm kỹ thuật xây dựng, thử nghiệm và triển khai phần mềm đồng thời theo dõi các thay đổi mã trong thời gian thực thông qua giao diện người dùng bảng điều khiển của nó. CircleCI hỗ trợ triển khai cho các cụm Kubernetes và tích hợp với các dịch vụ khác cho các chiến lược triển khai như cờ tính năng, triển khai xanh dương-lục và hoàng yến.
Bài viết này đã giới thiệu mẫu triển khai blue-green, các lợi ích khác nhau của nó và các tùy chọn để triển khai kỹ thuật này trong môi trường Kubernetes. Bằng cách xem xét các công cụ như Argo Rollouts, Flagger, GitLab CI/CD hoặc CircleCI, bạn có thể đạt được các bản phát hành phần mềm mượt mà hơn, giảm thiểu thời gian ngừng hoạt động và cải thiện trải nghiệm tổng thể cho cả nhà phát triển và người dùng cuối trong môi trường Kubernetes của bạn. Khi bạn khám phá những công cụ này, hãy xem xét các yêu cầu duy nhất trong quy trình phát triển phần mềm của bạn để xác định giải pháp phù hợp nhất với nhu cầu của nhóm bạn.