배경:
현재 우리는 서비스에 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 값 : 극비 이미지 : "mysql : latest" 이름 : mysql 포트 : - containerPort : 3306
- 이것이 가능하지 않은 경우 제안 된 접근 방식은 무엇입니까?
Secret
또는ConfigMap
리소스는 일시적이고 테스트에 사용하기 때문에 만들고 싶지 않습니다 . k8s 클러스터에 제한된 권한이 있습니다.Secret
리소스 를 생성 할 수는 있지만 이미 생성 된 후에는 삭제할 수 없습니다.