반응형
AWS Elastic Container Registry(ECR)의 Image Tag Mutability 설정은 컨테이너 이미지의 태그(tag)를 수정 가능 여부로 설정하는 옵션입니다. 여기서 Mutable은 태그를 수정할 수 있는 상태를 의미합니다.
1. Image Tag Mutability의 두 가지 옵션
a. Mutable (수정 가능)
- 동일한 태그 이름으로 이미지를 덮어쓸 수 있음.
- 예를 들어, my-app:latest라는 태그가 이미 존재해도, 새로운 이미지를 푸시하면 기존 이미지를 덮어씀.
- 기본 설정(Default) 상태.
b. Immutable (수정 불가능)
- 한 번 푸시된 태그는 수정할 수 없음.
- 동일한 태그 이름으로 이미지를 푸시하려고 하면 오류 발생.
2. Mutable의 장점과 단점
장점
- 유연성:
- 같은 태그 이름으로 이미지를 업데이트할 수 있어 빠른 배포 가능.
- latest 태그와 같은 최신 버전의 이미지 관리에 유용.
- 운영 편의성:
- 기존 태그를 덮어씌워 관리가 간단해짐.
단점
- 예상치 못한 덮어쓰기:
- 같은 태그 이름을 사용하면 이전 버전의 이미지를 덮어씌워 혼란이 발생할 수 있음.
- 이미지의 버전 추적이 어려워짐.
- 보안 문제:
- 이미지 태그가 덮어씌워지면 원본 이미지와 다른 내용이 포함될 위험.
- 특정 버전에 의존하는 애플리케이션에서 문제가 발생할 수 있음.
3. Immutable의 장점과 단점
장점
- 안정성:
- 한 번 태그가 지정된 이미지는 변경되지 않아, 동일 태그가 항상 동일한 내용을 보장.
- 버전 관리 용이:
- 이미지가 덮어씌워지는 일이 없어 각 태그가 고유성을 유지.
단점
- 운영 복잡성:
- 새로운 이미지를 푸시하려면 항상 새로운 태그 이름을 지정해야 함.
- latest 태그처럼 동일한 이름으로 최신 이미지를 유지하는 방식이 불편.
- 태그 관리 필요:
- 태그가 늘어나 관리가 복잡해질 수 있음.
4. Mutable/Immutable 설정 변경
ECR 리포지토리를 생성하거나 설정을 수정할 때 Mutable 또는 Immutable로 변경할 수 있습니다.
AWS CLI로 설정
- Mutable로 설정:
- aws ecr create-repository \ --repository-name my-repo \ --image-tag-mutability MUTABLE
- Immutable로 설정:
- aws ecr create-repository \ --repository-name my-repo \ --image-tag-mutability IMMUTABLE
기존 리포지토리 수정
aws ecr put-image-tag-mutability \
--repository-name my-repo \
--image-tag-mutability IMMUTABLE
5. 언제 Mutable 또는 Immutable을 선택해야 할까?
목적추천 설정
최신 버전 유지 (latest 사용) | Mutable |
애플리케이션 배포 안정성 중요 | Immutable |
CI/CD 파이프라인에서 자동 푸시 | Mutable |
보안 및 버전 관리가 우선 | Immutable |
결론
- Mutable은 태그를 덮어쓰는 유연성을 제공하지만, 안정성과 버전 관리 측면에서 문제가 발생할 수 있습니다.
- Immutable은 태그의 고유성을 보장하여 안정성과 보안을 강화하지만, 운영 복잡성이 증가할 수 있습니다.
사용 환경과 요구 사항에 따라 적절한 설정을 선택해야 합니다. Immutable을 사용하는 것이 더 안전한 경우가 많으며, 특히 프로덕션 환경에서는 Immutable 설정을 권장합니다.
반응형