두 오브젝트를 사용해야 하는 상황
개발환경에 A라는 서비스가 있고
이 서비스에는 일반접근과 보안접근을 지원하고 있다. 개발 환경에서는 보안접근을 해제할 수 있는 옵션이 있다.
보안접근을 한다면 접근 유저와 키를 세팅할 수도 있다.
사용환경으로 배포를 해야 한다면
다시 보안접속으로 설정을 해야하고
유저와 키값도 바꿔주어야 한다.
이 값들은 컨테이너 안에 있는 서비스 이미지에 들어있는 값이여서
이 내용을 바꾼다는 건
개발환경과 사용환경의 컨테이너 이미지를 각각 관리해야 겠다는 의미이다.
보통 환경에 따라 변하는 값들은 외부에서 결정을 할 수 있게 한다.
그걸 도와주기 위한게 이 두 오브젝트이다.
내가 분리해야되는 일반적인 상수들을 모아 ConfigMap을 만들고
Key와 같이 보안적인 관리가 필요한 것을 모아 Secret을 만든다.
Pod생성 시 두 오브젝트를 연결할 수 있는데 연결하면 컨테이너의 환경변수에
두 오브젝트 데이터가 들어가고 A 서비스 입장에서는 이 환경변수 값을 읽어 로직을 처리하면 된다.
1.Env(Literal) 데이터로 상수를 넣음
ConfigMap : 키와 벨류로 구성 필요한 상수를 정의를 해 놓으면
파드를 생성할때 ConfigMap을 가져와 컨테이너 안의 환경변수에
세팅이 가능 (Secret도 마찬가지이나 Value를 넣을때 Base64로 인코딩
파드로 주입될때 자동으로 디코딩 )
2.Env(File) 데이터로 파일을 넣음
file을 통째로 ConfigMap에 담을 수 있다.
파일 이름 : Key
파일 내용 : Value
파드의 환경변수에 넣을 떄 그대로 넣으면 Key가 파일이름이 되어 이상하니
Key를 새로 정의해서 넣음
ConfigMap의 내용 변경 시 data가 변해도 Pod의 환경변수 값에는 영향이 없다.
Pod가 죽어 재생성 되어야지만 변경된 값을 다시 받아와 수정이 가능하다.
3.Volume Mount(File) 파일을 넣을때 환경변수로 세팅x ,볼륨을 마운트 해서 사용
File 을 ConfigMap 에 담는법 까지는 동일 파드를 만들때 컨테이너 안에
Mount path를 정의하고 path안에 파일을 마운팅 할 수 있다.
ConfigMap의 내용 변경 시 data가 변하ㅏ면 Pod에 마운팅 된 내용도
변하게 된다.
'kubernetes' 카테고리의 다른 글
DemonSet, Job, CronJob (0) | 2023.08.10 |
---|---|
Deployment (0) | 2023.08.10 |
Pod-Lifecycle (0) | 2023.08.10 |
Namespace, ResourceQuota, LimitRange (0) | 2023.08.10 |
Service (0) | 2023.08.10 |