# OCP-Local Image Registry 구성

TASK DESCRIPTION

OCP는 각 Cluster마다 Local Image Registry가 필요합니다.
Local Image Registry구성이 안되면 OCP자체의 CI/CD를 사용할수가 없습니다.

# 기본 image registry Pod 삭제

Local image registry는 image-registry라는 cluster operator로 설치됩니다.

# StorageClass 생성

vmware의 기본 Storageclass인 thin의 accessMode는 ReadWriteOnce만 지원합니다.

local image registry용 PV는 ReadWriteMany가 필요하기 때문에
이를 지원하는 storageclass를 만들어야 합니다.
reclaimPolicy가 Delete인 storageclass와 Retain인 storageclass를 만듭니다.

  • reclaimPolicy: Delete
$ vi sc-nfs-delete.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  name: nfs-delete
provisioner: standard
reclaimPolicy: Delete
volumeBindingMode: Immediate

$ oc apply -f sc-nfs-delete.yaml
  • reclaimPolicy: Delete
$ vi sc-nfs-retain.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-retain
provisioner: standard
reclaimPolicy: Retain
volumeBindingMode: Immediate

$ oc apply -f sc-nfs-retain.yaml

# PV/PVC 생성

중요

no_wdelay
OCP Local Image Registry용 PV디렉토리는 이 옵션을 지정해야
복수개의 Image Registry Pod를 배포할 수 있습니다.
Storage VM에서 exports파일 내용 확인하고 no_wdelay옵션이 없으면 추가하십시오.

$ cat /etc/exports
/nfs/imgreg *(rw,sync,no_wdelay,no_root_squash,insecure,fsid=0)
$ exportfs -rv
exporting *:/mnt/data
  • PV생성
$ vi image-registry-pv.yaml 

apiVersion: v1
kind: PersistentVolume
metadata:
  name: image-registry-pv
spec:
  accessModes:
    - ReadWriteMany
  capacity:
    storage: 100Gi
  nfs:
    server: <nfs server ip>
    path: <nfs volume directory>
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs-retain

$ oc apply -f image-registry-pv.yaml -n openshift-image-registry
  • PVC생성
$ vi image-registry-pvc.yaml

apiVersion: "v1"
kind: "PersistentVolumeClaim"
metadata:
  name: "image-registry-pvc"
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 100Gi
  storageClassName: nfs-retain
  volumeMode: Filesystem

$ oc apply -f image-registry-pvc.yaml -n openshift-image-registry
$ oc get pvc -n openshift-image-registry

# image registry POD생성

  • imageregistry config 변경
- storage.pvc이름 셋팅  
$ oc edit configs.imageregistry.operator.openshift.io -o yaml  
...  
storage:  
  pvc:  
    claim: image-registry-pvc  
...  


- managementState를 Managed로 변경    

image-registry cluster-operator의 상태를 확인합니다.

$ watch oc get co image-registry

Available이 True로 변경될때까지 기다립니다.

Pod가 정상적으로 실행되는지 확인합니다.

$ oc get po -n openshift-image-registry