반응형
설정 및 테스트한 날짜: 2023년 2월 7일
Harbor Registry 같은 private container image registry에 kubernetes가 접근하려면 kubernetes의 secret 리소스를 생성해줘야 한다.
kubernetes에 image registry의 credential(자격 증명)을 어떻게 등록하는지 알아보자~
설정에 관한 자세한 설명을 보고 싶다면, 아래 문서를 참고.
참고 문서: Private registry에서 image 받아오기
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 |