Tôi có một ứng dụng PHP đang chạy tốt trong Kubernetes, ngoại trừ một tình huống. "Vấn đề" là ứng dụng có thể được mở rộng bằng plugin. Trong trường hợp này, chúng tôi chỉ cần thêm plugin vào vùng chứa, xây dựng lại vùng chứa và triển khai lại.
Lần tới khi đăng nhập, Quản trị viên cần xác nhận việc cài đặt plugin. Càng xa càng tốt. Nhưng mà! Vấn đề của chúng tôi là chúng tôi không thể gỡ cài đặt các plugin này nữa vì các plugin đang tạo các bảng và mục nhập (dành riêng cho plugin) trong các bảng khác nhau trong cơ sở dữ liệu.
Trong quá trình gỡ cài đặt, plugin sẽ xóa các bảng, v.v. Nhưng vì ứng dụng của chúng tôi nằm trong nhóm, nên các tệp trong hệ thống tệp vẫn hoạt động. Vì vậy, sau khi tải lại trang, ứng dụng sẽ tìm thấy plugin mới và sẽ cài đặt lại.
Về cơ bản, sau khi xóa một plugin, chúng tôi cần xây dựng lại vùng chứa không có plugin và triển khai lại. Sau đó, chúng tôi có thể xóa plugin tiếp theo, xây dựng lại vùng chứa, v.v... nhưng đó không phải là giải pháp.
Vì vậy, chúng tôi nghĩ rằng phải có một cách khác.Giải pháp tốt nhất là cài đặt nó trong một ổ đĩa, bởi vì trong trường hợp này, tất cả các nhóm đang sử dụng cùng một ổ đĩa và chúng ta có thể chia sẻ chúng giữa các nhóm php-fpm và các nhóm máy chủ web. Vì vậy, chúng ta có thể mở rộng chúng một cách độc lập với nhau. Nhưng trong trường hợp này, câu hỏi đặt ra là liệu có bất kỳ thứ gì giống như bộ chứa "thiết lập" chạy trên mỗi lần triển khai hay không. Vì vậy, bất cứ khi nào chúng tôi nâng cấp triển khai của mình, vùng chứa sẽ chạy một lần và đang gỡ cài đặt các plugin cũ/cài đặt các plugin mới/cài đặt các bản nâng cấp của ứng dụng của chúng tôi. Trong trường hợp này, các nhóm của chúng tôi chỉ cần ReadOnlyMany (ROX) và chỉ một nhóm (nhóm thiết lập) cần có quyền ghi.
Tôi biết có các bộ chứa init nhưng theo như tôi biết thì chúng chạy mỗi khi một nhóm mới được bắt đầu. Có ai có bất kỳ đề xuất nào về cách giải quyết vấn đề này hoặc đối mặt với các vấn đề tương tự không?