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.envplik:
ENV_VAR_ONE=Something Prod
ENV_VAR_TWO=Something else Prod
i test.envplik:
ENV_VAR_ONE=Something Test
ENV_VAR_TWO=Something else Test
W ten sposób możemy po prostu użyć pliku prod.envor test.envpodczas 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?
Secretlub,ConfigMapponieważ jest to tylko tymczasowe i używane do testowania. Mam ograniczone uprawnienia w klastrze k8s. Być może uda mi się utworzyćSecretzasób, ale nie będę mógł ich usunąć, gdy zostanie już utworzony.