Tính không thay đổi là điều tuyệt vời để nhận ra tính nhất quán, khả năng dự đoán và độ tin cậy và tôi không thấy có lý do gì để mình không cố gắng đạt được tính không thay đổi ở cấp hệ điều hành khi triển khai ứng dụng của mình trên VPS Linux từ các nhà cung cấp đám mây khác nhau trên khắp thế giới. thế giới. Với các công cụ như Packer để giúp tạo hình ảnh hệ điều hành, đây dường như cũng là cách nên làm.
Đối với một số nhà cung cấp đám mây (ví dụ: Digital Ocean), tôi có thể tạo hình ảnh cục bộ ở định dạng qcow2 hoặc raw, sau đó tải hình ảnh hoàn chỉnh lên nhà cung cấp đám mây để triển khai khi khởi tạo VPSâes mới.Đây có vẻ là lựa chọn tốt nhất.
Nhưng các nhà cung cấp đám mây khác (ví dụ: Hetzner ở Đức) không hỗ trợ nhập hình ảnh hệ điều hành của riêng bạn - thay vào đó bạn phải tạo hình ảnh trên cơ sở hạ tầng của họ dựa trên một trong các hình ảnh nguồn của họ, sau đó bạn có thể chụp nhanh bản cài đặt cuối cùng thành một bản có thể sử dụng lại hình ảnh, khi mọi thứ được cấu hình chính xác. Trên thực tế, đây cũng là công việc của Hetzner Cloud Builder từ Packer.
Nhưng làm thế nào để đảm bảo rằng hình ảnh cuối cùng của Hetzner có chính xác cùng một cài đặt CentOS 8 (xuống cùng một bộ gói RPM đã cài đặt chính xác với cùng số phiên bản chính xác) như đang chạy trên tất cả các nhà cung cấp dịch vụ đám mây khác?
Tôi tưởng tượng rằng giải pháp có thể là một loại công cụ khai báo nào đó, lấy danh sách các gói RPM và số phiên bản liên quan, đồng thời đưa hệ thống đích phù hợp với danh sách này - đảm bảo rằng mọi gói RPM bị thiếu đều được cài đặt đúng phiên bản, loại bỏ phần thừa gói RPM, nâng cấp các gói RPM cũ hơn và hạ cấp các gói RPM mới hơn để đảm bảo rằng phiên bản yêu cầu đã được cài đặt.
Có một công cụ như vậy tồn tại hay tôi nên nghĩ hoàn toàn khác về điều này?
Một số người có thể lập luận rằng các gói CentOS RPM phải luôn được nâng cấp lên phiên bản mới nhất hiện có, nhưng sau đó tôi không thể đảm bảo rằng tất cả các nhà cung cấp đám mây đang chạy cùng một bản cài đặt hệ điều hành - điều này có thể ảnh hưởng đến khả năng dự đoán và độ tin cậy của dịch vụ của tôi.
Thay vào đó, tôi muốn có thể kiểm tra kỹ lưỡng thiết lập hoàn chỉnh (ứng dụng OS +) trước khi triển khai nó cho bất kỳ nhà cung cấp đám mây nào và sau đó việc triển khai sẽ giống nhau trên tất cả các nhà cung cấp đám mây. Đây là cách chúng tôi thực hiện mọi việc ở cấp ứng dụng bằng cách sử dụng hình ảnh Docker và tôi không thể hiểu tại sao chúng tôi nên chấp nhận ít hơn ở cấp hệ điều hành.
Bất kỳ thông tin đầu vào nào từ các đồng nghiệp DevSecOps của bạn về cách đạt được những mục tiêu này?