Image Security

Yu Sang Min·2025년 6월 20일

CKA

목록 보기
57/110

🛡️ Kubernetes에서 안전한 이미지 사용하기

🧰 컨테이너 이미지 이름의 구성

  • Kubernetes Pod에서 사용하는 컨테이너 이미지는 Docker 이미지 네이밍 규칙을 따름
  • 예: nginx는 실제로는 library/nginx를 의미
  • library는 Docker Hub의 공식 이미지 계정 (user/account)
  • 사용자 또는 조직에서 직접 만든 이미지라면 myorg/myapp 형식 사용

🏢 이미지 저장소 (Registry)

  • 이미지 저장소는 컨테이너 이미지가 저장되고 배포되는 장소

  • 기본 이미지 저장소: Docker Hub (docker.io)

  • 기타 퍼블릭 레지스트리:

    • Google Container Registry: gcr.io
    • Amazon Elastic Container Registry: *.dkr.ecr.amazonaws.com
  • 프라이빗 레지스트리도 설정 가능: 조직 내부에서 관리하는 보안 저장소


🔒 프라이빗 레지스트리와 인증 방식

✅ 로컬 Docker 인증 방식

docker login myregistry.com
# 사용자 이름과 비밀번호 입력
docker pull myregistry.com/myapp:v1
  • 인증 후 프라이빗 이미지를 로컬에서 실행하거나 테스트 가능

🧾 Kubernetes에서 프라이빗 이미지 사용하기

1️⃣ Docker 인증 정보로 Secret 생성

kubectl create secret docker-registry regcred \
  --docker-server=myregistry.com \
  --docker-username=myuser \
  --docker-password=mypassword \
  --docker-email=myuser@example.com
  • regcred는 Secret 객체의 이름
  • Secret 유형은 docker-registry로 설정해야 함

2️⃣ Pod에서 이미지 Pull 시 Secret 참조

apiVersion: v1
kind: Pod
metadata:
  name: private-reg-pod
spec:
  containers:
  - name: private-container
    image: myregistry.com/myapp:v1
  imagePullSecrets:
  - name: regcred
  • imagePullSecrets 항목에 앞서 만든 regcred 지정
  • Kubernetes는 해당 Secret을 사용해 이미지 pull 인증을 수행

🔁 정리

  • 퍼블릭 이미지(nginx, redis)는 누구나 접근 가능
  • 사내 전용 이미지나 민감한 애플리케이션은 프라이빗 레지스트리 사용 권장
  • Kubernetes에서는 docker-registry 타입의 Secret을 통해 인증 정보 전달
  • Pod 명세에서 imagePullSecrets 필드에 Secret 이름을 명시
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글