-
harbor 설치 부터 kubernetes 연동까지!설치&설정 관련 2020. 6. 23. 22:31728x90
harbor 설치 부터 kubernetes 연동까지!
Harbor 설치
- 설치 전에 필수 설치 사항
- docker-compose
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ sudo chmod +x /usr/local/bin/docker-compose # version 확인 $ docker-compose -v
- Harbor를 다운받기
기본적으로 Online(harbor-online-installer-vx.x.x.tgz)으로 받아서 설치를 시작하면 된다.
2020년 1월 11일 최신 버젼인 harbor-online-installer-v1.9.4.tgz을 기준으로 진행하였다.
$ wget https://github.com/goharbor/harbor/releases/download/v1.9.4/harbor-online-installer-v1.9.4.tgz $ tar xvfz harbor-online-installer-v1.9.4.tgz $ cd harbor # 특정 설정을 변경해야 한다. # hostname과 https 설정 필수 수정 # 작동하는 PORT를 변경할 경우 다음 파일에서 수정 $ vi harbor.yml # 설치는 ROOT 계정으로 진행하는 것을 추천한다. $ ./install.sh
- 동작 확인
브라우저를 통해서 확인한다. HTTPS를 활성화 했다면 https로 확인이 가능하다.
로그인 기본 ID 는 admin이며 password는 harbor.yml에 표기되어 있다.# 파일 내 기본 비밀번호 harbor_admin_password: Harbor12345
- harbor.xml 수정시 반영 방법
harbor.xml을 수정후 무언가 반영할때는 다음과 같이 진행한다.
# 변경내역 반영 $ ./prepare # docker-compose 재실행 $ docker-compose down -v $ docker-compose up -d
harbor에 이미지 올리고 받기
- docker login
먼저 docker에서 이미지를 push 하기 위해서 login을 해야 한다.
$ docker login 10.52.181.240:8443 Username: admin Password: WARNING! Your password will be stored unencrypted in /home/service/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
- docker tag 생성
$ docker tag lahuman/react-app:0.1 10.52.181.240:8443/51scrum/test-react-app:0.1
- docker push
$ docker push 10.52.181.240:8443/51scrum/test-react-app:0.1
- docker pull
$ docker pull 10.52.181.240:8443/51scrum/test-react-app:0.1
만약 x503 에러가 발생하면서 docker login이 되지 않는다면?
인증서 문제인데 내 경우는 그냥 http 통신으로 처리하였다.
우선 http 방식의 docker login을 위해서는 /etc/docker/daemon.json 파일을 생성하고 주소 정보와 IP를 다음과 같이 추가 한다.
{ "insecure-registries" : ["10.52.181.240:8000"] }
이후 docker 서비스를 재기동 후 http로 로그인을 한다.
$ systemctl restart docker # 로그인 $ docker login 10.52.181.240:8000
kubernetes에서 Private Repository 이미지 가져오기
kubernetes에서 Private Repository를 사용하기 위해서는 secret를 등록해야 한다.
lahuman이라는 이름을 가진 secret를 생성한다.$ kubectl create secret docker-registry lahuman --docker-server=http://10.52.181.240:8000 --docker-username=admin --docker-password='비밀번호' --docker-email="이메일"
만약 http 통신으로 docker login 한다면, kubernetes worker의 docker에 insecure-registries 설정을 해야한다.
등록된 값의 상세 확인은 다음의 명령어로 한다.
$ kubectl get secret lahuman --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d
이제 pod를 배포해서 정상 동작 되는지 확인해보자
우산 다음과 같은 pod.yml을 작성한다.
apiVersion: apps/v1 kind: Deployment metadata: name: hello-deployment spec: replicas: 3 selector: matchLabels: app: react template: metadata: labels: app: react spec: containers: - name: hello-container image: lahuman/test-react-app ports: - containerPort: 80 imagePullSecrets: - name: lahuman
생성된 파일을 kubectl 명령어를 이용해서 반영한다.
$ kubectl apply -f pod.yml
결과를 확인한다.
$ kubectl get pod NAME READY STATUS RESTARTS AGE hello-react-6968cdc94-5fxrv 1/1 Running 0 51m hello-react-6968cdc94-5lpdg 1/1 Running 0 51m hello-react-6968cdc94-82zh6 1/1 Running 0 51m
외부에서 접근하기 위해서 service.yml 파일을 작성한다.
apiVersion: v1 kind: Service metadata: name: hello-svc spec: selector: app: react ports: - port: 8200 targetPort: 80 externalIPs: - 10.52.181.240 - 10.52.181.241
서비스 파일을 kubectl 명령을 이용해서 반영한다.
$ kubectl apply -f service.yml
정상적으로 동작하는지 브라우저를 통해 확인하면 된다!
참고자료
728x90'설치&설정 관련' 카테고리의 다른 글
fluentd를 활용해 kubernetes 로그를 elasticsearch에 저장하고 kibana로 표출 해보자! (0) 2020.06.24 kubernetes의 각 항목을 살펴보자. (0) 2020.06.24 Rancher로 Kubernetes 설치 & 관리 하기 (0) 2020.06.20 VSCODE에서 ESLint 설정하고 사용하기 (0) 2020.06.19 쿠버네티스 설치 yum 명령어에서 오류를 만났다. (0) 2020.06.18 - 설치 전에 필수 설치 사항