Tools/Kubernetes

[Kubernetes기반 CI/CD환경설정 시리즈] 03. Helm을 이용한 Private Docker Image Registry 구축

MOMOBOB 2021. 12. 23. 19:59
반응형

Kubernetes기반 CI/CD환경설정 시리즈 진행을 위해서는 아래 두 글을 선행하고 오시면 됩니다. (NFS 마운트없이 image registry 설치만 필요하시면 무관합니다.)

 

Kubernetes기반 CI/CD환경설정 시리즈 01. NFS 서버 구성
Kubernetes기반 CI/CD환경설정 시리즈 02. Helm을 이용한 Private GitLab 설치

https://momobob.tistory.com/50

 

[Kubernetes기반 CI/CD환경설정 시리즈] 01. NFS 서버 구성

Kubernetes기반 CI/CD환경 설정해보며 정리했던 것들에 대해서 시리즈로 포스팅해 볼 예정입니다. 시리즈의 기본 환경은 4대의 VM(master1대, worker2대, NFS1대)의 노드 위에 쿠버네티스가 설치되어있는

momobob.tistory.com

https://momobob.tistory.com/51

 

[Kubernetes기반 CI/CD환경설정 시리즈] 02. Helm을 이용한 Private GitLab 설치

아래의 Kubernetes기반 CI/CD환경설정 시리즈 01. NFS 서버 구성 포스팅에서 이어지는 내용입니다. https://momobob.tistory.com/50 [Kubernetes기반 CI/CD환경설정 시리즈] 01. NFS 서버 구성 Kubernetes기반 CI..

momobob.tistory.com

 

0. NFS VM에 디렉토리 추가 (NFS VM에서 실행)

  • 생성할 파드에 마운트할 디렉토리 생성
    • mkdir /mnt/nfs/image-registry
  • nfs server 재시작
    • systemctl restart nfs-kernel-server

 

1. helm repository 추가 (여기서부터 master node에서 실행)

 

2. helm repo tgz파일 다운

  • helm fetch twuni/docker-registry

 

3. 압축해제

  • tar -xvzf docker-registry-1.14.0.tgz
  • cd docker-registry

 

4.  Persistent Volume 생성

  • cd template
    • template 디렉토리: helm 설치시 kubernetes 클러스터에 올라가게 되는 kubernetes API를 정의한 yml파일 저장
  • vi image-registry-volume.yaml
  • image-registry-volume.yaml 파일에 아래 내용 추가
apiVersion: v1
kind: PersistentVolume
metadata:
  name: image-registry-pv
  namespace: image-registry
spec:
  storageClassName: image-registry-pv
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 10Gi
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: "/mnt/nfs/image-registry"   #NFS 서버에 마운트할 경로
    server: "10.100.0.105"   #NFS 서버 IP

 

반응형

 

5. value.yaml 수정

value.yaml은 helm 설치시 설정 가능한 변수들을 설정할 수 있는 파일
  • fullnameOverride: docker-registry
    • 이름설정
  • service.name: NodePort
    • Service Type을 NodePort로 설정(VirtualBox에 포트포워딩하기 위함, 필요없으면 안해두됨)
  • service.nodePort: 30500
    • 포트포워딩할 포트 설정
  • persistence.enabled: true
  • storageClass: 'image-registry-pv'
    • persistent volume 사용 설정
    • image-registry-pv라는 이름으로 persistent volume 생성함을 의미

 

6.  설치

  • helm install image-registry -n image-registry ./docker-registry

 

7. 삭제

  • helm uninstall -n image-registry image-registry

 

8.  생성한 Registry 조회

  • curl <master node IP>:30500/v2/_catalog
    • NodePort로 설정했기 때문에 master ip든 worker ip든 상관없음

 


Thank you!

 

 

 

반응형