kubernetes 설정이 완료 되었으면, 이제 실제로 kubernetes 를 사용하기 위한 docker registry 연동 설정을 해보겠습니다.
보통 회사에서 사용할 때는 자체 private docker registry 를 사용하고 있을 겁니다.
이 registry 를 kubectl
을 이용해서 연동해봅시다.
Set up Docker Registry
Pull an Image from a Private Registry – Kubernetes
위 글을 참고 하여 연동을 합니다.
등록
Usage:
kubectl create secret docker-registry NAME –docker-username=user –docker-password=password –docker-email=email [–docker-server=string] [–from-literal=key1=value1] [–dry-run] [options]
kubectl create secret docker-registry regcred --docker-server=https://example.com --docker-username=aws --docker-password="abcd1234" --docker-email="aws@example.com"
Docker-registry secret 이름을 여기서는 regcred
로 생성해서 만들었습니다.
확인
kubectl get secret regcred --output=yaml
Output:
apiVersion: v1
data:
.dockerconfigjson: eyJhdXRocyI6eyJodH3FovL2RyZWcuYcyI6eyJodH3FovMiLCJwYXNzd29yZCI6ImdyYWNlbm90ZTEyIUAiLC3D2KWFpbCI6ImF3c0BncmFjZW5vdGUuY29tIiwiYXV0aCI6IllYZHpPbWR5WVdObGJcyI6eyJodH3FovJ9fX0=
kind: Secret
metadata:
creationTimestamp: 2018-07-11T06:15:56Z
name: regcred
namespace: default
resourceVersion: "6036405"
selfLink: /api/v1/namespaces/default/secrets/regcred
uid: df5d178b-84d1-11e8-b74a-0e9d5423172c
type: kubernetes.io/dockerconfigjson
출력 결과에서 .dockerconfigjosn
이라는 내용은 실제 docker registry 접속정보를 나타냅니다. 아래 명령을 통해 정상적으로 접속정보가 들어갔는지 확인 해 볼 수 있습니다.
kubectl get secret regcred --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d
맥북일 경우는 -d 옵션을 대문자 -D 로 변경합니다.
kubectl get secret regcred --output="jsonpath={.data.\.dockerconfigjson}" | base64 -D
Output:
{"auths":{"https://example.com":{"username":"aws","password":"abcd1234","email":"aws@example.com","auth":"YxDAOmdyKZNlbm30ZTEyIUA="}}}
TEST
이제 설정은 완료됐습니다.
실제 pod 를 배포해서 정상적으로 동작하는지 TEST 해 봅시다.
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container-nginx
image: example.be/devops/nginx-custom:0.1.0
imagePullSecrets:
- name: regcred
위의 내용으로 my-private-reg-pod.yml 파일을 생성합니다.
kubectl create -f my-private-reg-pod.yml
위 명령 실행후 정상적으로 pod 생성이 되는지 확인합니다.
kubectl get po private-reg
Output:
✘ ktg@dev-vm-of00-016 ~/projects/k8s kubectl get po private-reg
NAME READY STATUS RESTARTS AGE
private-reg 1/1 Running 0 1m
STATUS 가 Running 이면 정상동작하는 것을 알수 있습니다.
curl로 nginx 작동 여부를 확인하고 싶다면,
kubectl exec -it private-reg (bash or sh)
curl localhost
위 명령을 실행 하면 됩니다.