반응형

 


 


설정 및 테스트한 날짜:  2023년 2월 7일

 

Harbor Registry  같은 private container image registry에 kubernetes가 접근하려면 kubernetes의 secret 리소스를 생성해줘야 한다.

kubernetes에 image registry의 credential(자격 증명)을 어떻게 등록하는지 알아보자~

 

 


설정에 관한 자세한 설명을 보고 싶다면, 아래 문서를 참고.
  참고 문서:   Private registry에서 image 받아오기

 

 

프라이빗 레지스트리에서 이미지 받아오기

이 페이지는 프라이빗 컨테이너 레지스트리나 리포지터리로부터 이미지를 받아오기 위해 시크릿(Secret)을 사용하는 파드를 생성하는 방법을 보여준다. 현재 많은 곳에서 프라이빗 레지스트리가

kubernetes.io

 

 

Harbor registry에 접근할 수 있는 credential을 등록하기 위해 아래의 예제를 따라서 실행한다. 

## regcred 라는 이름의 secret 리소스를 생성한다.

$  kubectl create secret docker-registry regcred --docker-server=registry.sejong.cluster --docker-username=myusername --docker-password=mypassword

## 위에서 생성한 regcred secret 리소스 내용을 확인한다.

$  kubectl get secret regcred --output=yaml

apiVersion: v1
kind: Secret
metadata:
  ...
  name: regcred
  ...
data:
  .dockerconfigjson: eyJodHRwczovL2luZGV4L ... J0QUl6RTIifX0=
type: kubernetes.io/dockerconfigjson

$

## 참고 정보:
##   - .dockerconfigjson 필드는 registry 자격 증명 값의 base64 인코딩한 결과이다.
##   - .dockerconfigjson 필드의 값을 눈으로 볼 수 있도록 base64 decoding한다. (아래와 같이)

$ kubectl get secret regcred --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode

{"auths":{"registry.sejong.cluster":{"username":"myusername","password":"mypassword","auth":"c3R...zE2"}}}

$

## 위 출력 내용 중에서 'auth' 값을 아래와 같이 base64 decoding한다.

$  echo "c3R...zE2" | base64 --decode

myusername:mypassword

$

 

Kubernetes master node, worker node에 Insecure registry를 등록한다.

만약, 10개의 node가 있다면 10개 모두 동일하게 작업해줘야 한다. (아~  귀찮아 ㅠㅠ)

참고로, OKD 또는 Red Hat OCP를 사용한다면 아래처럼 kubernetes node에 직접 접속해서 수작업으로 설정하지 않아도 된다.
$  vi /etc/crio/crio.conf

...

insecure_registries = [
"registry.sejong.cluster"
]

...

$  systemctl restart crio

$  systemctl status crio

 

 

설정 작업이 끝났으면, 테스트~

 

아래와 같은 예제 Pod를 구동하여 Image pulling이 잘 되는지 확인한다.

 

 

$  cat my-pod-example.yaml

apiVersion: v1
kind: Pod
metadata:
  name: almighty
  labels:
    app: almighty
spec:
  terminationGracePeriodSeconds: 3
  containers:
  - name: almighty
    image: registry.sejong.cluster/scope/almighty:0.2.4
       
$   kubectl apply -f my-pod-example.yaml

pod/almighty created

$  kubectl get pod

NAME           READY   STATUS    RESTARTS   AGE
pod/almighty   1/1     Running   0          3s

$

 

Great !!!  잘 동작한다.

 

 


 

블로그 작성자: sejong.jeonjo@gmail.com

 

+ Recent posts