배경:
현재 우리는 서비스에 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리소스 를 생성 할 수는 있지만 이미 생성 된 후에는 삭제할 수 없습니다.