[Kubernetes] 쿠버네티스에서 파드 생성시 프라이빗 레지스트리 이미지 사용하기
l Kubernetes
Kubernetes 환경에서 pod를 생성할 때 Private Registry에서 이미지를 다운받아 실행하는 방법에 대해서 알아본다.
현재 구성되어 있는 실습 환경은 MAC OS + PODMAN + MINIKUBE이다. 일반적으로 많이 사용하는 docker 환경은 아니지만 사용법이 거의 유사하기 때문에 따라하는데 크게 문제가 없으리라 생각한다. Minikube 설치 및 Podman 설치는 공식 문서에 쉽게 설명되어 있기 때문에 여기에서는 다루지 않는다.
l Podman Installation Instructions : https://podman.io/docs/installation
l minikube start : https://minikube.sigs.k8s.io/docs/start/
실습 시나리오는 아래와 같다.
1. Dockerfile 작성
2. 컨테이너 이미지 빌드
3. Docker Hub의 개인 저장소에 이미지 푸시
4. 쿠버네티스에서 프라이빗 시크릿키 생성
5. YAML 파일 작성
6. Pod 생성
사용자 커스텀 이미지를 만들기 위해 Dockerfile을 작성한다. Dockerfile 작성에 관한 방법은 다른 문서를 참고한다. 도커 허브의 공식 이미지 저장소에서는 Dockerfile에 대한 샘플코드를 제공한다. 아래는 proxysql의 공식 저장소이다.
l https://hub.docker.com/r/proxysql/proxysql
Dockerfile 작성이 완료되었으면, 이미지를 빌드 한다. Podman 명령어는 도커 명령어와 거의 유사하기 때문에 큰 어려움 없이 사용할 수 있다. 아래 스크립트는 Dockerfile을 빌드하여 컨테이너 이미지를 생성하고, 현재 생성되어 있는 이미지를 확인한다.
podman build -t proxysql-sw:1.0.0 . podman images |
podman에서는 도커 레지스트리에 push하기 위해 로그인 과정이 필요하다. 도커 허브의 로그인은 아래와 같은 명령어를 사용한다. 로그인은 ID, 패스워드로 인증한다.
podman login docker.io |
이미지를 푸시 하기 위해서는 이미지 ID가 필요하다. Podman images명령을 사용하여 확인한 이미지ID를 사용하여 도커 허브의 프라이빗 레지스트리로 푸시 한다.
podman push 561f3e4999fddocker.io/<개인저장소 경로> |
쿠버네티스에서 파드 생성시 사용할 프라이빗 레지스트리에 대한 시크릿 키를 생성한다. 시크릿 키에 대한 생성은 여러 방법이 있지만 여기에서는 커맨드 라인에서 자격증명을 통한 시크릿 키를 생성한다. 아래 예제에서는 시크릿 키 이름은 regcred로 생성한다.
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> |
l <your-registry-server> : 프라이빗 도커 저장소의 FQDN 주소로, 도커허브(DockerHub)는 https://index.docker.io/v1/ 를 사용
l <your-name> : 도커 사용자의 계정
l <your-pword> : 도커 사용자의 비밀번호
l <your-email> : 도커 사용자의 이메일 주소
키가 정상적으로 생성되었는지는 아래 명령으로 확인 가능하다. 명령을 실행하면 키에 대한 자세한 정보를 확인할 수 있다.
kubectl get secret regcred --output=yaml |
쿠버네티스에서 파드 생성시 사용할 YAML 파일을 작성한다. YAML에서 시크릿 키를 사용할 수 있도록 imagePullSecrets 항목에서 시크릿키 이름을 입력한다.
apiVersion: v1 kind: Pod metadata: name: private-reg spec: containers: - name: private-reg-container image: <your-private-image> imagePullSecrets: - name: regcred |
YAML파일을 사용하여 쿠버네티스 파드를 생성한다.
kubectl apply -f my-private-reg-pod.yaml |
도커허브의 개인 저장소 이미지를 사용하여 파드가 정상적으로 생성된 것을 확인할 수 있다.
kubectl get pod |
지금까지 도커 허브의 프라이빗 레지스트리에서 이미지를 받아 파드를 생성하는 방법에 대해서 알아보았다. 원래 나의 목적은 로컬(내 컴퓨터)에서 이미지를 빌드한 다음 로컬 저장소의 이미지를 사용하여 쿠버네티스 파드를 생성하려고 하였는데, podman에서 생성한 이미지를 minikube에서 찾지 못하여 (정확히는 내가 할 줄 모르는 것) 도커 허브를 사용하는 방향으로 실습하였다. 이후 작업으로 로컬 저장소에서 파드를 생성하는 방법을 추가적으로 알아볼 예정이다.
[참고자료]
l Podman Installation Instructions : https://podman.io/docs/installation
l minikube start : https://minikube.sigs.k8s.io/docs/start/
l docker hub : https://hub.docker.com/
l 프라이빗 레지스트리에서 이미지 받아오기 : https://kubernetes.io/ko/docs/tasks/configure-pod-container/pull-image-private-registry/
2023-08-09 / Sungwook Kang / https://sungwookkang.com
쿠버네티스, Kubernetes, 미니쿠베, minikube, 도커, 도커허브, 컨테이너, 도커파일, dockerfile, yaml, 도커 레지스트리, 프라이빗 레지스트리, podman, 파드맨, 도커빌드. 이미지빌드
'SW Engineering > DevOps, SRE' 카테고리의 다른 글
[kubernetes] minikube에서 로컬 docker image 사용하기 (0) | 2023.09.07 |
---|---|
[Docker] 컨테이너실행시 sh 스크립트 호출과 매개변수 사용 (0) | 2023.09.07 |
[Kubernetes] vagrant 환경에서 Kubernetes 클러스터 구성하기 (0) | 2023.07.04 |
[Prometheus] Prometheus Thanos 아키텍처 살펴보기 (0) | 2023.06.29 |
[Prometheus] Prometheus 확장 및 내구성을 위한 다양한 구성 방법들 (0) | 2023.06.28 |