210628 TIL
쿠버네티스
ConfigMap, Secret
개발환경과 배포환경에서 달라지는 cofig에 대해서 일일이 이미지에 그 정보를 넣어 관리하는 것이 아니라 외부에서 관리할 수 있도록 도와주는 것이 바로 ConfigMap과 Secret이라는 것이다.
분리해야되는 일반적인 상수들을 모아서 ConfigMap에 담고, 보안적인 관리가 필요한 것들은 Secret에 담는다. 그리고 이걸 참조해서 파드가 생성되도록 하면 되는 것이다.
ConfigMap: 키와 밸류로 넣으면 된다.
Secret : 보안적인 이슈가 있어서 메모리에 올라가며 1메가로 용량을 제한한다. literal로 만들때에 Base64로 값을 만들어서 넣어야하며 팟이 생성될때 자동으로 디코딩해서 만들어진다.
ConfigMap, Secret 파일을 만들어서 할 수 도 있는데 얘는 쿠버네티스 대시보드에서는 안되서 kubectl 명령어를 통해 진행해야한다. Secret의 경우 파일 안의 내용이 읽혀지면서 Base64로 변경이 되기 때문에 주의해야함. 미리 Base64로 만들어 놓으면 안됨.
또는 아예 볼륨을 마운트해서 그 볼륨 안에 파일을 넣고 거기서 팟을 생성해도 된다.
env 형태로 파일을 이용해 값을 넣는 것은 팟 생성 후 파일이 변경되어도 팟이 다시 생성되지 않는 한 변경이 안되고
volume mount 형태로 파일을 이용해 값을 넣는 것은 팟이 죽었다 살아나지 않아도 변경된대로 사용이 가능하다.
Namespace, ResourceQuota, LimitRange
팟이 사용하고자 하는 자원의 양의 합을 네임스페이스마다 또는 클러스터마다 설정을 해두는 것 = ResourceQuota.
팟에서 요구하는 자원량이 일정 한계를 넘으면 해당 네임스페이스 또는 클러스터에 생성이 되지 않도록 LimitRange를 걸 수도 있다.
한 네임스페이스 안에서는 팟 오브젝트의 uuid가 달라도(각기 다른 객체일지라도) 이름이 같으면 안된다.
서로 다른 네임스페이스에 있다면 팟끼리 연결이 안된다. 물론 노드나 퍼시스턴트볼륨(PV)과 같이 공용으로 사용하는 것도 있긴 함. 네임스페이스를 지우면 안에 있는 자원들도(팟, 서비스 등) 지워지므로 유의.
request.memory와 limits.memory가 뭐가 다른거임?
자원을 제한할때 cpu, memory, storage를 제한할 수 있고, 여러 오브젝트들을 제한할 수 있음.
LimitRange
min : 최솟값
max: 최댓값
maxLimitRequestRatio: 최솟값과 최댓값의 비율
defaultRequest, default: requests와 limits가 명시되지 않은 팟이 생성될때 해당 값들을 설정해줌.
댓글을 작성해보세요.