본 프로젝트는 Harbor Museum을 이용해서 만든 차트를 Harbor에 올려보는 것을 목적으로 진행되었다.
helm repo add
명령을 사용해 harbor 저장소를 추가한다.
helm repo add harbor https://helm.goharbor.io
harbor 저장소를 추가한 뒤 helm repo list
를 통해 확인한다.
replicaCount: 1
image:
repository: minjulee226/myweb
pullPolicy: Always
tag: "customport"
service:
type: NodePort
port: 80
1) image
image 필드를 docker hub에 올려둔 minjulee226/myweb:customport로 수정해주었다.
2) service
type을 NodePort로 수정해주었다.
실습 진행 과정 중 Namespace를 생성하는 과정이 필요하지만 이 부분은 미처 진행하지 못하고 넘어간 부분이다.
Namespace는 kubectl create nampespace <namespace 이름>
명령을 통해 생성 가능하다.
helm install myweb harbor/harbor
helm install 명령으로 helm 차트를 설치한다.
이 커맨드는 myweb이라는 릴리즈 이름으로 harbor 저장소의 harbor 차트를 설치하는 명령어를 나타낸다.
harbor 차트를 설치한 후 생성되는 리소스들은 다음과 같다.
웹 브라우저에서 도메인 주소로 harbor에 접속하기 위해서는 다음과 같이 /etc/hosts 파일을 수정하는 작업이 필요하다.
1) Master Node
Master Node는 위와 같이 수정해주었다.
2) Local
Local에서도 마찬가지로 위와 같이 수정해주었다.
https://core.harbor.domain 으로 접속해 Harbor 화면이 잘 출력되는지 확인한다.
1) harbor portal에서 인증서를 다운받는다.
위 그림에서 보이는 REGISTRY CERTIFICATE 메뉴를 누르면 인증서를 다운받을 수 있다.
2) 로컬에 다운받은 인증서를 master node로 옮긴다.
scp /home/student/Downloads/ca.crt student@192.168.122.11:/home/student
3) helm repo add 명령을 사용해 library chart 저장소를 추가한다.
helm repo add library https://core.harbor.domain/chartrepo/library --ca-file ~/Downloads/ca.crt --username admin --password Harbor12345
1) 먼저 master node에 있는 ca.crt를 모든 워커 노드에 복사한다.
scp student@192.168.122.11:/home/student/ca.crt student@192.168.122.21:/home/student/ca.crt
scp student@192.168.122.11:/home/student/ca.crt student@192.168.122.22:/home/student/ca.crt
scp student@192.168.122.11:/home/student/ca.crt student@192.168.122.23:/home/student/ca.crt
2) 모든 워커 노드에 복사해준 ca.crt 파일을 모든 Docker host의 /etc/docker/certs.d//ca.crt 으로 복사한다.
cp /home/student/ca.crt /etc/docker/certs.d/core.harbor.domain/ca.crt
3) docker에 harbor 권한으로 로그인 한다.
docker login core.harbor.domain
4) harbor에 docker image를 올려본다.
docker tag minjulee226/myweb:customport core.harbor.domain/library/minjulee226/myweb:new
docker push core.harbor.domain/library/minjulee226/myweb:new
직접 harbor portal에 들어가 로그인을 하지 않고도 자동으로 kubernetes에서 harbor로 이미지를 올리기 위해 이러한 과정이 필요하다.
kubectl create secret docker-registry harbor --docker-username="admin" --docker-password="Harbor12345" --docker-server="https://core.harbor.domain/library"
실습 과정 중 harbor registry의 인증을 위한 시크릿 생성 단계까지는 마쳤으나 harbor에 image를 올리려고 시도했을 때 계속 에러가 발생해 image를 직접 올려보지는 못했다.
따라서 이러한 점을 보완하여 인터넷이 되지 않는 환경에서도 harbor에 image를 올릴 수 있도록 다시 구성해보아야겠다.