설명
image_pull_policy = "IfNotPresent"는 노드에 캐시된 이미지를 사용할 수 있습니다. 가변 태그를 재사용하면 노드별 캐시 상태에 따라 서로 다른 내용이 실행될 수 있습니다.
Always는 컨테이너를 시작할 때 레지스트리에서 다이제스트를 확인하고 일치하는 캐시가 있으면 재사용합니다. 이미 실행 중인 컨테이너를 자동 업데이트하거나 매번 모든 레이어를 다시 내려받는 설정은 아닙니다.
잠재적 영향
- 가변 태그와 캐시 조합으로 배포 내용이 달라지거나 보안 수정 반영이 늦어질 수 있습니다.
- 레지스트리 접근이 필요한 정책은 레지스트리 장애나 인증 문제로 시작에 실패할 수 있습니다.
해결 방법
- 시작 시 태그를 다시 확인해야 한다면
image_pull_policy = "Always"를 사용하세요. 검증한 다이제스트를 고정한 구성에서는 IfNotPresent도 적절할 수 있습니다. - 이미지 출처와 취약점을 확인하고 다이제스트, 보안 업데이트 및 재배포 절차를 관리하세요. 실제 적용된 pull 정책과 레지스트리 접근 권한을 확인하세요.
예시
기존 busybox 참조는 태그 생략으로 latest 태그를 사용합니다. 두 예제는 pull 정책만 비교하며 이미지 내용을 고정하지 않습니다. 유지보수되는 검증 이미지와 필요한 인증을 준비하세요.
변경 전
hcl
resource "kubernetes_pod" "busybox" {
metadata {
name = "busybox-tf"
}
spec {
container {
image = "busybox"
command = ["sleep", "3600"]
name = "busybox"
image_pull_policy = "IfNotPresent"
}
restart_policy = "Always"
}
}
변경 후
hcl
resource "kubernetes_pod" "busybox" {
metadata {
name = "busybox-tf"
}
spec {
container {
image = "busybox"
command = ["sleep", "3600"]
name = "busybox"
image_pull_policy = "Always"
}
restart_policy = "Always"
}
}
설명:
- 변경 전: 캐시된 busybox 이미지를 재사용할 수 있습니다.
- 변경 후: 컨테이너 시작 시 레지스트리에서 이미지 다이제스트를 확인합니다. 일치하는 캐시 레이어는 재사용할 수 있습니다.