Tło:
Obecnie w naszych usługach używamy Docker i Docker Compose. Udostępniliśmy konfigurację dla różnych środowisk do plików definiujących zmienne środowiskowe odczytywane przez aplikację. Na przykład prod.env
plik:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
i test.env
plik:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
W ten sposób możemy po prostu użyć pliku prod.env
or test.env
podczas uruchamiania kontenera:
docker run --env-file prod.env <image>
Nasza aplikacja następnie wybiera swoją konfigurację na podstawie zmiennych środowiskowych zdefiniowanych w prod.env
.
Pytania:
- Czy istnieje sposób na zapewnienie zmiennych środowiskowych z pliku w Kubernetes (na przykład podczas definiowania poda) zamiast ich zakodowania na sztywno w następujący sposób:
apiVersion: v1 rodzaj: Pod metadane: etykiety: kontekst: docker-k8s-lab nazwa: mysql-pod nazwa: mysql-pod specyfikacja: pojemniki: - env: - nazwa: MYSQL_USER wartość: mysql - nazwa: MYSQL_PASSWORD wartość: mysql - nazwa: MYSQL_DATABASE wartość: próbka - nazwa: MYSQL_ROOT_PASSWORD wartość: supersecret image: "mysql: najnowsze" nazwa: mysql porty: - kontenerPort: 3306
- Jeśli nie jest to możliwe, jakie jest sugerowane podejście?
Secret
lub,ConfigMap
ponieważ jest to tylko tymczasowe i używane do testowania. Mam ograniczone uprawnienia w klastrze k8s. Być może uda mi się utworzyćSecret
zasób, ale nie będę mógł ich usunąć, gdy zostanie już utworzony.