Lý lịch:
Hiện tại, chúng tôi đang sử dụng Docker và Docker Compose cho các dịch vụ của mình. Chúng tôi đã ngoại hóa cấu hình cho các môi trường khác nhau thành các tệp xác định các biến môi trường được ứng dụng đọc. Ví dụ một prod.env
tệp:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
và một test.env
tệp:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
Vì vậy, chúng ta có thể chỉ cần sử dụng prod.env
hoặc test.env
tệp khi khởi động vùng chứa:
docker run --env-file prod.env <image>
Ứng dụng của chúng tôi sau đó chọn cấu hình của nó dựa trên các biến môi trường được xác định trong prod.env
.
Câu hỏi:
- Có cách nào để cung cấp các biến môi trường từ một tệp trong Kubernetes (ví dụ: khi xác định một nhóm) thay vì mã hóa cứng chúng như thế này không:
apiVersion: v1 loại: Pod metadata: nhãn: ngữ cảnh: docker-k8s-lab tên: mysql-pod tên: mysql-pod đặc điểm kỹ thuật: hộp đựng: - vi: - tên: MYSQL_USER giá trị: mysql - tên: MYSQL_PASSWORD giá trị: mysql - tên: MYSQL_DATABASE giá trị: mẫu - tên: MYSQL_ROOT_PASSWORD giá trị: supersecret hình ảnh: "mysql: mới nhất" tên: mysql các cổng: - containerPort: 3306
- Nếu điều này là không thể, cách tiếp cận được đề xuất là gì?
Secret
hoặcConfigMap
tài nguyên vì đây chỉ là tạm thời và sử dụng để thử nghiệm. Tôi có quyền hạn chế trong cụm k8s. Tôi có thể tạoSecret
tài nguyên nhưng tôi sẽ không thể xóa chúng sau khi nó đã được tạo.