Передумови:
В даний час ми використовуємо Docker і Docker Compose для своїх послуг. Ми екстерналізували конфігурацію для різних середовищ у файли, що визначають змінні середовища, які читає програма. Наприклад prod.envфайл:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
і test.envфайл:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
Таким чином, ми можемо просто використовувати файл prod.envабо test.envпри запуску контейнера:
docker run --env-file prod.env <image>
Потім наш додаток визначає свою конфігурацію на основі змінних середовища, визначених у prod.env.
Запитання:
- Чи є спосіб надати змінні середовища з файлу в Kubernetes (наприклад, при визначенні pod) замість жорсткого їх кодування таким чином:
apiVersion: v1
вид: Под
метадані:
етикетки:
контекст: docker-k8s-lab
назва: mysql-pod
ім'я: mysql-pod
специфікація:
контейнери:
-
env:
-
ім'я: MYSQL_USER
значення: mysql
-
ім'я: MYSQL_PASSWORD
значення: mysql
-
ім'я: MYSQL_DATABASE
значення: зразок
-
ім'я: MYSQL_ROOT_PASSWORD
значення: суперсекрет
зображення: "mysql: останнє"
ім'я: mysql
порти:
-
контейнер Порт: 3306
- Якщо це неможливо, який запропонований підхід?
SecretабоConfigMapресурс, оскільки це лише тимчасово і використовується для тестування. У мене обмежені дозволи в кластері k8s. Можливо, я зможу створитиSecretресурс, але не зможу видалити його, коли він уже створений.