설명
AlwaysPullImages admission plugin은 새 Pod의 이미지 가져오기 정책을 Always로 설정합니다. 공유 노드에서 다른 사용자가 남긴 비공개 이미지를 레지스트리 접근 권한 확인 없이 재사용하는 위험을 줄이는 데 도움이 됩니다.
Always는 이미지 전체를 매번 다시 다운로드하거나 최신 승인 이미지임을 보증하는 기능은 아닙니다. 같은 digest의 이미지가 캐시에 있으면 재사용할 수 있으므로 이미지 승인, 서명 검증과 취약점 관리는 별도로 적용하세요.
잠재적 영향
- 공유 노드의 이미지 캐시를 통해 접근 권한이 없는 비공개 이미지가 재사용될 수 있습니다.
- 가져오기 정책만으로 이미지의 출처나 안전성을 보증할 수는 없습니다.
해결 방법
- 공유 환경의 요구사항을 확인하고 필요한 경우
--enable-admission-plugins에AlwaysPullImages를 포함하세요. - 각 워크로드에 필요한 레지스트리 인증을 제공하고, 레지스트리 장애가 Pod 시작에 미치는 영향도 확인하세요.
- 승인된 이미지와 digest 사용, 서명 검증 등 공급망 통제를 별도로 적용하세요.
예시
API 서버 인수 비교용 발췌입니다. 이미지는 실제 클러스터 버전에 맞추고 나머지 제어면 설정은 별도로 구성하세요. 이 플러그인에는 별도 admission 설정 파일이 필요하지 않습니다.
변경 전
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.34.0
command: ["kube-apiserver"]
args: ["--disable-admission-plugins=AlwaysPullImages"]
변경 후
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: registry.k8s.io/kube-apiserver:v1.34.0
command: ["kube-apiserver"]
args:
["--enable-admission-plugins=AlwaysPullImages"]
설명:
- 변경 전:
AlwaysPullImages를 비활성화합니다. 실제 이미지 재사용은 Pod의 가져오기 정책에도 영향을 받습니다. - 변경 후: 새 Pod에
Always정책을 적용합니다. 이미지 승인이나 보안 검증을 대신하지는 않습니다.