Задний план:
В настоящее время мы используем 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
ресурс, но я не смогу удалить его, когда он уже будет создан.