Передумови:
В даний час ми використовуємо 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
ресурс, але не зможу видалити його, коли він уже створений.