설정 및 테스트한 날짜: 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
'kubernetes' 카테고리의 다른 글
Harbor 설치 (Container Image Registry 설치) (2) | 2023.02.07 |
---|---|
Container image timezone(tz)을 Seoul(서울)로 설정 (0) | 2023.01.27 |
Oracle Cloud(OCI) OKE의 Network LB (0) | 2022.12.05 |
Public Cloud에서 Network LB를 사용하여 UDP, TCP 트래픽 처리하기 (방화벽, Security Rule 설정) (0) | 2022.11.16 |
Oracle Cloud Infrastructure(OCI) OKE에서 Kubernetes Cluster 구축 (0) | 2022.11.16 |