기사 이전에 작성됨: 이 기사에서 사용된 머신은 모두 가상 머신 CentOS-7-x86_64-Minimal-2009 이미지입니다.
인프라 요구 사항
가상 머신의 구성은 최소 요구 사항을 충족할 수 있으며 이 시스템에서는 docker 24.0.4 및 docker-compose 1.29.2를 사용합니다. docker 및 docker-compose 설치에 대해서는 이전 기사 Microservices & Cloud Native: Basic Preparations in Building a K8S Cluster를 참조하십시오 .
하버 다운로드
공식 설치 방법은 온라인(온라인 설치 프로그램)과 오프라인(오프라인 설치 프로그램)의 두 가지가 있습니다. 여기에서 오프라인 설치 패키지를 설치하는 것이 좋습니다. https://github.com/goharbor/harbor/tags 에서 해당 버전을 선택하여 다운로드하십시오 . 여기에서 v2 .8.3 버전, 즉 harbour-offline-installer-v2.8.3.tgz를 선택합니다.
# 下载
wget -c https://github.com/goharbor/harbor/releases/download/v2.8.3/harbor-offline-installer-v2.8.3.tgz
# 解压
tar xzvf harbor-offline-installer-v2.8.3.tgz
압축 해제된 파일 목록을 볼 수 있습니다.
CA 인증서 생성
로컬 도메인 이름 ip 매핑을 추가하면 harbour를 설치한 머신의 ip 주소는 192.168.65.134입니다.
vim /etc/hosts
# 添加 ip 与自定义域名映射,域名可以随便设置
192.168.65.134 harbor.kubemanagement.com
새 인증서 폴더를 만듭니다.
mkdir certs
CA 생성
# 1.
cd certs
openssl genrsa -out ca.key 4096
# 2. 注意这里域名用上面设置的,比如 harbor.kubemanagement.com
openssl req -x509 -new -nodes -sha512 -days 3650 \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.kubemanagement.com" \
-key ca.key \
-out ca.crt
# 3.
openssl genrsa -out harbor.kubemanagement.com.key 4096
# 4.
openssl req -sha512 -new \
-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.kubemanagement.com.com" \
-key harbor.kubemanagement.com.key \
-out harbor.kubemanagement.com.csr
# 5.
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=harbor.kubemanagement.com
DNS.2=yourdomain
DNS.3=hostname
EOF
# 6.
openssl x509 -req -sha512 -days 3650 \
-extfile v3.ext \
-CA ca.crt -CAkey ca.key -CAcreateserial \
-in harbor.kubemanagement.com.csr \
-out harbor.kubemanagement.com.crt
# 7.
mkdir -p /data/cert/
cp harbor.kubemanagement.com.crt /data/cert/
cp harbor.kubemanagement.com.key /data/cert/
# 8.
openssl x509 -inform PEM -in harbor.kubemanagement.com.crt -out harbor.kubemanagement.com.cert
# 9.
mkdir -p /etc/docker/certs.d/harbor.kubemanagement.com/
cp harbor.kubemanagement.com.cert /etc/docker/certs.d/harbor.kubemanagement.com/
cp harbor.kubemanagement.com.key /etc/docker/certs.d/harbor.kubemanagement.com/
cp ca.crt /etc/docker/certs.d/harbor.kubemanagement.com/
# 10.
systemctl restart docker
하버 구성 및 설치
# 进入解压目录,如果目录里有 harbor.yml 就直接修改,我这里只有 harbor.yml.tmpl
cd harbor
cp harbor.yml.tmpl harbor.yml
vim harbor.yml
사용자 지정 도메인 이름, CA가 저장된 위치 및 기본 로그인 암호인 다음 사항에 주로 주의하십시오.
수정 후 직접 설치 스크립트를 실행하십시오.
./install.sh
성공적인 설치 후 프롬프트:
docker-compose를 사용하여 실행 상태를 확인합니다.
docker-compose ps
문제가 없다면 모두 건강한 상태입니다.
시험
브라우저에 도메인 이름 또는 ip를 입력하면 다음과 같은 인터페이스가 있으며 기본 사용자 이름은 admin이고 암호는 harbour.yml 파일에 설정되어 있습니다. 시스템에 로그인한
후 새 개인 프로젝트 kubemanagment를 만듭니다.
이 시점에서 , 이미지 업로드를 테스트할 수 있습니다. 먼저 도커에 로그인해야 합니다.
docker login harbor.kubemanagement.com
Harbor의 요구 사항에 따라 이미지를 표시하고 푸시합니다.
여기서는 단순히 busybox 이미지를 예로 들어 보겠습니다.
# 1. 拉取 busybox 镜像
docker pull busybox
# 2. tag
docker tag busy:latest harbor.kubemanagement.com/kubemanagment/busybox:latest
# 3. push
docker push harbor.kubemanagement.com/kubemanagment/busybox:latest
이 시점에서 웹 페이지에서 kubemanagment/busybox가 이미 존재하는 것을 볼 수 있습니다.
여기에서 Harbour의 기본 설치 및 구성이 완료되었습니다.
위의 kubemanagment/mysql의 경우 k8s 클러스터 환경에서 하버 푸시를 테스트했으며 구체적인 프로세스는 다음과 같습니다.
기본 k8s 클러스터 환경은 마이크로서비스 및 클라우드 네이티브입니다. 단순성을 위해 K8S 클러스터를 구축하기 위해 여기에는 하나의 마스터 노드와 하나의 작업자 노드만 포함됩니다. 마스터 노드 ip 정보는 다음과 같습니다.
ip: 192.168.65.130
마스터의 호스트에 매핑을 추가합니다.
vim /etc/hosts
192.168.65.134 harbor.kubemanagement.com
마스터 노드에 이미지를 푸시하려면 docker login harbor.kubemanagement.com
직접 로그인할 수 없으며 오류가 보고됩니다.
하버가 있는 머신의 CA 정보를 마스터 노드에 복사해야 합니다.
# 在 master主机上
cd /etc/docker/
# 192.168.65.134 为 harbor 所在主机
scp -r [email protected]:/etc/docker/certs.d .
그런 다음 도커를 다시 시작합니다.
systemctl restart docker
그 다음에
# 这里的 mysql:8.0.23 是我 master 节点中以前就 pull 好的镜像
docker login harbor.kubemanagement.com
docker tag mysql:8.0.23 harbor.kubemanagement.com/kubemanagment/mysql:8.0.23
docker push harbor.kubemanagement.com/kubemanagment/mysql:8.0.23