이미지 크기 최적화
대용량의 컨테이너 이미지를 사용하기 시작하면 몇 가지 문제에 직면하게 된다.
가장 먼저 기억해야 할 사항은 시스템의 하위 계층에서 제거된 파일이 실제 이미지에서 존재한다는 점이다.
다음 상황을 고려해보자.
- A 계층 (이름이 BigFile인 대용량 파일 포함)
- B 계층 (이름이 BigFile인 대용량 파일 제거)
- C 계층 (B 계층을 기반으로 정적 바이너리 제거)
위와 같은 상황에서는 BigFile이 더 이상 컨테이너 이미지 내에 존재하지 않는다고 생각할 것이다.
결과적으로 이미지를 실행할 경우, 해당 파일에는 더 이상 접근이 불가능하다.
그러나 실제로는 A 계층에 여전히 위치하고 있다.
즉, 더 이상 접근이 불가능한 파일임에도 전체 컨테이너 이미지의 크기에는 영향을 미치는 좋지 않은 케이스가 발생하게 된다.
따라서, 도커 등을 통해 이미지를 빌드할 때에는 기본 이미지를 적절히 잘 선택하는 것이 매우 중요하다.
이미지 보안
보안과 관련된 지름길은 없다. 운영 시스템 쿠버네티스 클러스터에서 사용할 이미지를 빌드할 때는 애플리케이션 패키징과 배포를 위한 모범 사례를 따라야 한다. 예를 들면 비밀번호가 포함된 채로 컨테이너를 빌드해서는 안 된다.
이는 이미지를 구성하는 모든 계층에 해당된다. 컨테이너 계층에서 발생하는 반직관적인 문제 중 하나는 한 계층에서 파일을 삭제해도 이전 계층에서 해당 파일이 삭제되지 않는다는 것이다. 이는 불필요한 공간을 차지할 뿐만이 아니라 올바른 도구를 사용하는 사람이라면 누구든 쉽게 접근할 수 있다.
단순히 암호가 포함된 계층으로만 구성된 이미지를 만드는 것도 가능하다.
비밀로 유지돼야 하는 정보와 이미지가 혼재해서는 안 된다. 그럴 경우 쉽게 공격 받을 수 있으며 회사나 부서 전체에 치명적인 타격을 줄 수 있다.
또한 컨테이너 이미지는 개별 애플리케이션 실행에만 초점을 맞추고 있기 때문에 컨테이너 이미지 내의 파일을 최소화하는 것이 좋다.
이미지에 추가된 모든 라이브러리는 애플리케이션에 나타날 수 있는 취약점에 대한 잠재적인 벡터를 제공한다.
언어에 따라, 매우 엄격한 의존성 집합을 설정해 매우 작은 크기의 이미지를 얻을 수 있다.
이렇게 작은 집합을 사용하면 이미지가 절대 사용하지 않는 라이브러리의 취약성에 노출되지 않는다.
'Container' 카테고리의 다른 글
다중 컨테이너 배포 패턴 (0) | 2023.12.25 |
---|---|
컨테이너 이미지 (0) | 2023.10.25 |