본문으로 건너뛰기

Image Security


컨테이너 이미지 이름의 구조

image-security1

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx
  • 위의 Pod yaml 파일에서 사용되는 nginx와 같은 이미지 이름은 사실은 축약된 형태이다.
  • 구조: 레지스트리/사용자/이미지
    • 레지스트리:
      • 이미지가 저장된 서버 주소이다.
      • 생략 시 도커의 기본 레지스트리인 DockerHub(docker.io)로 간주된다.
    • 사용자(계정):
      • 이미지를 관리하는 주체이다.
      • 생략 시 공식 이미지를 의미하는 library로 간주된다.
    • 이미지:
      • 이미지의 실제 이름이다.

Private Registry

개념

  • 사내 애플리케이션 이미지와 같이 외부에 노출되어서는 안되는 이미지들이 있다.
  • 이런 이미지의 경우 비공개 레지스트리에 보관하여 사용해야한다.
  • 내부 Private Registry도 있고, CSP사의 Private Registry도 있다.
    • 내부: HARBOR, Dragonfly
    • CSP사: AWS ECR

접근 방법 (Docker registry 예시)

1. Secret 생성

kubectl create secret docker-registry regcred \
--docker-server=private-registry.io \
--docker-username=registry-user \
--docker-password=registry-password \
--docker-email=registry-user@org.com
  • regcred: 생성할 시크릿의 이름 (임의 지정 가능)
  • --docker-server: 비공개 레지스트리 주소
  • --docker-username / password / email: 접속 계정 정보

2. PodSecret 연결

apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
# 비공개 레지스트리의 전체 이미지 경로 입력
image: private-registry.io/apps/internal-app
# 이미지를 가져올 때 사용할 시크릿 지정
imagePullSecrets:
- name: regcred

레퍼런스