Задний план:
В настоящее время мы используем 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 (например, при определении пода) вместо их жесткого кодирования следующим образом:
apiVersion: v1
вид: Стручок
метаданные:
ярлыки:
контекст: docker-k8s-lab
имя: mysql-pod
имя: mysql-pod
спецификации:
контейнеры:
-
env:
-
имя: MYSQL_USER
значение: mysql
-
имя: MYSQL_PASSWORD
значение: mysql
-
имя: MYSQL_DATABASE
значение: образец
-
имя: MYSQL_ROOT_PASSWORD
значение: supersecret
изображение: "mysql: latest"
имя: mysql
порты:
-
containerPort: 3306
- Если это невозможно, каков предлагаемый подход?
Secretили,ConfigMapпотому что это временно и используется для тестирования. У меня ограниченные права доступа в кластере k8s. Возможно, я смогу создатьSecretресурс, но я не смогу удалить его, когда он уже будет создан.