Điều gì được coi là một phương pháp hay với K8S để quản lý nhiều môi trường (QA, Staging, Production, Dev, v.v.)?
Ví dụ: giả sử một nhóm đang làm việc trên một sản phẩm yêu cầu triển khai một vài API, cùng với một ứng dụng giao diện người dùng. Thông thường, điều này sẽ yêu cầu ít nhất 2 môi trường:
- Giai đoạn: Để lặp lại / thử nghiệm và xác thực trước khi phát hành cho khách hàng
- Sản xuất: Đây là môi trường mà khách hàng có quyền truy cập. Nên chứa các tính năng ổn định và đã được thử nghiệm tốt.
Vì vậy, giả sử nhóm đang sử dụng Kubernetes, cách thực hành tốt để lưu trữ những môi trường này là gì? Cho đến nay, chúng tôi đã xem xét hai lựa chọn:
- Sử dụng một cụm K8s cho mỗi môi trường
- Chỉ sử dụng một cụm K8s và giữ chúng trong các không gian tên khác nhau.
(1) Có vẻ như các lựa chọn an toàn nhất vì nó giảm thiểu rủi ro có thể xảy ra lỗi do con người và hỏng hóc máy móc, có thể gây nguy hiểm cho môi trường sản xuất. Tuy nhiên, điều này đi kèm với chi phí của nhiều máy chủ hơn và chi phí quản lý cơ sở hạ tầng nhiều hơn.
(2) Có vẻ như nó đơn giản hóa cơ sở hạ tầng và quản lý triển khai vì chỉ có một cụm duy nhất nhưng nó đặt ra một số câu hỏi như:
- Làm thế nào để đảm bảo rằng một sai lầm của con người có thể ảnh hưởng đến môi trường sản xuất?
- Làm thế nào để đảm bảo rằng tải cao trong môi trường dàn dựng sẽ không làm giảm hiệu suất trong môi trường sản xuất?
Có thể có một số mối quan tâm khác, vì vậy tôi liên hệ với cộng đồng K8s trên StackOverflow để hiểu rõ hơn về cách mọi người đang đối phó với những loại thách thức này.