컨테이너 이미지 pull 정책 점검

이미지 식별 방식과 레지스트리 가용성에 맞는 pull 정책을 선택하세요.

설명

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 이미지를 재사용할 수 있습니다.
  • 변경 후: 컨테이너 시작 시 레지스트리에서 이미지 다이제스트를 확인합니다. 일치하는 캐시 레이어는 재사용할 수 있습니다.

참조