Docker 클라이언트가 Harbor 에 붙으려면 두 가지가 맞아야 한다 — 전송 방식(HTTP 인지, 어떤 인증서의 HTTPS 인지)과 로그인. 여기서는 Docker 호스트 쪽 설정을 다룬다. Harbor 자체의 프로젝트 · 권한은 Harbor 사용법 을 본다[1].
/etc/docker/daemon.json 에 주소를 넣는다. 스킴은 붙이지 않고 포트가 있으면 함께 적는다.
{
"insecure-registries": ["harbor.haedongg.net", "harbor.haedongg.net:8080"]
}
sudo systemctl restart docker
insecure 로 두지 말고 CA 인증서를 Docker 가 찾는 자리에 둔다. 디렉터리 이름은 Harbor 주소(포트 포함)와 같아야 한다.
sudo mkdir -p /etc/docker/certs.d/harbor.haedongg.net
sudo cp ca.crt /etc/docker/certs.d/harbor.haedongg.net/ca.crt
재시작은 필요 없다. containerd 를 쓰는 Kubernetes 노드는 /etc/containerd/certs.d/<주소>/hosts.toml 에 같은 내용을 둔다.
docker login harbor.haedongg.net
Login Succeeded 가 나오면 성공이다. 자격증명은 ~/.docker/config.json 에 저장된다.
Proxy cache 로 사용 에 따라 프록시 프로젝트를 만든다. 아래는 프로젝트 이름을 registry 로 만들었다고 가정한 예다.
docker pull harbor.haedongg.net/registry/kubesphere/ks-installer:v3.1.1
registry 프로젝트에 kubesphere/ks-installer:v3.1.1 이 있으면 Harbor 가 바로 주고, 없으면 프로젝트에 지정된 외부 엔드포인트에서 받아 캐시한 뒤 준다.