목차
Image
Image Names
Kubernetes에서 사용하는 이미지 이름은 Docker의 이미지 명명 규칙을 따른다. 예를 들어, nginx 이미지를 사용할 때 nginx라고 기입하지만 실제로 이미지는 library/nginx 이다. library 부분은 사용자나 계정 이름을 나타내는데 이를 제공하지 않을 시 기본적으로 library로 간주되며, library는 Docker의 공식 이미지가 저장되는 기본 계정을 의미한다.
Image Registry
이미지가 저장되고 가져오는 위치는 기본적으로 Docker Hub이다. Docker Hub의 DNS 이름은 docker.io이며, 다른 레지스트리로는 google의 registry인 gcr.io가 있다. 이러한 레지스트리는 공개적으로 접근 가능하여 누구나 다운로드할 수 있다.
Private Registry
Private Repository
외부에 공개되지 않는 애플리케이션의 이미지 같은 경우 private registry를 사용하는 것이 좋다. AWS, Azure, GCP와 같은 CSP는 기본적으로 private registry를 제공한다. Docker Hub나 Google Registry 등도 레포지토리를 private으로 만들어 인증을 통해 접근하게 할 수 있다.
Authentication
도커는 이미지를 이용해 컨테이너를 실행하기 위해 먼저 레지스트리에 아래와 같은 방식으로 로그인해야 한다.
docker login private-registry.io
# 로그인 진행
docker run private-registry.io/apps/internal-app
Bash
복사
쿠버네티스에서 이러한 인증을 거쳐 private registry를 사용하려면 regcred라는 이름으로 secret을 사용해야 한다. secret에 레지스트리 인증에 대한 값들을 저장하고, Pod에서 spec.imagePullSecrets라는 필드를 통해 secret을 마운트하여 사용한다.
# nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx
imagePullSecrets:
- name: regcred
YAML
복사
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
YAML
복사