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.envtệp:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
và một test.envtệ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.envhoặc test.envtệ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ì?
SecrethoặcConfigMaptà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ạoSecrettài nguyên nhưng tôi sẽ không thể xóa chúng sau khi nó đã được tạo.